Message ID | 20210126193237.1534208-4-wuhaotsh@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/i2c: Add NPCM7XX SMBus Device | expand |
On Tue, 26 Jan 2021 at 19:32, Hao Wu <wuhaotsh@google.com> wrote: > > Add an I2C device tree for NPCM750 evaluation board. > > Reviewed-by: Doug Evans<dje@google.com> > Reviewed-by: Tyrong Ting<kfting@nuvoton.com> > Signed-off-by: Hao Wu <wuhaotsh@google.com> Slightly confusing commit message, because "device tree" usually means the data structure describing hardware for Linux (https://www.kernel.org/doc/html/latest/devicetree/usage-model.html). Something like "Create the I2C tmp105 temperature sensor devices" would be clearer, I think. > --- > hw/arm/npcm7xx_boards.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c > index 3fdd5cab01..2d82f48848 100644 > --- a/hw/arm/npcm7xx_boards.c > +++ b/hw/arm/npcm7xx_boards.c > @@ -98,6 +98,20 @@ static NPCM7xxState *npcm7xx_create_soc(MachineState *machine, > return NPCM7XX(obj); > } > > +static I2CBus *npcm7xx_i2c_get_bus(NPCM7xxState *soc, uint32_t num) > +{ > + g_assert(num < ARRAY_SIZE(soc->smbus)); > + return I2C_BUS(qdev_get_child_bus(DEVICE(&soc->smbus[num]), "i2c-bus")); > +} > + > +static void npcm750_evb_i2c_init(NPCM7xxState *soc) > +{ > + i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 0), "tmp105", 0x48); > + i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 1), "tmp105", 0x48); > + i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 2), "tmp105", 0x48); > + i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 6), "tmp105", 0x48); I assume these correspond to temperature sensors on the real board. Might be worth having a comment saying what their function is (I'm guessing they're measuring temperature of different bits of the board somehow?) > +} > + > static void npcm750_evb_init(MachineState *machine) > { > NPCM7xxState *soc; > @@ -108,6 +122,7 @@ static void npcm750_evb_init(MachineState *machine) > > npcm7xx_load_bootrom(machine, soc); > npcm7xx_connect_flash(&soc->fiu[0], 0, "w25q256", drive_get(IF_MTD, 0, 0)); > + npcm750_evb_i2c_init(soc); > npcm7xx_load_kernel(machine, soc); > } > > -- > 2.30.0.365.g02bc693789-goog thanks -- PMM
diff --git a/hw/arm/npcm7xx_boards.c b/hw/arm/npcm7xx_boards.c index 3fdd5cab01..2d82f48848 100644 --- a/hw/arm/npcm7xx_boards.c +++ b/hw/arm/npcm7xx_boards.c @@ -98,6 +98,20 @@ static NPCM7xxState *npcm7xx_create_soc(MachineState *machine, return NPCM7XX(obj); } +static I2CBus *npcm7xx_i2c_get_bus(NPCM7xxState *soc, uint32_t num) +{ + g_assert(num < ARRAY_SIZE(soc->smbus)); + return I2C_BUS(qdev_get_child_bus(DEVICE(&soc->smbus[num]), "i2c-bus")); +} + +static void npcm750_evb_i2c_init(NPCM7xxState *soc) +{ + i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 0), "tmp105", 0x48); + i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 1), "tmp105", 0x48); + i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 2), "tmp105", 0x48); + i2c_slave_create_simple(npcm7xx_i2c_get_bus(soc, 6), "tmp105", 0x48); +} + static void npcm750_evb_init(MachineState *machine) { NPCM7xxState *soc; @@ -108,6 +122,7 @@ static void npcm750_evb_init(MachineState *machine) npcm7xx_load_bootrom(machine, soc); npcm7xx_connect_flash(&soc->fiu[0], 0, "w25q256", drive_get(IF_MTD, 0, 0)); + npcm750_evb_i2c_init(soc); npcm7xx_load_kernel(machine, soc); }