mb/google/octopus/var/phaser: Deprecate board id 0

This change gets rid of bid0_override_table as part of clean up effort
to deprecate bid0. Additionally, it updates the touchscreen enable
GPIO in overridetree and gets rid of code in variant.c to update enable
gpio at runtime.

BUG=b:119885949

Change-Id: I527973747e7d81ec47997da57eeb15f38d3ac2fd
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/29787
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
This commit is contained in:
Furquan Shaikh 2018-11-21 14:44:13 -08:00
parent e3c2391fca
commit e143243c1c
3 changed files with 12 additions and 79 deletions

View File

@ -68,28 +68,11 @@ static const struct pad_config sku1_default_override_table[] = {
PAD_NC(GPIO_214, DN_20K), PAD_NC(GPIO_214, DN_20K),
}; };
static const struct pad_config bid0_override_table[] = {
PAD_NC(GPIO_52, UP_20K),
PAD_NC(GPIO_53, UP_20K),
PAD_NC(GPIO_67, UP_20K),
PAD_NC(GPIO_117, UP_20K),
PAD_NC(GPIO_143, UP_20K),
PAD_NC(GPIO_161, DN_20K),
PAD_NC(GPIO_214, DN_20K),
};
const struct pad_config *variant_override_gpio_table(size_t *num) const struct pad_config *variant_override_gpio_table(size_t *num)
{ {
const struct pad_config *c; const struct pad_config *c;
uint32_t sku_id = SKU_UNKNOWN; uint32_t sku_id = SKU_UNKNOWN;
switch (board_id()) {
case 0:
case UNDEFINED_STRAPPING_ID:
c = bid0_override_table;
*num = ARRAY_SIZE(bid0_override_table);
break;
default:
google_chromeec_cbi_get_sku_id(&sku_id); google_chromeec_cbi_get_sku_id(&sku_id);
if (sku_id == 1) { if (sku_id == 1) {
c = sku1_default_override_table; c = sku1_default_override_table;
@ -98,6 +81,6 @@ const struct pad_config *variant_override_gpio_table(size_t *num)
c = default_override_table; c = default_override_table;
*num = ARRAY_SIZE(default_override_table); *num = ARRAY_SIZE(default_override_table);
} }
}
return c; return c;
} }

View File

@ -99,7 +99,7 @@ chip soc/intel/apollolake
register "probed" = "1" register "probed" = "1"
register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_105)" register "reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_105)"
register "reset_delay_ms" = "20" register "reset_delay_ms" = "20"
register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_213)" register "enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_146)"
register "enable_delay_ms" = "1" register "enable_delay_ms" = "1"
register "has_power_resource" = "1" register "has_power_resource" = "1"
device i2c 10 on end device i2c 10 on end
@ -110,7 +110,7 @@ chip soc/intel/apollolake
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPIO_212_IRQ)" register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPIO_212_IRQ)"
register "generic.probed" = "1" register "generic.probed" = "1"
register "generic.reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_105)" register "generic.reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_105)"
register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_213)" register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_146)"
register "generic.reset_delay_ms" = "45" register "generic.reset_delay_ms" = "45"
register "generic.has_power_resource" = "1" register "generic.has_power_resource" = "1"
register "generic.disable_gpio_export_in_crs" = "1" register "generic.disable_gpio_export_in_crs" = "1"

View File

@ -13,75 +13,25 @@
* GNU General Public License for more details. * GNU General Public License for more details.
*/ */
#include <arch/acpi_device.h>
#include <baseboard/variants.h> #include <baseboard/variants.h>
#include <boardid.h>
#include <device/device.h>
#include <drivers/i2c/generic/chip.h>
#include <drivers/i2c/hid/chip.h>
#include <soc/gpio.h>
#include <soc/pci_devs.h> #include <soc/pci_devs.h>
#include <string.h> #include <string.h>
#include <ec/google/chromeec/ec.h> #include <ec/google/chromeec/ec.h>
#define SKU_UNKNOWN 0xFFFFFFFF #define SKU_UNKNOWN 0xFFFFFFFF
extern struct chip_operations drivers_i2c_generic_ops;
extern struct chip_operations drivers_i2c_hid_ops;
void variant_update_devtree(struct device *dev) void variant_update_devtree(struct device *dev)
{ {
uint32_t bid;
uint32_t sku_id = SKU_UNKNOWN; uint32_t sku_id = SKU_UNKNOWN;
struct device *touchscreen_i2c_host; struct device *touchscreen_i2c_host;
struct device *child;
const struct bus *children_bus;
static const struct acpi_gpio new_enable_gpio =
ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_146);
bid = board_id();
/* Nothing to update. */
if (bid == UNDEFINED_STRAPPING_ID || bid < 1)
return;
touchscreen_i2c_host = dev_find_slot(0, PCH_DEVFN_I2C7); touchscreen_i2c_host = dev_find_slot(0, PCH_DEVFN_I2C7);
if (touchscreen_i2c_host == NULL) if (touchscreen_i2c_host == NULL)
return; return;
/* According to the sku id decide whether update touch /* SKU ID 1 does not have a touchscreen device, hence disable it. */
* screen device information:
* 1. sku id is 1 then dev->enabled = 0.
*/
google_chromeec_cbi_get_sku_id(&sku_id); google_chromeec_cbi_get_sku_id(&sku_id);
if (sku_id == 1) { if (sku_id == 1)
touchscreen_i2c_host->enabled = 0; touchscreen_i2c_host->enabled = 0;
return;
}
children_bus = touchscreen_i2c_host->link_list;
child = NULL;
/* Find all children on bus to update touchscreen enable gpio. */
while ((child = dev_bus_each_child(children_bus, child)) != NULL) {
struct drivers_i2c_generic_config *cfg;
/* No configration to change. */
if (child->chip_info == NULL)
continue;
if (child->chip_ops == &drivers_i2c_generic_ops)
cfg = child->chip_info;
else if (child->chip_ops == &drivers_i2c_hid_ops) {
struct drivers_i2c_hid_config *hid_cfg;
hid_cfg = child->chip_info;
cfg = &hid_cfg->generic;
} else
continue;
/* Update the enable gpio. */
memcpy(&cfg->enable_gpio, &new_enable_gpio,
sizeof(new_enable_gpio));
}
} }