summaryrefslogtreecommitdiffstats
path: root/hw
diff options
context:
space:
mode:
Diffstat (limited to 'hw')
-rw-r--r--hw/9pfs/Kconfig4
-rw-r--r--hw/9pfs/Makefile.objs2
-rw-r--r--hw/Kconfig73
-rw-r--r--hw/Makefile.objs4
-rw-r--r--hw/acpi/Kconfig29
-rw-r--r--hw/adc/Kconfig2
-rw-r--r--hw/alpha/Kconfig12
-rw-r--r--hw/arm/Kconfig124
-rw-r--r--hw/audio/Kconfig52
-rw-r--r--hw/block/Kconfig39
-rw-r--r--hw/block/Makefile.objs3
-rw-r--r--hw/block/dataplane/Makefile.objs2
-rw-r--r--hw/bt/Kconfig2
-rw-r--r--hw/char/Kconfig42
-rw-r--r--hw/core/Kconfig11
-rw-r--r--hw/cpu/Kconfig8
-rw-r--r--hw/cris/Kconfig9
-rw-r--r--hw/display/Kconfig108
-rw-r--r--hw/display/Makefile.objs4
-rw-r--r--hw/dma/Kconfig21
-rw-r--r--hw/gpio/Kconfig9
-rw-r--r--hw/hppa/Kconfig10
-rw-r--r--hw/hyperv/Kconfig8
-rw-r--r--hw/i2c/Kconfig27
-rw-r--r--hw/i2c/Makefile.objs2
-rw-r--r--hw/i386/Kconfig99
-rw-r--r--hw/i386/Makefile.objs5
-rw-r--r--hw/ide/Kconfig54
-rw-r--r--hw/input/Kconfig33
-rw-r--r--hw/intc/Kconfig57
-rw-r--r--hw/ipack/Kconfig4
-rw-r--r--hw/ipmi/Kconfig22
-rw-r--r--hw/isa/Kconfig53
-rw-r--r--hw/lm32/Kconfig13
-rw-r--r--hw/m68k/Kconfig9
-rw-r--r--hw/mem/Kconfig11
-rw-r--r--hw/microblaze/Kconfig20
-rw-r--r--hw/mips/Kconfig21
-rw-r--r--hw/misc/Kconfig118
-rw-r--r--hw/misc/macio/Kconfig11
-rw-r--r--hw/moxie/Kconfig3
-rw-r--r--hw/net/Kconfig125
-rw-r--r--hw/nios2/Kconfig8
-rw-r--r--hw/nvram/Kconfig9
-rw-r--r--hw/openrisc/Kconfig5
-rw-r--r--hw/pci-bridge/Kconfig29
-rw-r--r--hw/pci-host/Kconfig51
-rw-r--r--hw/pci/Kconfig9
-rw-r--r--hw/pci/Makefile.objs9
-rw-r--r--hw/pcmcia/Kconfig2
-rw-r--r--hw/ppc/Kconfig121
-rw-r--r--hw/riscv/Kconfig33
-rw-r--r--hw/s390x/Kconfig11
-rw-r--r--hw/s390x/Makefile.objs4
-rw-r--r--hw/scsi/Kconfig54
-rw-r--r--hw/scsi/Makefile.objs2
-rw-r--r--hw/sd/Kconfig17
-rw-r--r--hw/sh4/Kconfig23
-rw-r--r--hw/smbios/Kconfig2
-rw-r--r--hw/sparc/Kconfig26
-rw-r--r--hw/sparc64/Kconfig19
-rw-r--r--hw/ssi/Kconfig18
-rw-r--r--hw/timer/Kconfig63
-rw-r--r--hw/tpm/Kconfig24
-rw-r--r--hw/tricore/Kconfig2
-rw-r--r--hw/unicore32/Kconfig5
-rw-r--r--hw/usb/Kconfig91
-rw-r--r--hw/usb/Makefile.objs2
-rw-r--r--hw/vfio/Kconfig36
-rw-r--r--hw/virtio/Kconfig31
-rw-r--r--hw/virtio/Makefile.objs2
-rw-r--r--hw/watchdog/Kconfig16
-rw-r--r--hw/xtensa/Kconfig8
-rw-r--r--hw/xtensa/Makefile.objs2
74 files changed, 1981 insertions, 18 deletions
diff --git a/hw/9pfs/Kconfig b/hw/9pfs/Kconfig
new file mode 100644
index 0000000000..8c5032c575
--- /dev/null
+++ b/hw/9pfs/Kconfig
@@ -0,0 +1,4 @@
+config VIRTIO_9P
+ bool
+ default y
+ depends on VIRTFS && VIRTIO
diff --git a/hw/9pfs/Makefile.objs b/hw/9pfs/Makefile.objs
index 8ac04962bd..70ded6fd8f 100644
--- a/hw/9pfs/Makefile.objs
+++ b/hw/9pfs/Makefile.objs
@@ -1,11 +1,9 @@
-ifeq ($(call lor,$(CONFIG_VIRTIO_9P),$(CONFIG_XEN)),y)
common-obj-y = 9p.o 9p-util.o
common-obj-y += 9p-local.o 9p-xattr.o
common-obj-y += 9p-xattr-user.o 9p-posix-acl.o
common-obj-y += coth.o cofs.o codir.o cofile.o
common-obj-y += coxattr.o 9p-synth.o
common-obj-y += 9p-proxy.o
-endif
common-obj-$(CONFIG_XEN) += xen-9p-backend.o
obj-$(CONFIG_VIRTIO_9P) += virtio-9p-device.o
diff --git a/hw/Kconfig b/hw/Kconfig
new file mode 100644
index 0000000000..d5ecd02070
--- /dev/null
+++ b/hw/Kconfig
@@ -0,0 +1,73 @@
+# devices Kconfig
+source 9pfs/Kconfig
+source acpi/Kconfig
+source adc/Kconfig
+source audio/Kconfig
+source block/Kconfig
+source bt/Kconfig
+source char/Kconfig
+source core/Kconfig
+source display/Kconfig
+source dma/Kconfig
+source gpio/Kconfig
+source hyperv/Kconfig
+source i2c/Kconfig
+source ide/Kconfig
+source input/Kconfig
+source intc/Kconfig
+source ipack/Kconfig
+source ipmi/Kconfig
+source isa/Kconfig
+source mem/Kconfig
+source misc/Kconfig
+source net/Kconfig
+source nvram/Kconfig
+source pci-bridge/Kconfig
+source pci-host/Kconfig
+source pcmcia/Kconfig
+source pci/Kconfig
+source scsi/Kconfig
+source sd/Kconfig
+source smbios/Kconfig
+source ssi/Kconfig
+source timer/Kconfig
+source tpm/Kconfig
+source usb/Kconfig
+source virtio/Kconfig
+source vfio/Kconfig
+source watchdog/Kconfig
+
+# arch Kconfig
+source arm/Kconfig
+source alpha/Kconfig
+source cris/Kconfig
+source hppa/Kconfig
+source i386/Kconfig
+source lm32/Kconfig
+source m68k/Kconfig
+source microblaze/Kconfig
+source mips/Kconfig
+source moxie/Kconfig
+source nios2/Kconfig
+source openrisc/Kconfig
+source ppc/Kconfig
+source riscv/Kconfig
+source s390x/Kconfig
+source sh4/Kconfig
+source sparc/Kconfig
+source sparc64/Kconfig
+source tricore/Kconfig
+source unicore32/Kconfig
+source xtensa/Kconfig
+
+# Symbols used by multiple targets
+config TEST_DEVICES
+ bool
+
+config XILINX
+ bool
+ select PTIMER # for hw/timer/xilinx_timer.c
+
+config XILINX_AXI
+ bool
+ select PTIMER # for hw/dma/xilinx_axidma.c
diff --git a/hw/Makefile.objs b/hw/Makefile.objs
index e2fcd6aafc..82aa7fab8e 100644
--- a/hw/Makefile.objs
+++ b/hw/Makefile.objs
@@ -1,4 +1,4 @@
-devices-dirs-$(call land,$(CONFIG_VIRTFS),$(call lor,$(CONFIG_VIRTIO),$(CONFIG_XEN))) += 9pfs/
+devices-dirs-$(call lor,$(CONFIG_VIRTIO_9P),$(call land,$(CONFIG_VIRTFS),$(CONFIG_XEN))) += 9pfs/
devices-dirs-$(CONFIG_SOFTMMU) += acpi/
devices-dirs-$(CONFIG_SOFTMMU) += adc/
devices-dirs-$(CONFIG_SOFTMMU) += audio/
@@ -10,7 +10,7 @@ devices-dirs-$(CONFIG_SOFTMMU) += display/
devices-dirs-$(CONFIG_SOFTMMU) += dma/
devices-dirs-$(CONFIG_SOFTMMU) += gpio/
devices-dirs-$(CONFIG_HYPERV) += hyperv/
-devices-dirs-$(CONFIG_SOFTMMU) += i2c/
+devices-dirs-$(CONFIG_I2C) += i2c/
devices-dirs-$(CONFIG_SOFTMMU) += ide/
devices-dirs-$(CONFIG_SOFTMMU) += input/
devices-dirs-$(CONFIG_SOFTMMU) += intc/
diff --git a/hw/acpi/Kconfig b/hw/acpi/Kconfig
new file mode 100644
index 0000000000..eca3beed75
--- /dev/null
+++ b/hw/acpi/Kconfig
@@ -0,0 +1,29 @@
+config ACPI
+ bool
+
+config ACPI_X86
+ bool
+ select ACPI
+ select ACPI_NVDIMM
+ select ACPI_CPU_HOTPLUG
+ select ACPI_MEMORY_HOTPLUG
+
+config ACPI_X86_ICH
+ bool
+ select ACPI_X86
+
+config ACPI_CPU_HOTPLUG
+ bool
+
+config ACPI_MEMORY_HOTPLUG
+ bool
+ select MEM_DEVICE
+
+config ACPI_NVDIMM
+ bool
+ depends on ACPI
+
+config ACPI_VMGENID
+ bool
+ default y
+ depends on PC
diff --git a/hw/adc/Kconfig b/hw/adc/Kconfig
new file mode 100644
index 0000000000..25d2229fb8
--- /dev/null
+++ b/hw/adc/Kconfig
@@ -0,0 +1,2 @@
+config STM32F2XX_ADC
+ bool
diff --git a/hw/alpha/Kconfig b/hw/alpha/Kconfig
new file mode 100644
index 0000000000..22cefd9577
--- /dev/null
+++ b/hw/alpha/Kconfig
@@ -0,0 +1,12 @@
+config DP264
+ bool
+ imply PCI_DEVICES
+ imply TEST_DEVICES
+ select I82374
+ select I8254
+ select I8259
+ select IDE_CMD646
+ select MC146818RTC
+ select PCI
+ select PCKBD
+ select SMC37C669
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
new file mode 100644
index 0000000000..d298fbdc89
--- /dev/null
+++ b/hw/arm/Kconfig
@@ -0,0 +1,124 @@
+config ARM_VIRT
+ bool
+ imply VFIO_PLATFORM
+
+config DIGIC
+ bool
+ select PTIMER
+
+config EXYNOS4
+ bool
+ select PTIMER
+
+config HIGHBANK
+ bool
+
+config INTEGRATOR
+ bool
+
+config MAINSTONE
+ bool
+
+config MUSICPAL
+ bool
+ select PTIMER
+
+config NETDUINO2
+ bool
+
+config NSERIES
+ bool
+
+config OMAP
+ bool
+
+config PXA2XX
+ bool
+
+config REALVIEW
+ bool
+
+config STELLARIS
+ bool
+
+config STRONGARM
+ bool
+
+config VERSATILE
+ bool
+
+config ZYNQ
+ bool
+
+config ARM_V7M
+ bool
+
+config ALLWINNER_A10
+ bool
+
+config RASPI
+ bool
+
+config STM32F205_SOC
+ bool
+
+config XLNX_ZYNQMP_ARM
+ bool
+
+config XLNX_VERSAL
+ bool
+
+config FSL_IMX25
+ bool
+
+config FSL_IMX31
+ bool
+
+config FSL_IMX6
+ bool
+
+config ASPEED_SOC
+ bool
+
+config MPS2
+ bool
+
+config FSL_IMX7
+ bool
+
+config ARM_SMMUV3
+ bool
+
+config FSL_IMX6UL
+ bool
+
+config NRF51_SOC
+ bool
+
+config MSF2
+ bool
+ select PTIMER
+
+config ZAURUS
+ bool
+
+config A9MPCORE
+ bool
+
+config A15MPCORE
+ bool
+
+config ARM11MPCORE
+ bool
+
+config ARMSSE
+ bool
+
+config ARMSSE_CPUID
+ bool
+
+config ARMSSE_MHU
+ bool
+
+config MUSCA
+ bool
diff --git a/hw/audio/Kconfig b/hw/audio/Kconfig
new file mode 100644
index 0000000000..e9c6fed826
--- /dev/null
+++ b/hw/audio/Kconfig
@@ -0,0 +1,52 @@
+config SB16
+ bool
+ default y
+ depends on ISA_BUS
+
+config ES1370
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config AC97
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config ADLIB
+ bool
+ default y
+ depends on ISA_BUS
+
+config GUS
+ bool
+ default y
+ depends on ISA_BUS
+
+config CS4231A
+ bool
+ default y
+ depends on ISA_BUS
+
+config HDA
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config PCSPK
+ bool
+ default y
+ depends on I8254
+
+config WM8750
+ bool
+ depends on I2C
+
+config PL041
+ bool
+
+config CS4231
+ bool
+
+config MARVELL_88W8618
+ bool
diff --git a/hw/block/Kconfig b/hw/block/Kconfig
new file mode 100644
index 0000000000..df96dc5dcc
--- /dev/null
+++ b/hw/block/Kconfig
@@ -0,0 +1,39 @@
+config FDC
+ bool
+ # FIXME: there is no separate file for the MMIO floppy disk controller, so
+ # select ISA_BUS here instead of polluting each board that requires one
+ select ISA_BUS
+
+config SSI_M25P80
+ bool
+
+config NAND
+ bool
+
+config PFLASH_CFI01
+ bool
+
+config PFLASH_CFI02
+ bool
+
+config ECC
+ bool
+
+config ONENAND
+ bool
+
+config NVME_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config VIRTIO_BLK
+ bool
+ default y
+ depends on VIRTIO
+
+config VHOST_USER_BLK
+ bool
+ # Only PCI devices are provided for now
+ default y if VIRTIO_PCI
+ depends on VIRTIO && VHOST_USER && LINUX
diff --git a/hw/block/Makefile.objs b/hw/block/Makefile.objs
index e206b8e712..f5f643f0cc 100644
--- a/hw/block/Makefile.objs
+++ b/hw/block/Makefile.objs
@@ -12,5 +12,6 @@ common-obj-$(CONFIG_NVME_PCI) += nvme.o
obj-$(CONFIG_SH4) += tc58128.o
obj-$(CONFIG_VIRTIO_BLK) += virtio-blk.o
-obj-$(CONFIG_VIRTIO_BLK) += dataplane/
obj-$(CONFIG_VHOST_USER_BLK) += vhost-user-blk.o
+
+obj-y += dataplane/
diff --git a/hw/block/dataplane/Makefile.objs b/hw/block/dataplane/Makefile.objs
index c6c68dbc00..0c5270268e 100644
--- a/hw/block/dataplane/Makefile.objs
+++ b/hw/block/dataplane/Makefile.objs
@@ -1,2 +1,2 @@
-obj-y += virtio-blk.o
+obj-$(CONFIG_VIRTIO_BLK) += virtio-blk.o
obj-$(CONFIG_XEN) += xen-block.o
diff --git a/hw/bt/Kconfig b/hw/bt/Kconfig
new file mode 100644
index 0000000000..554a9ee75e
--- /dev/null
+++ b/hw/bt/Kconfig
@@ -0,0 +1,2 @@
+config BLUETOOTH
+ bool
diff --git a/hw/char/Kconfig b/hw/char/Kconfig
new file mode 100644
index 0000000000..6360c9fffa
--- /dev/null
+++ b/hw/char/Kconfig
@@ -0,0 +1,42 @@
+config ESCC
+ bool
+
+config PARALLEL
+ bool
+ default y
+ depends on ISA_BUS
+
+config PL011
+ bool
+
+config SERIAL
+ bool
+
+config SERIAL_ISA
+ bool
+ default y
+ depends on ISA_BUS
+ select SERIAL
+
+config SERIAL_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select SERIAL
+
+config VIRTIO_SERIAL
+ bool
+ default y
+ depends on VIRTIO
+
+config STM32F2XX_USART
+ bool
+
+config CMSDK_APB_UART
+ bool
+
+config SCLPCONSOLE
+ bool
+
+config TERMINAL3270
+ bool
diff --git a/hw/core/Kconfig b/hw/core/Kconfig
new file mode 100644
index 0000000000..c2a1ae8122
--- /dev/null
+++ b/hw/core/Kconfig
@@ -0,0 +1,11 @@
+config EMPTY_SLOT
+ bool
+
+config PTIMER
+ bool
+
+config FITLOADER
+ bool
+
+config PLATFORM_BUS
+ bool
diff --git a/hw/cpu/Kconfig b/hw/cpu/Kconfig
new file mode 100644
index 0000000000..1767d028ac
--- /dev/null
+++ b/hw/cpu/Kconfig
@@ -0,0 +1,8 @@
+config ARM11MPCORE
+ bool
+
+config A9MPCORE
+ bool
+
+config A15MPCORE
+ bool
diff --git a/hw/cris/Kconfig b/hw/cris/Kconfig
new file mode 100644
index 0000000000..884ad2cbc0
--- /dev/null
+++ b/hw/cris/Kconfig
@@ -0,0 +1,9 @@
+config AXIS
+ bool
+ select ETRAXFS
+ select PFLASH_CFI02
+ select NAND
+
+config ETRAXFS
+ bool
+ select PTIMER
diff --git a/hw/display/Kconfig b/hw/display/Kconfig
new file mode 100644
index 0000000000..a96ea763a8
--- /dev/null
+++ b/hw/display/Kconfig
@@ -0,0 +1,108 @@
+config EDID
+ bool
+
+config FW_CFG_DMA
+ bool
+
+config ADS7846
+ bool
+
+config VGA_CIRRUS
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select VGA
+
+config G364FB
+ bool
+
+config JAZZ_LED
+ bool
+
+config PL110
+ bool
+
+config SII9022
+ bool
+ depends on I2C
+
+config SSD0303
+ bool
+ depends on I2C
+
+config SSD0323
+ bool
+
+config VGA_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select VGA
+ select EDID
+
+config VGA_ISA
+ bool
+ depends on ISA_BUS
+ select VGA
+
+config VGA_ISA_MM
+ bool
+ select VGA
+
+config VMWARE_VGA
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select VGA
+
+config BOCHS_DISPLAY
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select VGA
+ select EDID
+
+config BLIZZARD
+ bool
+
+config FRAMEBUFFER
+ bool
+
+config MILKYMIST_TMU2
+ bool
+ depends on OPENGL && X11
+
+config SM501
+ bool
+ select I2C
+ select DDC
+ select SERIAL
+
+config TCX
+ bool
+
+config CG3
+ bool
+
+config VGA
+ bool
+
+config QXL
+ bool
+ depends on SPICE && PCI
+ select VGA
+
+config VIRTIO_GPU
+ bool
+ default y
+ depends on VIRTIO
+ select EDID
+
+config VIRTIO_VGA
+ bool
+ default y if PCI_DEVICES
+ depends on VIRTIO_PCI
+ select VGA
+
+config DPCD
+ bool
diff --git a/hw/display/Makefile.objs b/hw/display/Makefile.objs
index 7c4ae9a0fd..576fca4eb6 100644
--- a/hw/display/Makefile.objs
+++ b/hw/display/Makefile.objs
@@ -1,4 +1,4 @@
-common-obj-y += edid-generate.o
+common-obj-$(CONFIG_EDID) += edid-generate.o edid-region.o
common-obj-$(CONFIG_FW_CFG_DMA) += ramfb.o
common-obj-$(CONFIG_FW_CFG_DMA) += ramfb-standalone.o
@@ -15,12 +15,10 @@ common-obj-$(CONFIG_SSD0323) += ssd0323.o
common-obj-$(CONFIG_XEN) += xenfb.o
common-obj-$(CONFIG_VGA_PCI) += vga-pci.o
-common-obj-$(CONFIG_VGA_PCI) += edid-region.o
common-obj-$(CONFIG_VGA_ISA) += vga-isa.o
common-obj-$(CONFIG_VGA_ISA_MM) += vga-isa-mm.o
common-obj-$(CONFIG_VMWARE_VGA) += vmware_vga.o
common-obj-$(CONFIG_BOCHS_DISPLAY) += bochs-display.o
-common-obj-$(CONFIG_BOCHS_DISPLAY) += edid-region.o
common-obj-$(CONFIG_BLIZZARD) += blizzard.o
common-obj-$(CONFIG_EXYNOS4) += exynos4210_fimd.o
diff --git a/hw/dma/Kconfig b/hw/dma/Kconfig
new file mode 100644
index 0000000000..751dec5426
--- /dev/null
+++ b/hw/dma/Kconfig
@@ -0,0 +1,21 @@
+config RC4030
+ bool
+
+config PL080
+ bool
+
+config PL330
+ bool
+
+config I82374
+ bool
+ select I8257
+
+config I8257
+ bool
+
+config ZYNQ_DEVCFG
+ bool
+
+config STP2000
+ bool
diff --git a/hw/gpio/Kconfig b/hw/gpio/Kconfig
new file mode 100644
index 0000000000..9227cb5598
--- /dev/null
+++ b/hw/gpio/Kconfig
@@ -0,0 +1,9 @@
+config MAX7310
+ bool
+ depends on I2C
+
+config PL061
+ bool
+
+config GPIO_KEY
+ bool
diff --git a/hw/hppa/Kconfig b/hw/hppa/Kconfig
new file mode 100644
index 0000000000..2d9b072c21
--- /dev/null
+++ b/hw/hppa/Kconfig
@@ -0,0 +1,10 @@
+config DINO
+ bool
+ imply PCI_DEVICES
+ select PCI
+ select SERIAL
+ select ISA_BUS
+ select I8259
+ select IDE_CMD646
+ select MC146818RTC
+ select LSI_SCSI_PCI
diff --git a/hw/hyperv/Kconfig b/hw/hyperv/Kconfig
new file mode 100644
index 0000000000..a1fa8ff9be
--- /dev/null
+++ b/hw/hyperv/Kconfig
@@ -0,0 +1,8 @@
+config HYPERV
+ bool
+ depends on KVM
+
+config HYPERV_TESTDEV
+ bool
+ default y if TEST_DEVICES
+ depends on HYPERV
diff --git a/hw/i2c/Kconfig b/hw/i2c/Kconfig
new file mode 100644
index 0000000000..ef1caa6d89
--- /dev/null
+++ b/hw/i2c/Kconfig
@@ -0,0 +1,27 @@
+config I2C
+ bool
+
+config SMBUS_EEPROM
+ bool
+ depends on I2C
+
+config DDC
+ bool
+ depends on I2C
+ select EDID
+
+config VERSATILE_I2C
+ bool
+ select I2C
+
+config ACPI_SMBUS
+ bool
+ select I2C
+
+config BITBANG_I2C
+ bool
+ select I2C
+
+config IMX_I2C
+ bool
+ select I2C
diff --git a/hw/i2c/Makefile.objs b/hw/i2c/Makefile.objs
index 9205cbee16..2a3c106551 100644
--- a/hw/i2c/Makefile.objs
+++ b/hw/i2c/Makefile.objs
@@ -2,7 +2,7 @@ common-obj-$(CONFIG_I2C) += core.o smbus_slave.o smbus_master.o
common-obj-$(CONFIG_SMBUS_EEPROM) += smbus_eeprom.o
common-obj-$(CONFIG_DDC) += i2c-ddc.o
common-obj-$(CONFIG_VERSATILE_I2C) += versatile_i2c.o
-common-obj-$(CONFIG_ACPI_X86) += smbus_ich9.o
+common-obj-$(CONFIG_ACPI_X86_ICH) += smbus_ich9.o
common-obj-$(CONFIG_ACPI_SMBUS) += pm_smbus.o
common-obj-$(CONFIG_BITBANG_I2C) += bitbang_i2c.o
common-obj-$(CONFIG_EXYNOS4) += exynos4210_i2c.o
diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig
new file mode 100644
index 0000000000..78fd70396a
--- /dev/null
+++ b/hw/i386/Kconfig
@@ -0,0 +1,99 @@
+config SEV
+ bool
+ depends on KVM
+
+config PC
+ bool
+ imply APPLESMC
+ imply HYPERV
+ imply ISA_IPMI_KCS
+ imply ISA_IPMI_BT
+ imply ISA_DEBUG
+ imply PCI_DEVICES
+ imply PVPANIC
+ imply QXL
+ imply SEV
+ imply SGA
+ imply TEST_DEVICES
+ imply TPM_CRB
+ imply TPM_TIS
+ select FDC
+ select I8259
+ select I8254
+ select PCKBD
+ select PCSPK
+ select I82374
+ select I8257
+ select MC146818RTC
+ # Needed by the board code:
+ select PARALLEL
+ # For ACPI builder:
+ select SERIAL_ISA
+ select ACPI_VMGENID
+
+config PC_PCI
+ bool
+ select APIC
+ select IOAPIC
+ select APM
+ select PC
+
+config PC_ACPI
+ bool
+ select ACPI_X86
+ select ACPI_CPU_HOTPLUG
+ select ACPI_MEMORY_HOTPLUG
+ select SMBUS_EEPROM
+ select PFLASH_CFI01
+ depends on ACPI_SMBUS
+
+config I440FX
+ bool
+ select PC_PCI
+ select PC_ACPI
+ select ACPI_SMBUS
+ select PCI_PIIX
+ select IDE_PIIX
+ select DIMM
+ select SMBIOS
+ select VMPORT
+ select VMMOUSE
+ select FW_CFG_DMA
+
+config ISAPC
+ bool
+ select ISA_BUS
+ select PC
+ select IDE_ISA
+ select VGA_ISA
+ # FIXME: it is in the same file as i440fx, and does not compile
+ # if separated
+ depends on I440FX
+
+config Q35
+ bool
+ imply VTD
+ imply AMD_IOMMU
+ select PC_PCI
+ select PC_ACPI
+ select PCI_EXPRESS_Q35
+ select LPC_ICH9
+ select AHCI
+ select DIMM
+ select SMBIOS
+ select VMPORT
+ select VMMOUSE
+ select FW_CFG_DMA
+
+config VTD
+ bool
+
+config AMD_IOMMU
+ bool
+
+config VMPORT
+ bool
+
+config VMMOUSE
+ bool
+ depends on VMPORT
diff --git a/hw/i386/Makefile.objs b/hw/i386/Makefile.objs
index 3de7ca2bb9..27248a0777 100644
--- a/hw/i386/Makefile.objs
+++ b/hw/i386/Makefile.objs
@@ -4,8 +4,9 @@ obj-y += pc.o
obj-$(CONFIG_I440FX) += pc_piix.o
obj-$(CONFIG_Q35) += pc_q35.o
obj-y += pc_sysfw.o
-obj-$(CONFIG_VTD) += x86-iommu.o intel_iommu.o
-obj-$(CONFIG_AMD_IOMMU) += x86-iommu.o amd_iommu.o
+obj-y += x86-iommu.o
+obj-$(CONFIG_VTD) += intel_iommu.o
+obj-$(CONFIG_AMD_IOMMU) += amd_iommu.o
obj-$(CONFIG_XEN) += ../xenpv/ xen/
obj-$(CONFIG_VMPORT) += vmport.o
obj-$(CONFIG_VMMOUSE) += vmmouse.o
diff --git a/hw/ide/Kconfig b/hw/ide/Kconfig
new file mode 100644
index 0000000000..ab47b6a7a3
--- /dev/null
+++ b/hw/ide/Kconfig
@@ -0,0 +1,54 @@
+config IDE_CORE
+ bool
+
+config IDE_QDEV
+ bool
+ select IDE_CORE
+
+config IDE_PCI
+ bool
+ depends on PCI
+ select IDE_CORE
+
+config IDE_ISA
+ bool
+ depends on ISA_BUS
+ select IDE_QDEV
+
+config IDE_PIIX
+ bool
+ select IDE_PCI
+ select IDE_QDEV
+
+config IDE_CMD646
+ bool
+ select IDE_PCI
+ select IDE_QDEV
+
+config IDE_MACIO
+ bool
+ select IDE_QDEV
+
+config IDE_MMIO
+ bool
+ select IDE_QDEV
+
+config IDE_VIA
+ bool
+ select IDE_PCI
+ select IDE_QDEV
+
+config MICRODRIVE
+ bool
+ select IDE_QDEV
+
+config AHCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select IDE_QDEV
+
+config IDE_SII3112
+ bool
+ select IDE_PCI
+ select IDE_QDEV
diff --git a/hw/input/Kconfig b/hw/input/Kconfig
new file mode 100644
index 0000000000..e2e66f0858
--- /dev/null
+++ b/hw/input/Kconfig
@@ -0,0 +1,33 @@
+config ADB
+ bool
+
+config LM832X
+ bool
+ depends on I2C
+
+config PCKBD
+ bool
+ default y
+ depends on ISA_BUS
+
+config PL050
+ bool
+
+config STELLARIS_INPUT
+ bool
+
+config TSC2005
+ bool
+
+config VIRTIO_INPUT
+ bool
+ default y
+ depends on VIRTIO
+
+config VIRTIO_INPUT_HOST
+ bool
+ default y
+ depends on VIRTIO && LINUX
+
+config TSC210X
+ bool
diff --git a/hw/intc/Kconfig b/hw/intc/Kconfig
new file mode 100644
index 0000000000..de10a6bcbf
--- /dev/null
+++ b/hw/intc/Kconfig
@@ -0,0 +1,57 @@
+config HEATHROW_PIC
+ bool
+
+config I8259
+ bool
+
+config PL190
+ bool
+
+config IOAPIC
+ bool
+
+config ARM_GIC
+ bool
+
+config OPENPIC
+ bool
+
+config APIC
+ bool
+
+config ARM_GIC_KVM
+ bool
+ default y
+ depends on ARM_GIC && KVM
+
+config OPENPIC_KVM
+ bool
+ default y
+ depends on OPENPIC && KVM
+
+config XICS
+ bool
+ depends on POWERNV || PSERIES
+
+config XICS_SPAPR
+ bool
+ select XICS
+
+config XICS_KVM
+ bool
+ default y
+ depends on XICS && KVM
+
+config ALLWINNER_A10_PIC
+ bool
+
+config S390_FLIC
+ bool
+
+config S390_FLIC_KVM
+ bool
+ default y
+ depends on S390_FLIC && KVM
+
+config OMPIC
+ bool
diff --git a/hw/ipack/Kconfig b/hw/ipack/Kconfig
new file mode 100644
index 0000000000..f8da24a62b
--- /dev/null
+++ b/hw/ipack/Kconfig
@@ -0,0 +1,4 @@
+config IPACK
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
diff --git a/hw/ipmi/Kconfig b/hw/ipmi/Kconfig
new file mode 100644
index 0000000000..b944fae100
--- /dev/null
+++ b/hw/ipmi/Kconfig
@@ -0,0 +1,22 @@
+config IPMI
+ bool
+
+config IPMI_LOCAL
+ bool
+ default y
+ depends on IPMI
+
+config IPMI_EXTERN
+ bool
+ default y
+ depends on IPMI
+
+config ISA_IPMI_KCS
+ bool
+ depends on ISA_BUS
+ select IPMI
+
+config ISA_IPMI_BT
+ bool
+ depends on ISA_BUS
+ select IPMI
diff --git a/hw/isa/Kconfig b/hw/isa/Kconfig
new file mode 100644
index 0000000000..57e09a0cb8
--- /dev/null
+++ b/hw/isa/Kconfig
@@ -0,0 +1,53 @@
+config ISA_BUS
+ bool
+
+config APM
+ bool
+
+config I82378
+ bool
+ select ISA_BUS
+ select I8259
+ select I8254
+ select I82374
+ select MC146818RTC
+
+config PC87312
+ bool
+ select ISA_BUS
+ select I8259
+ select I8254
+ select I8257
+ select MC146818RTC
+ select SERIAL_ISA
+ select PARALLEL
+ select FDC
+ select IDE_ISA
+
+config PIIX4
+ bool
+ # For historical reasons, SuperIO devices are created in the board
+ # for PIIX4.
+ select ISA_BUS
+
+config VT82C686
+ bool
+ select ISA_BUS
+ select ACPI_SMBUS
+ select SERIAL_ISA
+ select FDC
+
+config SMC37C669
+ bool
+ select ISA_BUS
+ select SERIAL_ISA
+ select PARALLEL
+ select FDC
+
+config LPC_ICH9
+ bool
+ # For historical reasons, SuperIO devices are created in the board
+ # for ICH9.
+ select ISA_BUS
+ select ACPI_SMBUS
+ select ACPI_X86_ICH
diff --git a/hw/lm32/Kconfig b/hw/lm32/Kconfig
new file mode 100644
index 0000000000..3d09c2dd6f
--- /dev/null
+++ b/hw/lm32/Kconfig
@@ -0,0 +1,13 @@
+config LM32
+ bool
+ select PTIMER
+ select PFLASH_CFI02
+
+config MILKYMIST
+ bool
+ # FIXME: disabling it results in compile-time errors
+ select MILKYMIST_TMU2 if OPENGL && X11
+ select PTIMER
+ select PFLASH_CFI01
+ select FRAMEBUFFER
+ select SD
diff --git a/hw/m68k/Kconfig b/hw/m68k/Kconfig
new file mode 100644
index 0000000000..49ef0b3f6d
--- /dev/null
+++ b/hw/m68k/Kconfig
@@ -0,0 +1,9 @@
+config AN5206
+ bool
+ select COLDFIRE
+ select PTIMER
+
+config MCF5208
+ bool
+ select COLDFIRE
+ select PTIMER
diff --git a/hw/mem/Kconfig b/hw/mem/Kconfig
new file mode 100644
index 0000000000..620fd4cb59
--- /dev/null
+++ b/hw/mem/Kconfig
@@ -0,0 +1,11 @@
+config DIMM
+ bool
+ select MEM_DEVICE
+
+config MEM_DEVICE
+ bool
+
+config NVDIMM
+ bool
+ default y
+ depends on PC
diff --git a/hw/microblaze/Kconfig b/hw/microblaze/Kconfig
new file mode 100644
index 0000000000..c4dc120973
--- /dev/null
+++ b/hw/microblaze/Kconfig
@@ -0,0 +1,20 @@
+config PETALOGIX_S3ADSP1800
+ bool
+ select PFLASH_CFI01
+ select XILINX
+ select XILINX_AXI
+ select XILINX_ETHLITE
+
+config PETALOGIX_ML605
+ bool
+ select PFLASH_CFI01
+ select SERIAL
+ select SSI_M25P80
+ select XILINX
+ select XILINX_AXI
+ select XILINX_ETHLITE
+ select XILINX_SPI
+
+config XLNX_ZYNQMP_PMU
+ bool
+ select XLNX_ZYNQMP
diff --git a/hw/mips/Kconfig b/hw/mips/Kconfig
new file mode 100644
index 0000000000..cdc07e59b6
--- /dev/null
+++ b/hw/mips/Kconfig
@@ -0,0 +1,21 @@
+config R4K
+ bool
+
+config MALTA
+ bool
+
+config MIPSSIM
+ bool
+
+config JAZZ
+ bool
+
+config FULONG
+ bool
+
+config MIPS_CPS
+ bool
+ select PTIMER
+
+config MIPS_BOSTON
+ bool
diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig
new file mode 100644
index 0000000000..2c60be99bc
--- /dev/null
+++ b/hw/misc/Kconfig
@@ -0,0 +1,118 @@
+config APPLESMC
+ bool
+ depends on ISA_BUS
+
+config MAX111X
+ bool
+
+config TMP105
+ bool
+ depends on I2C
+
+config TMP421
+ bool
+ depends on I2C
+
+config ISA_DEBUG
+ bool
+ depends on ISA_BUS
+
+config SGA
+ bool
+ depends on ISA_BUS
+
+config ISA_TESTDEV
+ bool
+ default y if TEST_DEVICES
+ depends on ISA_BUS
+
+config PCI_TESTDEV
+ bool
+ default y if TEST_DEVICES
+ depends on PCI
+
+config EDU
+ bool
+ default y if TEST_DEVICES
+ depends on PCI
+
+config PCA9552
+ bool
+ depends on I2C
+
+config PL310
+ bool
+
+config INTEGRATOR_DEBUG
+ bool
+
+config A9SCU
+ bool
+
+config ARM11SCU
+ bool
+
+config MOS6522
+ bool
+
+config MACIO
+ bool
+ select CUDA
+ select ESCC
+ select IDE_MACIO
+ select MAC_DBDMA
+ select MAC_NVRAM
+ select MOS6522
+
+config IVSHMEM_DEVICE
+ bool
+ default y if PCI_DEVICES
+ depends on PCI && LINUX && IVSHMEM
+
+config ECCMEMCTL
+ bool
+ select ECC
+
+config IMX
+ bool
+ select PTIMER
+
+config STM32F2XX_SYSCFG
+ bool
+
+config MIPS_ITU
+ bool
+
+config MPS2_FPGAIO
+ bool
+
+config MPS2_SCC
+ bool
+
+config TZ_MPC
+ bool
+
+config TZ_MSC
+ bool
+
+config TZ_PPC
+ bool
+
+config IOTKIT_SECCTL
+ bool
+
+config IOTKIT_SYSCTL
+ bool
+
+config IOTKIT_SYSINFO
+ bool
+
+config PVPANIC
+ bool
+ depends on ISA_BUS
+
+config AUX
+ bool
+ select I2C
+
+source macio/Kconfig
diff --git a/hw/misc/macio/Kconfig b/hw/misc/macio/Kconfig
new file mode 100644
index 0000000000..c6caeb672f
--- /dev/null
+++ b/hw/misc/macio/Kconfig
@@ -0,0 +1,11 @@
+config CUDA
+ bool
+
+config MAC_PMU
+ bool
+
+config MAC_DBDMA
+ bool
+
+config MACIO_GPIO
+ bool
diff --git a/hw/moxie/Kconfig b/hw/moxie/Kconfig
new file mode 100644
index 0000000000..3793ef0372
--- /dev/null
+++ b/hw/moxie/Kconfig
@@ -0,0 +1,3 @@
+config MOXIESIM
+ bool
+ select SERIAL
diff --git a/hw/net/Kconfig b/hw/net/Kconfig
new file mode 100644
index 0000000000..c00ec03cd1
--- /dev/null
+++ b/hw/net/Kconfig
@@ -0,0 +1,125 @@
+config DP8393X
+ bool
+
+config NE2000_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config EEPRO100_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config PCNET_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select PCNET_COMMON
+
+config PCNET_COMMON
+ bool
+
+config E1000_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config E1000E_PCI_EXPRESS
+ bool
+ default y if PCI_DEVICES
+ depends on PCI_EXPRESS
+
+config RTL8139_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config VMXNET3_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config SMC91C111
+ bool
+
+config LAN9118
+ bool
+ select PTIMER
+
+config NE2000_ISA
+ bool
+ default y
+ depends on ISA_BUS
+ depends on PCI # for NE2000State
+ select NE2000_PCI
+
+config OPENCORES_ETH
+ bool
+
+config XGMAC
+ bool
+
+config MIPSNET
+ bool
+
+config ALLWINNER_EMAC
+ bool
+
+config IMX_FEC
+ bool
+
+config CADENCE
+ bool
+
+config STELLARIS_ENET
+ bool
+
+config LANCE
+ bool
+ select PCNET_COMMON
+
+config SUNHME
+ bool
+
+config FTGMAC100
+ bool
+
+config SUNGEM
+ bool
+ depends on PCI
+
+config COLDFIRE
+ bool
+
+config XILINX_ETHLITE
+ bool
+
+config VIRTIO_NET
+ bool
+ default y
+ depends on VIRTIO
+
+config ETSEC
+ bool
+ select PTIMER
+
+config ROCKER
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config CAN_BUS
+ bool
+
+config CAN_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select CAN_BUS
+
+config CAN_SJA1000
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select CAN_BUS
diff --git a/hw/nios2/Kconfig b/hw/nios2/Kconfig
new file mode 100644
index 0000000000..ab953e0077
--- /dev/null
+++ b/hw/nios2/Kconfig
@@ -0,0 +1,8 @@
+config NIOS2_10M50
+ bool
+ select NIOS2
+ select SERIAL
+ select ALTERA_TIMER
+
+config NIOS2
+ bool
diff --git a/hw/nvram/Kconfig b/hw/nvram/Kconfig
new file mode 100644
index 0000000000..ebaa749ce9
--- /dev/null
+++ b/hw/nvram/Kconfig
@@ -0,0 +1,9 @@
+config DS1225Y
+ bool
+
+config AT24C
+ bool
+ depends on I2C
+
+config MAC_NVRAM
+ bool
diff --git a/hw/openrisc/Kconfig b/hw/openrisc/Kconfig
new file mode 100644
index 0000000000..6c1e86884e
--- /dev/null
+++ b/hw/openrisc/Kconfig
@@ -0,0 +1,5 @@
+config OR1K_SIM
+ bool
+ select SERIAL
+ select OPENCORES_ETH
+ select OMPIC
diff --git a/hw/pci-bridge/Kconfig b/hw/pci-bridge/Kconfig
new file mode 100644
index 0000000000..b167b98497
--- /dev/null
+++ b/hw/pci-bridge/Kconfig
@@ -0,0 +1,29 @@
+config PCIE_PORT
+ bool
+ default y if PCI_DEVICES
+ depends on PCI_EXPRESS
+
+config PXB
+ bool
+ default y if Q35
+
+config XIO3130
+ bool
+ default y if PCI_DEVICES
+ depends on PCI_EXPRESS
+
+config IOH3420
+ bool
+ default y if PCI_DEVICES
+ depends on PCI_EXPRESS
+
+config I82801B11
+ bool
+ default y if PCI_DEVICES
+ depends on PCI_EXPRESS
+
+config DEC_PCI
+ bool
+
+config SIMBA
+ bool
diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig
new file mode 100644
index 0000000000..b39ea297ba
--- /dev/null
+++ b/hw/pci-host/Kconfig
@@ -0,0 +1,51 @@
+config PAM
+ bool
+
+config PREP_PCI
+ select PCI
+ bool
+
+config GRACKLE_PCI
+ select PCI
+ bool
+
+config UNIN_PCI
+ bool
+ select PCI
+ select DEC_PCI
+ select OPENPIC
+
+config PPCE500_PCI
+ select PCI
+ bool
+
+config VERSATILE_PCI
+ select PCI
+ bool
+
+config PCI_SABRE
+ select PCI
+ bool
+
+config PCI_PIIX
+ bool
+ select PCI
+ select PAM
+ select ISA_BUS
+
+config PCI_EXPRESS_Q35
+ bool
+ select PCI_EXPRESS
+ select PAM
+
+config PCI_EXPRESS_GENERIC_BRIDGE
+ bool
+ select PCI_EXPRESS
+
+config PCI_EXPRESS_XILINX
+ bool
+ select PCI_EXPRESS
+
+config PCI_EXPRESS_DESIGNWARE
+ bool
+ select PCI_EXPRESS
diff --git a/hw/pci/Kconfig b/hw/pci/Kconfig
new file mode 100644
index 0000000000..3b8638b51d
--- /dev/null
+++ b/hw/pci/Kconfig
@@ -0,0 +1,9 @@
+config PCI
+ bool
+
+config PCI_EXPRESS
+ bool
+ select PCI
+
+config PCI_DEVICES
+ bool
diff --git a/hw/pci/Makefile.objs b/hw/pci/Makefile.objs
index 9f905e6344..c78f2fb24b 100644
--- a/hw/pci/Makefile.objs
+++ b/hw/pci/Makefile.objs
@@ -2,8 +2,13 @@ common-obj-$(CONFIG_PCI) += pci.o pci_bridge.o
common-obj-$(CONFIG_PCI) += msix.o msi.o
common-obj-$(CONFIG_PCI) += shpc.o
common-obj-$(CONFIG_PCI) += slotid_cap.o
-common-obj-$(CONFIG_PCI) += pci_host.o pcie_host.o
-common-obj-$(CONFIG_PCI) += pcie.o pcie_aer.o pcie_port.o
+common-obj-$(CONFIG_PCI) += pci_host.o
+
+# The functions in these modules can be used by devices too. Since we
+# allow plugging PCIe devices into PCI buses, include them even if
+# CONFIG_PCI_EXPRESS=n.
+common-obj-$(CONFIG_PCI) += pcie.o pcie_aer.o
+common-obj-$(CONFIG_PCI_EXPRESS) += pcie_port.o pcie_host.o
common-obj-$(call lnot,$(CONFIG_PCI)) += pci-stub.o
common-obj-$(CONFIG_ALL) += pci-stub.o
diff --git a/hw/pcmcia/Kconfig b/hw/pcmcia/Kconfig
new file mode 100644
index 0000000000..41f2df9136
--- /dev/null
+++ b/hw/pcmcia/Kconfig
@@ -0,0 +1,2 @@
+config PCMCIA
+ bool
diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig
new file mode 100644
index 0000000000..2b83637511
--- /dev/null
+++ b/hw/ppc/Kconfig
@@ -0,0 +1,121 @@
+config PSERIES
+ bool
+ imply PCI_DEVICES
+ imply TEST_DEVICES
+ select DIMM
+ select PCI
+ select SPAPR_VSCSI
+ select VFIO if LINUX # needed by spapr_pci_vfio.c
+ select XICS_SPAPR
+ select XIVE_SPAPR
+
+config SPAPR_RNG
+ bool
+ default y
+ depends on PSERIES
+
+config POWERNV
+ bool
+ imply PCI_DEVICES
+ imply TEST_DEVICES
+ select ISA_IPMI_BT
+ select IPMI_LOCAL
+ select ISA_BUS
+ select MC146818RTC
+ select XICS
+ select XIVE
+
+config PPC405
+ bool
+ select M48T59
+ select PFLASH_CFI02
+ select PPC4XX
+ select SERIAL
+
+config PPC440
+ bool
+ imply PCI_DEVICES
+ imply TEST_DEVICES
+ select PCI_EXPRESS
+ select PPC4XX
+ select SERIAL
+
+config PPC4XX
+ bool
+ select BITBANG_I2C
+ select PCI
+
+config SAM460EX
+ bool
+ select PFLASH_CFI01
+ select IDE_SII3112
+ select M41T80
+ select PPC440
+ select SERIAL
+ select SM501
+ select SMBUS_EEPROM
+ select USB_EHCI_SYSBUS
+ select USB_OHCI
+
+config PREP
+ bool
+ imply PCI_DEVICES
+ imply TEST_DEVICES
+ select CS4231A
+ select PREP_PCI
+ select I82374
+ select I82378
+ select LSI_SCSI_PCI
+ select M48T59
+ select PC87312
+ select RS6000_MC
+
+config RS6000_MC
+ bool
+
+config MAC_OLDWORLD
+ bool
+ imply PCI_DEVICES
+ imply SUNGEM
+ imply TEST_DEVICES
+ select ADB
+ select GRACKLE_PCI
+ select HEATHROW_PIC
+ select MACIO
+
+config MAC_NEWWORLD
+ bool
+ imply PCI_DEVICES
+ imply SUNGEM
+ imply TEST_DEVICES
+ select ADB
+ select MACIO
+ select MACIO_GPIO
+ select MAC_PMU
+ select UNIN_PCI
+
+config E500
+ bool
+ imply AT24C
+ select ETSEC
+ select OPENPIC
+ select PLATFORM_BUS
+ select PPCE500_PCI
+ select SERIAL
+
+config VIRTEX
+ bool
+ select PFLASH_CFI01
+ select SERIAL
+ select XILINX
+ select XILINX_ETHLITE
+
+config XIVE
+ bool
+ depends on POWERNV || PSERIES
+
+config XIVE_SPAPR
+ bool
+ default y
+ depends on PSERIES
+ select XIVE
diff --git a/hw/riscv/Kconfig b/hw/riscv/Kconfig
new file mode 100644
index 0000000000..e0ee3043a6
--- /dev/null
+++ b/hw/riscv/Kconfig
@@ -0,0 +1,33 @@
+config HTIF
+ bool
+
+config HART
+ bool
+
+config SIFIVE
+ bool
+
+config SIFIVE_E
+ bool
+ select HART
+ select SIFIVE
+
+config SIFIVE_U
+ bool
+ select CADENCE
+ select HART
+ select SIFIVE
+
+config SPIKE
+ bool
+ select HART
+ select HTIF
+ select SIFIVE
+
+config RISCV_VIRT
+ bool
+ select HART
+ select SERIAL
+ select VIRTIO_MMIO
+ select PCI_EXPRESS_GENERIC_BRIDGE
+ select SIFIVE
diff --git a/hw/s390x/Kconfig b/hw/s390x/Kconfig
new file mode 100644
index 0000000000..a7046ea41f
--- /dev/null
+++ b/hw/s390x/Kconfig
@@ -0,0 +1,11 @@
+config S390_CCW_VIRTIO
+ bool
+ imply VIRTIO_PCI
+ imply TERMINAL3270
+ imply VFIO_AP
+ imply VFIO_CCW
+ imply WDT_DIAG288
+ select PCI
+ select S390_FLIC
+ select SCLPCONSOLE
+ select VIRTIO_CCW
diff --git a/hw/s390x/Makefile.objs b/hw/s390x/Makefile.objs
index bfd5326d7c..e02ed80b68 100644
--- a/hw/s390x/Makefile.objs
+++ b/hw/s390x/Makefile.objs
@@ -6,7 +6,8 @@ obj-y += sclpcpu.o
obj-y += ipl.o
obj-y += css.o
obj-$(CONFIG_S390_CCW_VIRTIO) += s390-virtio-ccw.o
-obj-y += 3270-ccw.o
+obj-$(CONFIG_TERMINAL3270) += 3270-ccw.o
+ifeq ($(CONFIG_VIRTIO_CCW),y)
obj-y += virtio-ccw.o
obj-$(CONFIG_VIRTIO_SERIAL) += virtio-ccw-serial.o
obj-$(CONFIG_VIRTIO_BALLOON) += virtio-ccw-balloon.o
@@ -19,6 +20,7 @@ obj-$(CONFIG_VIRTIO_NET) += virtio-ccw-net.o
obj-$(CONFIG_VIRTIO_BLK) += virtio-ccw-blk.o
obj-$(call land,$(CONFIG_VIRTIO_9P),$(CONFIG_VIRTFS)) += virtio-ccw-9p.o
obj-$(CONFIG_VHOST_VSOCK) += vhost-vsock-ccw.o
+endif
obj-y += css-bridge.o
obj-y += ccw-device.o
obj-y += s390-pci-bus.o s390-pci-inst.o
diff --git a/hw/scsi/Kconfig b/hw/scsi/Kconfig
new file mode 100644
index 0000000000..b3ba540c17
--- /dev/null
+++ b/hw/scsi/Kconfig
@@ -0,0 +1,54 @@
+config SCSI
+ bool
+
+config LSI_SCSI_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select SCSI
+
+config MPTSAS_SCSI_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select SCSI
+
+config MEGASAS_SCSI_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select SCSI
+
+config VMW_PVSCSI_SCSI_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select SCSI
+
+config ESP
+ bool
+ select SCSI
+
+config ESP_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select ESP
+
+config SPAPR_VSCSI
+ bool
+ default y
+ depends on PSERIES
+ select SCSI
+
+config VIRTIO_SCSI
+ bool
+ default y
+ depends on VIRTIO
+ select SCSI
+
+config VHOST_USER_SCSI
+ bool
+ # Only PCI devices are provided for now
+ default y if VIRTIO_PCI
+ depends on VIRTIO && VHOST_USER && LINUX
diff --git a/hw/scsi/Makefile.objs b/hw/scsi/Makefile.objs
index 45167baeaf..54b36ed8b1 100644
--- a/hw/scsi/Makefile.objs
+++ b/hw/scsi/Makefile.objs
@@ -6,7 +6,7 @@ common-obj-$(CONFIG_MEGASAS_SCSI_PCI) += megasas.o
common-obj-$(CONFIG_VMW_PVSCSI_SCSI_PCI) += vmw_pvscsi.o
common-obj-$(CONFIG_ESP) += esp.o
common-obj-$(CONFIG_ESP_PCI) += esp-pci.o
-obj-$(CONFIG_PSERIES) += spapr_vscsi.o
+obj-$(CONFIG_SPAPR_VSCSI) += spapr_vscsi.o
ifeq ($(CONFIG_VIRTIO_SCSI),y)
obj-y += virtio-scsi.o virtio-scsi-dataplane.o
diff --git a/hw/sd/Kconfig b/hw/sd/Kconfig
new file mode 100644
index 0000000000..864f535011
--- /dev/null
+++ b/hw/sd/Kconfig
@@ -0,0 +1,17 @@
+config PL181
+ bool
+ select SD
+
+config SSI_SD
+ bool
+ depends on SSI
+ select SD
+
+config SD
+ bool
+
+config SDHCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select SD
diff --git a/hw/sh4/Kconfig b/hw/sh4/Kconfig
new file mode 100644
index 0000000000..8597613a35
--- /dev/null
+++ b/hw/sh4/Kconfig
@@ -0,0 +1,23 @@
+config R2D
+ bool
+ imply PCI_DEVICES
+ imply TEST_DEVICES
+ select I82378 if TEST_DEVICES
+ select IDE_MMIO
+ select PFLASH_CFI02
+ select USB_OHCI
+ select PCI
+ select SM501
+ select SH4
+
+config SHIX
+ bool
+ select SH7750
+ select SH4
+
+config SH7750
+ bool
+
+config SH4
+ bool
+ select PTIMER
diff --git a/hw/smbios/Kconfig b/hw/smbios/Kconfig
new file mode 100644
index 0000000000..553adf4bfc
--- /dev/null
+++ b/hw/smbios/Kconfig
@@ -0,0 +1,2 @@
+config SMBIOS
+ bool
diff --git a/hw/sparc/Kconfig b/hw/sparc/Kconfig
new file mode 100644
index 0000000000..2a83a8010e
--- /dev/null
+++ b/hw/sparc/Kconfig
@@ -0,0 +1,26 @@
+config SUN4M
+ bool
+ imply TCX
+ imply CG3
+ select CS4231
+ select ECCMEMCTL
+ select EMPTY_SLOT
+ select ESCC
+ select ESP
+ select FDC
+ select SLAVIO
+ select LANCE
+ select M48T59
+ select STP2000
+
+config LEON3
+ bool
+ select GRLIB
+
+config GRLIB
+ bool
+ select PTIMER
+
+config SLAVIO
+ bool
+ select PTIMER
diff --git a/hw/sparc64/Kconfig b/hw/sparc64/Kconfig
new file mode 100644
index 0000000000..4a8166ebb7
--- /dev/null
+++ b/hw/sparc64/Kconfig
@@ -0,0 +1,19 @@
+config SUN4U
+ bool
+ imply PCI_DEVICES
+ imply SUNHME
+ imply TEST_DEVICES
+ select M48T59
+ select ISA_BUS
+ select FDC
+ select SERIAL_ISA
+ select PCI_SABRE
+ select IDE_CMD646
+ select PARALLEL
+ select PCKBD
+ select SIMBA
+
+config NIAGARA
+ bool
+ select EMPTY_SLOT
+ select SUN4V_RTC
diff --git a/hw/ssi/Kconfig b/hw/ssi/Kconfig
new file mode 100644
index 0000000000..9e54a0c8dd
--- /dev/null
+++ b/hw/ssi/Kconfig
@@ -0,0 +1,18 @@
+config PL022
+ bool
+ select SSI
+
+config SSI
+ bool
+
+config XILINX_SPI
+ bool
+ select SSI
+
+config XILINX_SPIPS
+ bool
+ select SSI
+
+config STM32F2XX_SPI
+ bool
+ select SSI
diff --git a/hw/timer/Kconfig b/hw/timer/Kconfig
new file mode 100644
index 0000000000..51921eb63f
--- /dev/null
+++ b/hw/timer/Kconfig
@@ -0,0 +1,63 @@
+config ARM_TIMER
+ bool
+ select PTIMER
+
+config ARM_MPTIMER
+ bool
+ select PTIMER
+
+config A9_GTIMER
+ bool
+
+config DS1338
+ bool
+ depends on I2C
+
+config HPET
+ bool
+ default y if PC
+
+config I8254
+ bool
+
+config M41T80
+ bool
+ depends on I2C
+
+config M48T59
+ bool
+
+config PL031
+ bool
+
+config TWL92230
+ bool
+ depends on I2C
+
+config XLNX_ZYNQMP
+ bool
+
+config ALTERA_TIMER
+ bool
+ select PTIMER
+
+config MC146818RTC
+ bool
+
+config ALLWINNER_A10_PIT
+ bool
+ select PTIMER
+
+config STM32F2XX_TIMER
+ bool
+
+config SUN4V_RTC
+ bool
+
+config CMSDK_APB_TIMER
+ bool
+ select PTIMER
+
+config CMSDK_APB_DUALTIMER
+ bool
+ select PTIMER
diff --git a/hw/tpm/Kconfig b/hw/tpm/Kconfig
new file mode 100644
index 0000000000..4c8ee87d67
--- /dev/null
+++ b/hw/tpm/Kconfig
@@ -0,0 +1,24 @@
+config TPMDEV
+ bool
+ depends on TPM
+
+config TPM_TIS
+ bool
+ depends on TPM && ISA_BUS
+ select TPMDEV
+
+config TPM_CRB
+ bool
+ depends on TPM && PC
+ select TPMDEV
+
+config TPM_PASSTHROUGH
+ bool
+ default y
+ # FIXME: should check for x86 host as well
+ depends on TPMDEV && LINUX
+
+config TPM_EMULATOR
+ bool
+ default y
+ depends on TPMDEV
diff --git a/hw/tricore/Kconfig b/hw/tricore/Kconfig
new file mode 100644
index 0000000000..9313409309
--- /dev/null
+++ b/hw/tricore/Kconfig
@@ -0,0 +1,2 @@
+config TRICORE
+ bool
diff --git a/hw/unicore32/Kconfig b/hw/unicore32/Kconfig
new file mode 100644
index 0000000000..4443a29dd2
--- /dev/null
+++ b/hw/unicore32/Kconfig
@@ -0,0 +1,5 @@
+config PUV3
+ bool
+ select ISA_BUS
+ select PCKBD
+ select PTIMER
diff --git a/hw/usb/Kconfig b/hw/usb/Kconfig
new file mode 100644
index 0000000000..a1b7acb12a
--- /dev/null
+++ b/hw/usb/Kconfig
@@ -0,0 +1,91 @@
+config USB
+ bool
+
+config USB_UHCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select USB
+
+config USB_OHCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select USB
+
+config USB_EHCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select USB
+
+config USB_EHCI_SYSBUS
+ bool
+ select USB
+
+config USB_XHCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select USB
+
+config USB_XHCI_NEC
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select USB
+
+config USB_MUSB
+ bool
+ select USB
+
+config TUSB6010
+ bool
+ select USB_MUSB
+
+config USB_TABLET_WACOM
+ bool
+ default y
+ depends on USB
+
+config USB_STORAGE_BOT
+ bool
+ default y
+ depends on USB
+ select SCSI
+
+config USB_STORAGE_UAS
+ bool
+ default y
+ depends on USB
+ select SCSI
+
+config USB_AUDIO
+ bool
+ default y
+ depends on USB
+
+config USB_SERIAL
+ bool
+ default y
+ depends on USB
+
+config USB_NETWORK
+ bool
+ default y
+ depends on USB
+
+config USB_BLUETOOTH
+ bool
+ default y
+ depends on USB
+
+config USB_SMARTCARD
+ bool
+ default y
+ depends on USB
+
+config USB_STORAGE_MTP
+ bool
+ default y
+ depends on USB
diff --git a/hw/usb/Makefile.objs b/hw/usb/Makefile.objs
index 41be700812..2b929649ac 100644
--- a/hw/usb/Makefile.objs
+++ b/hw/usb/Makefile.objs
@@ -6,7 +6,7 @@ common-obj-$(CONFIG_USB) += desc.o desc-msos.o
common-obj-$(CONFIG_USB_UHCI) += hcd-uhci.o
common-obj-$(CONFIG_USB_OHCI) += hcd-ohci.o
common-obj-$(CONFIG_USB_EHCI) += hcd-ehci.o hcd-ehci-pci.o
-common-obj-$(CONFIG_USB_EHCI_SYSBUS) += hcd-ehci-sysbus.o
+common-obj-$(CONFIG_USB_EHCI_SYSBUS) += hcd-ehci.o hcd-ehci-sysbus.o
common-obj-$(CONFIG_USB_XHCI) += hcd-xhci.o
common-obj-$(CONFIG_USB_XHCI_NEC) += hcd-xhci-nec.o
common-obj-$(CONFIG_USB_MUSB) += hcd-musb.o
diff --git a/hw/vfio/Kconfig b/hw/vfio/Kconfig
new file mode 100644
index 0000000000..ebda9fdf22
--- /dev/null
+++ b/hw/vfio/Kconfig
@@ -0,0 +1,36 @@
+config VFIO
+ bool
+ depends on LINUX
+
+config VFIO_PCI
+ bool
+ select VFIO
+ depends on LINUX
+
+config VFIO_CCW
+ bool
+ default y
+ select VFIO
+ depends on LINUX && S390_CCW_VIRTIO
+
+config VFIO_PLATFORM
+ bool
+ default y
+ select VFIO
+ depends on LINUX && PLATFORM_BUS
+
+config VFIO_XGMAC
+ bool
+ default y
+ depends on VFIO_PLATFORM
+
+config VFIO_AMD_XGBE
+ bool
+ default y
+ depends on VFIO_PLATFORM
+
+config VFIO_AP
+ bool
+ default y
+ select VFIO
+ depends on LINUX && S390_CCW_VIRTIO
diff --git a/hw/virtio/Kconfig b/hw/virtio/Kconfig
new file mode 100644
index 0000000000..e0452de4ba
--- /dev/null
+++ b/hw/virtio/Kconfig
@@ -0,0 +1,31 @@
+config VIRTIO
+ bool
+
+config VIRTIO_RNG
+ bool
+ default y
+ depends on VIRTIO
+
+config VIRTIO_PCI
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+ select VIRTIO
+
+config VIRTIO_MMIO
+ bool
+ select VIRTIO
+
+config VIRTIO_CCW
+ bool
+ select VIRTIO
+
+config VIRTIO_BALLOON
+ bool
+ default y
+ depends on VIRTIO
+
+config VIRTIO_CRYPTO
+ bool
+ default y
+ depends on VIRTIO
diff --git a/hw/virtio/Makefile.objs b/hw/virtio/Makefile.objs
index a3eb8ed866..f2ab667a21 100644
--- a/hw/virtio/Makefile.objs
+++ b/hw/virtio/Makefile.objs
@@ -29,6 +29,8 @@ obj-$(CONFIG_VIRTIO_BLK) += virtio-blk-pci.o
obj-$(CONFIG_VIRTIO_NET) += virtio-net-pci.o
obj-$(CONFIG_VIRTIO_SERIAL) += virtio-serial-pci.o
endif
+else
+common-obj-y += vhost-stub.o
endif
common-obj-$(CONFIG_ALL) += vhost-stub.o
diff --git a/hw/watchdog/Kconfig b/hw/watchdog/Kconfig
new file mode 100644
index 0000000000..2118d897c9
--- /dev/null
+++ b/hw/watchdog/Kconfig
@@ -0,0 +1,16 @@
+config CMSDK_APB_WATCHDOG
+ bool
+ select PTIMER
+
+config WDT_IB6300ESB
+ bool
+ default y if PCI_DEVICES
+ depends on PCI
+
+config WDT_IB700
+ bool
+ default y
+ depends on ISA_BUS
+
+config WDT_DIAG288
+ bool
diff --git a/hw/xtensa/Kconfig b/hw/xtensa/Kconfig
new file mode 100644
index 0000000000..d72817d012
--- /dev/null
+++ b/hw/xtensa/Kconfig
@@ -0,0 +1,8 @@
+config XTENSA_SIM
+ bool
+
+config XTENSA_XTFPGA
+ bool
+ select OPENCORES_ETH
+ select PFLASH_CFI01
+ select SERIAL
diff --git a/hw/xtensa/Makefile.objs b/hw/xtensa/Makefile.objs
index fa86730e23..0bbfccd6de 100644
--- a/hw/xtensa/Makefile.objs
+++ b/hw/xtensa/Makefile.objs
@@ -2,4 +2,4 @@ obj-y += mx_pic.o
obj-y += pic_cpu.o
obj-y += xtensa_memory.o
obj-$(CONFIG_XTENSA_SIM) += sim.o
-obj-$(CONFIG_XTENSA_FPGA) += xtfpga.o
+obj-$(CONFIG_XTENSA_XTFPGA) += xtfpga.o