Message ID | 20200616063157.16389-6-f4bug@amsat.org |
---|---|
State | New |
Headers | show |
Series | mps2: Add few more peripherals | expand |
On Tue, 16 Jun 2020 at 07:32, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > > There are 4 different I2C peripherals on the FPGA APB. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > hw/arm/mps2.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c > index 4a49bfa9b9..6224d7a63c 100644 > --- a/hw/arm/mps2.c > +++ b/hw/arm/mps2.c > @@ -321,6 +321,7 @@ static void mps2_common_init(MachineState *machine) > create_unimplemented_device("cmsdk-ahb-gpio", gpiobase[i], 0x1000); > } > > + /* FPGA APB */ > sysbus_init_child_obj(OBJECT(mms), "scc", &mms->scc, > sizeof(mms->scc), TYPE_MPS2_SCC); > sccdev = DEVICE(&mms->scc); > @@ -330,6 +331,12 @@ static void mps2_common_init(MachineState *machine) > object_property_set_bool(OBJECT(&mms->scc), true, "realized", > &error_fatal); > sysbus_mmio_map(SYS_BUS_DEVICE(sccdev), 0, 0x4002f000); > + for (i = 0; i < 4; i++) { > + static const hwaddr i2cbase[] = {0x40022000, 0x40023000, > + 0x40029000, 0x4002a000}; > + > + sysbus_create_simple("versatile_i2c", i2cbase[i], NULL); > + } Is this device really the same as the I2C controller h/w on the versatile board ? thanks -- PMM
On 6/16/20 12:21 PM, Peter Maydell wrote: > On Tue, 16 Jun 2020 at 07:32, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: >> >> There are 4 different I2C peripherals on the FPGA APB. >> >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >> --- >> hw/arm/mps2.c | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >> diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c >> index 4a49bfa9b9..6224d7a63c 100644 >> --- a/hw/arm/mps2.c >> +++ b/hw/arm/mps2.c >> @@ -321,6 +321,7 @@ static void mps2_common_init(MachineState *machine) >> create_unimplemented_device("cmsdk-ahb-gpio", gpiobase[i], 0x1000); >> } >> >> + /* FPGA APB */ >> sysbus_init_child_obj(OBJECT(mms), "scc", &mms->scc, >> sizeof(mms->scc), TYPE_MPS2_SCC); >> sccdev = DEVICE(&mms->scc); >> @@ -330,6 +331,12 @@ static void mps2_common_init(MachineState *machine) >> object_property_set_bool(OBJECT(&mms->scc), true, "realized", >> &error_fatal); >> sysbus_mmio_map(SYS_BUS_DEVICE(sccdev), 0, 0x4002f000); >> + for (i = 0; i < 4; i++) { >> + static const hwaddr i2cbase[] = {0x40022000, 0x40023000, >> + 0x40029000, 0x4002a000}; >> + >> + sysbus_create_simple("versatile_i2c", i2cbase[i], NULL); >> + } > > Is this device really the same as the I2C controller h/w > on the versatile board ? It seems the opposite way around, the I2C controller modeled as 'versatile_i2c' is the real 'ARM SBCon two-wire serial bus interface' bitbanging I2C. IIUC the name 'ARM SBCon two-wire serial bus interface' became official /after/ the versatile was released, so 'versatile-i2c' is the popular name. Yes, the MPS2(+) implement the ARM SBCon two-wire serial bus interface. I'll see to add a TYPE_SBCON_I2C alias, it might be easier. > > thanks > -- PMM >
diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c index 4a49bfa9b9..6224d7a63c 100644 --- a/hw/arm/mps2.c +++ b/hw/arm/mps2.c @@ -321,6 +321,7 @@ static void mps2_common_init(MachineState *machine) create_unimplemented_device("cmsdk-ahb-gpio", gpiobase[i], 0x1000); } + /* FPGA APB */ sysbus_init_child_obj(OBJECT(mms), "scc", &mms->scc, sizeof(mms->scc), TYPE_MPS2_SCC); sccdev = DEVICE(&mms->scc); @@ -330,6 +331,12 @@ static void mps2_common_init(MachineState *machine) object_property_set_bool(OBJECT(&mms->scc), true, "realized", &error_fatal); sysbus_mmio_map(SYS_BUS_DEVICE(sccdev), 0, 0x4002f000); + for (i = 0; i < 4; i++) { + static const hwaddr i2cbase[] = {0x40022000, 0x40023000, + 0x40029000, 0x4002a000}; + + sysbus_create_simple("versatile_i2c", i2cbase[i], NULL); + } /* In hardware this is a LAN9220; the LAN9118 is software compatible * except that it doesn't support the checksum-offload feature.
There are 4 different I2C peripherals on the FPGA APB. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> --- hw/arm/mps2.c | 7 +++++++ 1 file changed, 7 insertions(+)