[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 22/26] hw/usb/usb-hcd: Use OHCI type definitions
On 7/4/20 7:13 PM, BALATON Zoltan wrote: > On Sat, 4 Jul 2020, Philippe Mathieu-Daudé wrote: >> Various machine/board/soc models create OHCI device instances >> with the generic QDEV API, and don't need to access USB internals. >> >> Simplify header inclusions by moving the QOM type names into a >> simple header, with no need to include other "hw/usb" headers. >> >> Suggested-by: BALATON Zoltan <balaton@xxxxxxxxxx> >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@xxxxxxxxx> >> --- >> hw/usb/hcd-ohci.h | 2 +- >> include/hw/usb/usb-hcd.h | 16 ++++++++++++++++ > > I wonder if we need a new header for this or these could just go in the > new public hw/usb/usb.h as machines creating a HCD may also add devices > (like keyboard/mouse) so probably will need both headers anyway so > splitting it up may not worth it but I don't really mind, either way. Hmm the rationale for this choice is: SoC might only instanciate USB HCI via sysbus/qdev API, without any use of "hw/usb/usb.h". This is the machine / board that instanciate USB devices and plug them to the HCI on the SoC. I can reword better the description. > > For sm501 and sam460ex parts: > > Reviewed-by: BALATON Zoltan <balaton@xxxxxxxxxx> > > Regards, > BALATON Zoltan > >> hw/arm/allwinner-a10.c | 2 +- >> hw/arm/allwinner-h3.c | 9 +++++---- >> hw/arm/pxa2xx.c | 3 ++- >> hw/arm/realview.c | 3 ++- >> hw/arm/versatilepb.c | 3 ++- >> hw/display/sm501.c | 3 ++- >> hw/ppc/mac_newworld.c | 3 ++- >> hw/ppc/mac_oldworld.c | 3 ++- >> hw/ppc/sam460ex.c | 3 ++- >> hw/ppc/spapr.c | 3 ++- >> hw/usb/hcd-ohci-pci.c | 2 +- >> 13 files changed, 40 insertions(+), 15 deletions(-) >> create mode 100644 include/hw/usb/usb-hcd.h >> >> diff --git a/hw/usb/hcd-ohci.h b/hw/usb/hcd-ohci.h >> index 771927ea17..6949cf0dab 100644 >> --- a/hw/usb/hcd-ohci.h >> +++ b/hw/usb/hcd-ohci.h >> @@ -21,6 +21,7 @@ >> #ifndef HCD_OHCI_H >> #define HCD_OHCI_H >> >> +#include "hw/usb/usb-hcd.h" >> #include "sysemu/dma.h" >> #include "usb-internal.h" >> >> @@ -91,7 +92,6 @@ typedef struct OHCIState { >> void (*ohci_die)(struct OHCIState *ohci); >> } OHCIState; >> >> -#define TYPE_SYSBUS_OHCI "sysbus-ohci" >> #define SYSBUS_OHCI(obj) OBJECT_CHECK(OHCISysBusState, (obj), >> TYPE_SYSBUS_OHCI) >> >> typedef struct { >> diff --git a/include/hw/usb/usb-hcd.h b/include/hw/usb/usb-hcd.h >> new file mode 100644 >> index 0000000000..21fdfaf22d >> --- /dev/null >> +++ b/include/hw/usb/usb-hcd.h >> @@ -0,0 +1,16 @@ >> +/* >> + * QEMU USB HCD types >> + * >> + * Copyright (c) 2020 Philippe Mathieu-Daudé <f4bug@xxxxxxxxx> >> + * >> + * SPDX-License-Identifier: GPL-2.0-or-later >> + */ >> + >> +#ifndef HW_USB_HCD_TYPES_H >> +#define HW_USB_HCD_TYPES_H >> + >> +/* OHCI */ >> +#define TYPE_SYSBUS_OHCI "sysbus-ohci" >> +#define TYPE_PCI_OHCI "pci-ohci" >> + >> +#endif >> diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c >> index 52e0d83760..53c24ff602 100644 >> --- a/hw/arm/allwinner-a10.c >> +++ b/hw/arm/allwinner-a10.c >> @@ -25,7 +25,7 @@ >> #include "hw/misc/unimp.h" >> #include "sysemu/sysemu.h" >> #include "hw/boards.h" >> -#include "hw/usb/hcd-ohci.h" >> +#include "hw/usb/usb-hcd.h" >> >> #define AW_A10_MMC0_BASE 0x01c0f000 >> #define AW_A10_PIC_REG_BASE 0x01c20400 >> diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c >> index 8e09468e86..d1d90ffa79 100644 >> --- a/hw/arm/allwinner-h3.c >> +++ b/hw/arm/allwinner-h3.c >> @@ -28,6 +28,7 @@ >> #include "hw/sysbus.h" >> #include "hw/char/serial.h" >> #include "hw/misc/unimp.h" >> +#include "hw/usb/usb-hcd.h" >> #include "hw/usb/hcd-ehci.h" >> #include "hw/loader.h" >> #include "sysemu/sysemu.h" >> @@ -381,16 +382,16 @@ static void allwinner_h3_realize(DeviceState >> *dev, Error **errp) >> qdev_get_gpio_in(DEVICE(&s->gic), >> AW_H3_GIC_SPI_EHCI3)); >> >> - sysbus_create_simple("sysbus-ohci", s->memmap[AW_H3_OHCI0], >> + sysbus_create_simple(TYPE_SYSBUS_OHCI, s->memmap[AW_H3_OHCI0], >> qdev_get_gpio_in(DEVICE(&s->gic), >> AW_H3_GIC_SPI_OHCI0)); >> - sysbus_create_simple("sysbus-ohci", s->memmap[AW_H3_OHCI1], >> + sysbus_create_simple(TYPE_SYSBUS_OHCI, s->memmap[AW_H3_OHCI1], >> qdev_get_gpio_in(DEVICE(&s->gic), >> AW_H3_GIC_SPI_OHCI1)); >> - sysbus_create_simple("sysbus-ohci", s->memmap[AW_H3_OHCI2], >> + sysbus_create_simple(TYPE_SYSBUS_OHCI, s->memmap[AW_H3_OHCI2], >> qdev_get_gpio_in(DEVICE(&s->gic), >> AW_H3_GIC_SPI_OHCI2)); >> - sysbus_create_simple("sysbus-ohci", s->memmap[AW_H3_OHCI3], >> + sysbus_create_simple(TYPE_SYSBUS_OHCI, s->memmap[AW_H3_OHCI3], >> qdev_get_gpio_in(DEVICE(&s->gic), >> AW_H3_GIC_SPI_OHCI3)); >> >> diff --git a/hw/arm/pxa2xx.c b/hw/arm/pxa2xx.c >> index f104a33463..27196170f5 100644 >> --- a/hw/arm/pxa2xx.c >> +++ b/hw/arm/pxa2xx.c >> @@ -18,6 +18,7 @@ >> #include "hw/arm/pxa.h" >> #include "sysemu/sysemu.h" >> #include "hw/char/serial.h" >> +#include "hw/usb/usb-hcd.h" >> #include "hw/i2c/i2c.h" >> #include "hw/irq.h" >> #include "hw/qdev-properties.h" >> @@ -2196,7 +2197,7 @@ PXA2xxState *pxa270_init(MemoryRegion >> *address_space, >> s->ssp[i] = (SSIBus *)qdev_get_child_bus(dev, "ssi"); >> } >> >> - sysbus_create_simple("sysbus-ohci", 0x4c000000, >> + sysbus_create_simple(TYPE_SYSBUS_OHCI, 0x4c000000, >> qdev_get_gpio_in(s->pic, PXA2XX_PIC_USBH1)); >> >> s->pcmcia[0] = pxa2xx_pcmcia_init(address_space, 0x20000000); >> diff --git a/hw/arm/realview.c b/hw/arm/realview.c >> index b6c0a1adb9..0aa34bd4c2 100644 >> --- a/hw/arm/realview.c >> +++ b/hw/arm/realview.c >> @@ -16,6 +16,7 @@ >> #include "hw/net/lan9118.h" >> #include "hw/net/smc91c111.h" >> #include "hw/pci/pci.h" >> +#include "hw/usb/usb-hcd.h" >> #include "net/net.h" >> #include "sysemu/sysemu.h" >> #include "hw/boards.h" >> @@ -256,7 +257,7 @@ static void realview_init(MachineState *machine, >> sysbus_connect_irq(busdev, 3, pic[51]); >> pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci"); >> if (machine_usb(machine)) { >> - pci_create_simple(pci_bus, -1, "pci-ohci"); >> + pci_create_simple(pci_bus, -1, TYPE_PCI_OHCI); >> } >> n = drive_get_max_bus(IF_SCSI); >> while (n >= 0) { >> diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c >> index e596b8170f..3e6224dc96 100644 >> --- a/hw/arm/versatilepb.c >> +++ b/hw/arm/versatilepb.c >> @@ -17,6 +17,7 @@ >> #include "net/net.h" >> #include "sysemu/sysemu.h" >> #include "hw/pci/pci.h" >> +#include "hw/usb/usb-hcd.h" >> #include "hw/i2c/i2c.h" >> #include "hw/i2c/arm_sbcon_i2c.h" >> #include "hw/irq.h" >> @@ -273,7 +274,7 @@ static void versatile_init(MachineState *machine, >> int board_id) >> } >> } >> if (machine_usb(machine)) { >> - pci_create_simple(pci_bus, -1, "pci-ohci"); >> + pci_create_simple(pci_bus, -1, TYPE_PCI_OHCI); >> } >> n = drive_get_max_bus(IF_SCSI); >> while (n >= 0) { >> diff --git a/hw/display/sm501.c b/hw/display/sm501.c >> index 9cccc68c35..5f076c841f 100644 >> --- a/hw/display/sm501.c >> +++ b/hw/display/sm501.c >> @@ -33,6 +33,7 @@ >> #include "hw/sysbus.h" >> #include "migration/vmstate.h" >> #include "hw/pci/pci.h" >> +#include "hw/usb/usb-hcd.h" >> #include "hw/qdev-properties.h" >> #include "hw/i2c/i2c.h" >> #include "hw/display/i2c-ddc.h" >> @@ -1961,7 +1962,7 @@ static void sm501_realize_sysbus(DeviceState >> *dev, Error **errp) >> sysbus_init_mmio(sbd, &s->state.mmio_region); >> >> /* bridge to usb host emulation module */ >> - usb_dev = qdev_new("sysbus-ohci"); >> + usb_dev = qdev_new(TYPE_SYSBUS_OHCI); >> qdev_prop_set_uint32(usb_dev, "num-ports", 2); >> qdev_prop_set_uint64(usb_dev, "dma-offset", s->base); >> sysbus_realize_and_unref(SYS_BUS_DEVICE(usb_dev), &error_fatal); >> diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c >> index 7bf69f4a1f..3c32c1831b 100644 >> --- a/hw/ppc/mac_newworld.c >> +++ b/hw/ppc/mac_newworld.c >> @@ -55,6 +55,7 @@ >> #include "hw/input/adb.h" >> #include "hw/ppc/mac_dbdma.h" >> #include "hw/pci/pci.h" >> +#include "hw/usb/usb-hcd.h" >> #include "net/net.h" >> #include "sysemu/sysemu.h" >> #include "hw/boards.h" >> @@ -411,7 +412,7 @@ static void ppc_core99_init(MachineState *machine) >> } >> >> if (machine->usb) { >> - pci_create_simple(pci_bus, -1, "pci-ohci"); >> + pci_create_simple(pci_bus, -1, TYPE_PCI_OHCI); >> >> /* U3 needs to use USB for input because Linux doesn't support >> via-cuda >> on PPC64 */ >> diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c >> index f8c204ead7..a429a3e1df 100644 >> --- a/hw/ppc/mac_oldworld.c >> +++ b/hw/ppc/mac_oldworld.c >> @@ -37,6 +37,7 @@ >> #include "hw/isa/isa.h" >> #include "hw/pci/pci.h" >> #include "hw/pci/pci_host.h" >> +#include "hw/usb/usb-hcd.h" >> #include "hw/boards.h" >> #include "hw/nvram/fw_cfg.h" >> #include "hw/char/escc.h" >> @@ -301,7 +302,7 @@ static void ppc_heathrow_init(MachineState *machine) >> qdev_realize_and_unref(dev, adb_bus, &error_fatal); >> >> if (machine_usb(machine)) { >> - pci_create_simple(pci_bus, -1, "pci-ohci"); >> + pci_create_simple(pci_bus, -1, TYPE_PCI_OHCI); >> } >> >> if (graphic_depth != 15 && graphic_depth != 32 && graphic_depth != 8) >> diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c >> index 781b45e14b..ac60d17a86 100644 >> --- a/hw/ppc/sam460ex.c >> +++ b/hw/ppc/sam460ex.c >> @@ -36,6 +36,7 @@ >> #include "hw/i2c/ppc4xx_i2c.h" >> #include "hw/i2c/smbus_eeprom.h" >> #include "hw/usb/usb.h" >> +#include "hw/usb/usb-hcd.h" >> #include "hw/usb/hcd-ehci.h" >> #include "hw/ppc/fdt.h" >> #include "hw/qdev-properties.h" >> @@ -372,7 +373,7 @@ static void sam460ex_init(MachineState *machine) >> >> /* USB */ >> sysbus_create_simple(TYPE_PPC4xx_EHCI, 0x4bffd0400, uic[2][29]); >> - dev = qdev_new("sysbus-ohci"); >> + dev = qdev_new(TYPE_SYSBUS_OHCI); >> qdev_prop_set_string(dev, "masterbus", "usb-bus.0"); >> qdev_prop_set_uint32(dev, "num-ports", 6); >> sbdev = SYS_BUS_DEVICE(dev); >> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c >> index 0c0409077f..db1706a66c 100644 >> --- a/hw/ppc/spapr.c >> +++ b/hw/ppc/spapr.c >> @@ -71,6 +71,7 @@ >> #include "exec/address-spaces.h" >> #include "exec/ram_addr.h" >> #include "hw/usb/usb.h" >> +#include "hw/usb/usb-hcd.h" >> #include "qemu/config-file.h" >> #include "qemu/error-report.h" >> #include "trace.h" >> @@ -2958,7 +2959,7 @@ static void spapr_machine_init(MachineState >> *machine) >> >> if (machine->usb) { >> if (smc->use_ohci_by_default) { >> - pci_create_simple(phb->bus, -1, "pci-ohci"); >> + pci_create_simple(phb->bus, -1, TYPE_PCI_OHCI); >> } else { >> pci_create_simple(phb->bus, -1, "nec-usb-xhci"); >> } >> diff --git a/hw/usb/hcd-ohci-pci.c b/hw/usb/hcd-ohci-pci.c >> index cb6bc55f59..14df83ec2e 100644 >> --- a/hw/usb/hcd-ohci-pci.c >> +++ b/hw/usb/hcd-ohci-pci.c >> @@ -29,8 +29,8 @@ >> #include "trace.h" >> #include "hcd-ohci.h" >> #include "usb-internal.h" >> +#include "hw/usb/usb-hcd.h" >> >> -#define TYPE_PCI_OHCI "pci-ohci" >> #define PCI_OHCI(obj) OBJECT_CHECK(OHCIPCIState, (obj), TYPE_PCI_OHCI) >> >> typedef struct { >>
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |