soc/amd/stoneyridge: Add API to initialize non-early_init i2c buses
Provide a method for initializing i2c buses that are not marked as early_init in the device tree. These i2c buses can be enabled in a mainboard's ramstage, for example. BUG=b:69407112 TEST=Boot depthcharge w/ CLI enabled on grunt. devbeep => plays beep BRANCH=None Change-Id: I6e49b0de9116138ba102377d283e22d7b50d7dca Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> Reviewed-on: https://review.coreboot.org/23553 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
parent
da6f4ae0b9
commit
e0ea98258a
|
@ -101,7 +101,7 @@ int dw_i2c_soc_dev_to_bus(struct device *dev)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void i2c_soc_early_init(void)
|
static void dw_i2c_soc_init(bool is_early_init)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
const struct soc_amd_stoneyridge_config *config;
|
const struct soc_amd_stoneyridge_config *config;
|
||||||
|
@ -114,7 +114,7 @@ void i2c_soc_early_init(void)
|
||||||
for (i = 0; i < ARRAY_SIZE(config->i2c); i++) {
|
for (i = 0; i < ARRAY_SIZE(config->i2c); i++) {
|
||||||
const struct dw_i2c_bus_config *cfg = &config->i2c[i];
|
const struct dw_i2c_bus_config *cfg = &config->i2c[i];
|
||||||
|
|
||||||
if (!cfg->early_init)
|
if (cfg->early_init != is_early_init)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (dw_i2c_init(i, cfg))
|
if (dw_i2c_init(i, cfg))
|
||||||
|
@ -122,6 +122,16 @@ void i2c_soc_early_init(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void i2c_soc_early_init(void)
|
||||||
|
{
|
||||||
|
dw_i2c_soc_init(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void i2c_soc_init(void)
|
||||||
|
{
|
||||||
|
dw_i2c_soc_init(false);
|
||||||
|
}
|
||||||
|
|
||||||
struct device_operations stoneyridge_i2c_mmio_ops = {
|
struct device_operations stoneyridge_i2c_mmio_ops = {
|
||||||
/* TODO(teravest): Move I2C resource info here. */
|
/* TODO(teravest): Move I2C resource info here. */
|
||||||
.read_resources = DEVICE_NOOP,
|
.read_resources = DEVICE_NOOP,
|
||||||
|
|
|
@ -392,4 +392,7 @@ int mainboard_get_ehci_oc_map(uint16_t *usb_oc_map);
|
||||||
/* Initialize all the i2c buses that are marked with early init. */
|
/* Initialize all the i2c buses that are marked with early init. */
|
||||||
void i2c_soc_early_init(void);
|
void i2c_soc_early_init(void);
|
||||||
|
|
||||||
|
/* Initialize all the i2c buses that are not marked with early init. */
|
||||||
|
void i2c_soc_init(void);
|
||||||
|
|
||||||
#endif /* __STONEYRIDGE_H__ */
|
#endif /* __STONEYRIDGE_H__ */
|
||||||
|
|
Loading…
Reference in New Issue