aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2016-09-02 17:50:22 -0500
committerAaron Durbin <adurbin@chromium.org>2016-09-06 20:16:13 +0200
commit475d2cb19e5e822c10239167864faf647a5d93c5 (patch)
tree01883951ae210ea011ad7f02465012c1ddd6fc58
parentd1e365ac3824bee03feab9a93d15abc224d3bc57 (diff)
mainboard/google/reef: provide cros_gpio variant API
Add support for Chrome OS gpio ACPI table information by providing weak implementation from the baseboard. BUG=chrome-os-partner:56677 Change-Id: I517764b78f47fb7b3637482ff9efc053cdd1ac69 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/16422 Tested-by: build bot (Jenkins) Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
-rw-r--r--src/mainboard/google/reef/chromeos.c12
-rw-r--r--src/mainboard/google/reef/variants/baseboard/gpio.c11
-rw-r--r--src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h4
3 files changed, 21 insertions, 6 deletions
diff --git a/src/mainboard/google/reef/chromeos.c b/src/mainboard/google/reef/chromeos.c
index 7d7af9e11b..58c2cd8e27 100644
--- a/src/mainboard/google/reef/chromeos.c
+++ b/src/mainboard/google/reef/chromeos.c
@@ -13,6 +13,7 @@
* GNU General Public License for more details.
*/
+#include <baseboard/variants.h>
#include <boot/coreboot_tables.h>
#include <ec/google/chromeec/ec.h>
#include <gpio.h>
@@ -67,12 +68,11 @@ int get_write_protect_state(void)
return gpio_get(GPIO_PCH_WP);
}
-static const struct cros_gpio cros_gpios[] = {
- CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, GPIO_COMM_NW_NAME),
- CROS_GPIO_WP_AH(PAD_NW(GPIO_PCH_WP), GPIO_COMM_NW_NAME),
-};
-
void mainboard_chromeos_acpi_generate(void)
{
- chromeos_acpi_gpio_generate(cros_gpios, ARRAY_SIZE(cros_gpios));
+ const struct cros_gpio *gpios;
+ size_t num;
+
+ gpios = variant_cros_gpios(&num);
+ chromeos_acpi_gpio_generate(gpios, num);
}
diff --git a/src/mainboard/google/reef/variants/baseboard/gpio.c b/src/mainboard/google/reef/variants/baseboard/gpio.c
index 09a58be761..828fc34201 100644
--- a/src/mainboard/google/reef/variants/baseboard/gpio.c
+++ b/src/mainboard/google/reef/variants/baseboard/gpio.c
@@ -376,3 +376,14 @@ variant_sleep_gpio_table(size_t *num)
*num = ARRAY_SIZE(sleep_gpio_table);
return sleep_gpio_table;
}
+
+static const struct cros_gpio cros_gpios[] = {
+ CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, GPIO_COMM_NW_NAME),
+ CROS_GPIO_WP_AH(PAD_NW(GPIO_PCH_WP), GPIO_COMM_NW_NAME),
+};
+
+const struct cros_gpio * __attribute__((weak)) variant_cros_gpios(size_t *num)
+{
+ *num = ARRAY_SIZE(cros_gpios);
+ return cros_gpios;
+}
diff --git a/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h b/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h
index d1033562cc..e1883a49c2 100644
--- a/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h
+++ b/src/mainboard/google/reef/variants/baseboard/include/baseboard/variants.h
@@ -18,6 +18,7 @@
#include <soc/gpio.h>
#include <stdint.h>
+#include <vendorcode/google/chromeos/chromeos.h>
/* Return the board id for the current variant board. */
uint8_t variant_board_id(void);
@@ -28,4 +29,7 @@ const struct pad_config *variant_gpio_table(size_t *num);
const struct pad_config *variant_early_gpio_table(size_t *num);
const struct pad_config *variant_sleep_gpio_table(size_t *num);
+/* Return ChromeOS gpio table and fill in number of entries. */
+const struct cros_gpio *variant_cros_gpios(size_t *num);
+
#endif /* BASEBOARD_VARIANTS_H */