Block device patches patches for 2021-12-15
-----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEENUvIs9frKmtoZ05fOHC0AOuRhlMFAmG59HYSHGFybWJydUBy ZWRoYXQuY29tAAoJEDhwtADrkYZT5rEP/1tjHx9pZrpmIA3uJ8jIeoVJ1tkkr2VU vXF7hqypwgYOBOXlGmmqk3V4cN7/Yg23Xj6EeuO7FTdJOdAuucesChUC9sW38842 N3Ba1Aj8cOVcAAxYckRZGyoTyM3xqcEit1Fs07HFRYRPFeGMZ7Cm7Nn0mUNARWC3 d/ABtbWzYmF6thE3jDCGDdA+YrmyqLACw513QupXbRmJ0TxR3/NArwa2i9yUOuHI tAlSK4ZW+uPcR/5ezenWzynQyKwH/MBxG/voPYCFIeRzYK0/mHX0CLg7a4EW/p+B /q72FYztEDfbA6RfJMlhZPBGY9KFviAWWa2GT4JAb8CGh2cCx0GgbPZc0Q8k/oYl Ryqbx0g93ZKHLuePj32XX2MAReVfTW+kAENcGBcJYfYk45BaKi1VFKVEd6AHt7I8 sPfZaX79EJlVpTGH3UaK+tcKtGQwDUvabESS5kkCjFcypdawXOwLJZucaLbIvDzR qPdd3YZiPU99jH2peYflsb36xOSxV3Q3RZ7oyVfi5TwYFNkDR9eaBjLp4VAqdHjy gjTWEOQlJmbSVuOJ4HTryT/FuO4kcSRnEESCjdZYjttqqDJD7gPjcBkwOhi1p1e8 UNr87yfbYcURgTHlJn+hs5HWLSS8g93OG1+j3rx7i70gPc1p/7gjfqTvPYbj9PfX PGyeMFLjbWf3 =rLNk -----END PGP SIGNATURE----- Merge tag 'pull-block-2021-12-15' of git://repo.or.cz/qemu/armbru into staging Block device patches patches for 2021-12-15 # gpg: Signature made Wed 15 Dec 2021 05:58:14 AM PST # gpg: using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653 # gpg: issuer "armbru@redhat.com" # gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full] # gpg: aka "Markus Armbruster <armbru@pond.sub.org>" [full] * tag 'pull-block-2021-12-15' of git://repo.or.cz/qemu/armbru: blockdev: Drop unused drive_get_next() hw/arm/aspeed: Replace drive_get_next() by drive_get() hw/arm/xilinx_zynq: Replace drive_get_next() by drive_get() hw/arm/xlnx-zcu102: Replace drive_get_next() by drive_get() hw/microblaze: Replace drive_get_next() by drive_get() hw/arm/xlnx-versal-virt: Replace drive_get_next() by drive_get() hw/arm/mcimx7d-sabre: Replace drive_get_next() by drive_get() hw/arm/mcimx6ul-evk: Replace drive_get_next() by drive_get() hw/arm/imx25_pdk: Replace drive_get_next() by drive_get() hw/arm/versatilepb hw/arm/vexpress: Replace drive_get_next() by drive_get() hw/arm/npcm7xx_boards: Replace drive_get_next() by drive_get() hw: Replace trivial drive_get_next() by drive_get() hw/sd/ssi-sd: Do not create SD card within controller's realize Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
e630bc7ec9
10
blockdev.c
10
blockdev.c
@ -303,16 +303,6 @@ int drive_get_max_bus(BlockInterfaceType type)
|
||||
return max_bus;
|
||||
}
|
||||
|
||||
/* Get a block device. This should only be used for single-drive devices
|
||||
(e.g. SD/Floppy/MTD). Multi-disk devices (scsi/ide) should use the
|
||||
appropriate bus. */
|
||||
DriveInfo *drive_get_next(BlockInterfaceType type)
|
||||
{
|
||||
static int next_block_unit[IF_COUNT];
|
||||
|
||||
return drive_get(type, 0, next_block_unit[type]++);
|
||||
}
|
||||
|
||||
static void bdrv_format_print(void *opaque, const char *name)
|
||||
{
|
||||
qemu_printf(" %s", name);
|
||||
|
@ -284,12 +284,13 @@ static void write_boot_rom(DriveInfo *dinfo, hwaddr addr, size_t rom_size,
|
||||
}
|
||||
|
||||
static void aspeed_board_init_flashes(AspeedSMCState *s,
|
||||
const char *flashtype)
|
||||
const char *flashtype,
|
||||
int unit0)
|
||||
{
|
||||
int i ;
|
||||
|
||||
for (i = 0; i < s->num_cs; ++i) {
|
||||
DriveInfo *dinfo = drive_get_next(IF_MTD);
|
||||
DriveInfo *dinfo = drive_get(IF_MTD, 0, unit0 + i);
|
||||
qemu_irq cs_line;
|
||||
DeviceState *dev;
|
||||
|
||||
@ -382,10 +383,12 @@ static void aspeed_machine_init(MachineState *machine)
|
||||
"max_ram", max_ram_size - machine->ram_size);
|
||||
memory_region_add_subregion(&bmc->ram_container, machine->ram_size, &bmc->max_ram);
|
||||
|
||||
aspeed_board_init_flashes(&bmc->soc.fmc, bmc->fmc_model ?
|
||||
bmc->fmc_model : amc->fmc_model);
|
||||
aspeed_board_init_flashes(&bmc->soc.spi[0], bmc->spi_model ?
|
||||
bmc->spi_model : amc->spi_model);
|
||||
aspeed_board_init_flashes(&bmc->soc.fmc,
|
||||
bmc->fmc_model ? bmc->fmc_model : amc->fmc_model,
|
||||
0);
|
||||
aspeed_board_init_flashes(&bmc->soc.spi[0],
|
||||
bmc->spi_model ? bmc->spi_model : amc->spi_model,
|
||||
bmc->soc.fmc.num_cs);
|
||||
|
||||
/* Install first FMC flash content as a boot rom. */
|
||||
if (drive0) {
|
||||
@ -435,11 +438,13 @@ static void aspeed_machine_init(MachineState *machine)
|
||||
}
|
||||
|
||||
for (i = 0; i < bmc->soc.sdhci.num_slots; i++) {
|
||||
sdhci_attach_drive(&bmc->soc.sdhci.slots[i], drive_get_next(IF_SD));
|
||||
sdhci_attach_drive(&bmc->soc.sdhci.slots[i],
|
||||
drive_get(IF_SD, 0, i));
|
||||
}
|
||||
|
||||
if (bmc->soc.emmc.num_slots) {
|
||||
sdhci_attach_drive(&bmc->soc.emmc.slots[0], drive_get_next(IF_SD));
|
||||
sdhci_attach_drive(&bmc->soc.emmc.slots[0],
|
||||
drive_get(IF_SD, 0, bmc->soc.sdhci.num_slots));
|
||||
}
|
||||
|
||||
arm_load_kernel(ARM_CPU(first_cpu), machine, &aspeed_board_binfo);
|
||||
|
@ -81,7 +81,7 @@ static void cubieboard_init(MachineState *machine)
|
||||
}
|
||||
|
||||
/* Retrieve SD bus */
|
||||
di = drive_get_next(IF_SD);
|
||||
di = drive_get(IF_SD, 0, 0);
|
||||
blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
bus = qdev_get_child_bus(DEVICE(a10), "sd-bus");
|
||||
|
||||
|
@ -123,7 +123,7 @@ static void imx25_pdk_init(MachineState *machine)
|
||||
DriveInfo *di;
|
||||
BlockBackend *blk;
|
||||
|
||||
di = drive_get_next(IF_SD);
|
||||
di = drive_get(IF_SD, 0, i);
|
||||
blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
bus = qdev_get_child_bus(DEVICE(&s->soc.esdhc[i]), "sd-bus");
|
||||
carddev = qdev_new(TYPE_SD_CARD);
|
||||
|
@ -649,7 +649,7 @@ static void integratorcp_init(MachineState *machine)
|
||||
qdev_get_gpio_in_named(icp, ICP_GPIO_MMC_WPROT, 0));
|
||||
qdev_connect_gpio_out_named(dev, "card-inserted", 0,
|
||||
qdev_get_gpio_in_named(icp, ICP_GPIO_MMC_CARDIN, 0));
|
||||
dinfo = drive_get_next(IF_SD);
|
||||
dinfo = drive_get(IF_SD, 0, 0);
|
||||
if (dinfo) {
|
||||
DeviceState *card;
|
||||
|
||||
|
@ -52,7 +52,7 @@ static void mcimx6ul_evk_init(MachineState *machine)
|
||||
DriveInfo *di;
|
||||
BlockBackend *blk;
|
||||
|
||||
di = drive_get_next(IF_SD);
|
||||
di = drive_get(IF_SD, 0, i);
|
||||
blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
bus = qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus");
|
||||
carddev = qdev_new(TYPE_SD_CARD);
|
||||
|
@ -52,7 +52,7 @@ static void mcimx7d_sabre_init(MachineState *machine)
|
||||
DriveInfo *di;
|
||||
BlockBackend *blk;
|
||||
|
||||
di = drive_get_next(IF_SD);
|
||||
di = drive_get(IF_SD, 0, i);
|
||||
blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
bus = qdev_get_child_bus(DEVICE(&s->usdhc[i]), "sd-bus");
|
||||
carddev = qdev_new(TYPE_SD_CARD);
|
||||
|
@ -45,7 +45,7 @@ static void emcraft_sf2_s2s010_init(MachineState *machine)
|
||||
DeviceState *spi_flash;
|
||||
MSF2State *soc;
|
||||
MachineClass *mc = MACHINE_GET_CLASS(machine);
|
||||
DriveInfo *dinfo = drive_get_next(IF_MTD);
|
||||
DriveInfo *dinfo = drive_get(IF_MTD, 0, 0);
|
||||
qemu_irq cs_line;
|
||||
BusState *spi_bus;
|
||||
MemoryRegion *sysmem = get_system_memory();
|
||||
|
@ -83,9 +83,9 @@ static void npcm7xx_connect_dram(NPCM7xxState *soc, MemoryRegion *dram)
|
||||
&error_abort);
|
||||
}
|
||||
|
||||
static void sdhci_attach_drive(SDHCIState *sdhci)
|
||||
static void sdhci_attach_drive(SDHCIState *sdhci, int unit)
|
||||
{
|
||||
DriveInfo *di = drive_get_next(IF_SD);
|
||||
DriveInfo *di = drive_get(IF_SD, 0, unit);
|
||||
BlockBackend *blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
|
||||
BusState *bus = qdev_get_child_bus(DEVICE(sdhci), "sd-bus");
|
||||
@ -373,7 +373,7 @@ static void quanta_gbs_init(MachineState *machine)
|
||||
drive_get(IF_MTD, 0, 0));
|
||||
|
||||
quanta_gbs_i2c_init(soc);
|
||||
sdhci_attach_drive(&soc->mmc.sdhci);
|
||||
sdhci_attach_drive(&soc->mmc.sdhci, 0);
|
||||
npcm7xx_load_kernel(machine, soc);
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,7 @@ static void orangepi_init(MachineState *machine)
|
||||
qdev_realize(DEVICE(h3), NULL, &error_abort);
|
||||
|
||||
/* Retrieve SD bus */
|
||||
di = drive_get_next(IF_SD);
|
||||
di = drive_get(IF_SD, 0, 0);
|
||||
blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
bus = qdev_get_child_bus(DEVICE(h3), "sd-bus");
|
||||
|
||||
|
@ -284,7 +284,7 @@ static void raspi_machine_init(MachineState *machine)
|
||||
qdev_realize(DEVICE(&s->soc), NULL, &error_fatal);
|
||||
|
||||
/* Create and plug in the SD cards */
|
||||
di = drive_get_next(IF_SD);
|
||||
di = drive_get(IF_SD, 0, 0);
|
||||
blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
bus = qdev_get_child_bus(DEVICE(&s->soc), "sd-bus");
|
||||
if (bus == NULL) {
|
||||
|
@ -237,7 +237,7 @@ static void realview_init(MachineState *machine,
|
||||
qemu_irq_invert(qdev_get_gpio_in(gpio2, 0)));
|
||||
qdev_connect_gpio_out_named(dev, "card-read-only", 0, mmc_irq[0]);
|
||||
qdev_connect_gpio_out_named(dev, "card-inserted", 0, mmc_irq[1]);
|
||||
dinfo = drive_get_next(IF_SD);
|
||||
dinfo = drive_get(IF_SD, 0, 0);
|
||||
if (dinfo) {
|
||||
DeviceState *card;
|
||||
|
||||
|
@ -76,7 +76,7 @@ static void sabrelite_init(MachineState *machine)
|
||||
if (spi_bus) {
|
||||
DeviceState *flash_dev;
|
||||
qemu_irq cs_line;
|
||||
DriveInfo *dinfo = drive_get_next(IF_MTD);
|
||||
DriveInfo *dinfo = drive_get(IF_MTD, 0, 0);
|
||||
|
||||
flash_dev = qdev_new("sst25vf016b");
|
||||
if (dinfo) {
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/sd/sd.h"
|
||||
#include "hw/ssi/ssi.h"
|
||||
#include "hw/arm/boot.h"
|
||||
#include "qemu/timer.h"
|
||||
@ -1157,6 +1158,9 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
|
||||
void *bus;
|
||||
DeviceState *sddev;
|
||||
DeviceState *ssddev;
|
||||
DriveInfo *dinfo;
|
||||
DeviceState *carddev;
|
||||
BlockBackend *blk;
|
||||
|
||||
/*
|
||||
* Some boards have both an OLED controller and SD card connected to
|
||||
@ -1221,8 +1225,17 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
|
||||
* - Make the ssd0323 OLED controller chipselect active-low
|
||||
*/
|
||||
bus = qdev_get_child_bus(dev, "ssi");
|
||||
|
||||
sddev = ssi_create_peripheral(bus, "ssi-sd");
|
||||
|
||||
dinfo = drive_get(IF_SD, 0, 0);
|
||||
blk = dinfo ? blk_by_legacy_dinfo(dinfo) : NULL;
|
||||
carddev = qdev_new(TYPE_SD_CARD);
|
||||
qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal);
|
||||
qdev_prop_set_bit(carddev, "spi", true);
|
||||
qdev_realize_and_unref(carddev,
|
||||
qdev_get_child_bus(sddev, "sd-bus"),
|
||||
&error_fatal);
|
||||
|
||||
ssddev = ssi_create_peripheral(bus, "ssd0323");
|
||||
gpio_out[GPIO_D][0] = qemu_irq_split(
|
||||
qdev_get_gpio_in_named(sddev, SSI_GPIO_CS, 0),
|
||||
|
@ -310,7 +310,7 @@ static void versatile_init(MachineState *machine, int board_id)
|
||||
qdev_connect_gpio_out(sysctl, 0, qdev_get_gpio_in(dev, 0));
|
||||
|
||||
dev = sysbus_create_varargs("pl181", 0x10005000, sic[22], sic[1], NULL);
|
||||
dinfo = drive_get_next(IF_SD);
|
||||
dinfo = drive_get(IF_SD, 0, 0);
|
||||
if (dinfo) {
|
||||
DeviceState *card;
|
||||
|
||||
@ -322,7 +322,7 @@ static void versatile_init(MachineState *machine, int board_id)
|
||||
}
|
||||
|
||||
dev = sysbus_create_varargs("pl181", 0x1000b000, sic[23], sic[2], NULL);
|
||||
dinfo = drive_get_next(IF_SD);
|
||||
dinfo = drive_get(IF_SD, 0, 1);
|
||||
if (dinfo) {
|
||||
DeviceState *card;
|
||||
|
||||
|
@ -624,7 +624,7 @@ static void vexpress_common_init(MachineState *machine)
|
||||
qdev_get_gpio_in(sysctl, ARM_SYSCTL_GPIO_MMC_WPROT));
|
||||
qdev_connect_gpio_out_named(dev, "card-inserted", 0,
|
||||
qdev_get_gpio_in(sysctl, ARM_SYSCTL_GPIO_MMC_CARDIN));
|
||||
dinfo = drive_get_next(IF_SD);
|
||||
dinfo = drive_get(IF_SD, 0, 0);
|
||||
if (dinfo) {
|
||||
DeviceState *card;
|
||||
|
||||
@ -656,7 +656,7 @@ static void vexpress_common_init(MachineState *machine)
|
||||
|
||||
sysbus_create_simple("pl111", map[VE_CLCD], pic[14]);
|
||||
|
||||
dinfo = drive_get_next(IF_PFLASH);
|
||||
dinfo = drive_get(IF_PFLASH, 0, 0);
|
||||
pflash0 = ve_pflash_cfi01_register(map[VE_NORFLASH0], "vexpress.flash0",
|
||||
dinfo);
|
||||
if (!pflash0) {
|
||||
@ -672,7 +672,7 @@ static void vexpress_common_init(MachineState *machine)
|
||||
memory_region_add_subregion(sysmem, map[VE_NORFLASHALIAS], flashalias);
|
||||
}
|
||||
|
||||
dinfo = drive_get_next(IF_PFLASH);
|
||||
dinfo = drive_get(IF_PFLASH, 0, 1);
|
||||
if (!ve_pflash_cfi01_register(map[VE_NORFLASH1], "vexpress.flash1",
|
||||
dinfo)) {
|
||||
error_report("vexpress: error registering flash 1");
|
||||
|
@ -125,9 +125,10 @@ static void gem_init(NICInfo *nd, uint32_t base, qemu_irq irq)
|
||||
sysbus_connect_irq(s, 0, irq);
|
||||
}
|
||||
|
||||
static inline void zynq_init_spi_flashes(uint32_t base_addr, qemu_irq irq,
|
||||
bool is_qspi)
|
||||
static inline int zynq_init_spi_flashes(uint32_t base_addr, qemu_irq irq,
|
||||
bool is_qspi, int unit0)
|
||||
{
|
||||
int unit = unit0;
|
||||
DeviceState *dev;
|
||||
SysBusDevice *busdev;
|
||||
SSIBus *spi;
|
||||
@ -156,7 +157,7 @@ static inline void zynq_init_spi_flashes(uint32_t base_addr, qemu_irq irq,
|
||||
spi = (SSIBus *)qdev_get_child_bus(dev, bus_name);
|
||||
|
||||
for (j = 0; j < num_ss; ++j) {
|
||||
DriveInfo *dinfo = drive_get_next(IF_MTD);
|
||||
DriveInfo *dinfo = drive_get(IF_MTD, 0, unit++);
|
||||
flash_dev = qdev_new("n25q128");
|
||||
if (dinfo) {
|
||||
qdev_prop_set_drive_err(flash_dev, "drive",
|
||||
@ -170,6 +171,7 @@ static inline void zynq_init_spi_flashes(uint32_t base_addr, qemu_irq irq,
|
||||
}
|
||||
}
|
||||
|
||||
return unit;
|
||||
}
|
||||
|
||||
static void zynq_init(MachineState *machine)
|
||||
@ -247,9 +249,9 @@ static void zynq_init(MachineState *machine)
|
||||
pic[n] = qdev_get_gpio_in(dev, n);
|
||||
}
|
||||
|
||||
zynq_init_spi_flashes(0xE0006000, pic[58-IRQ_OFFSET], false);
|
||||
zynq_init_spi_flashes(0xE0007000, pic[81-IRQ_OFFSET], false);
|
||||
zynq_init_spi_flashes(0xE000D000, pic[51-IRQ_OFFSET], true);
|
||||
n = zynq_init_spi_flashes(0xE0006000, pic[58 - IRQ_OFFSET], false, 0);
|
||||
n = zynq_init_spi_flashes(0xE0007000, pic[81 - IRQ_OFFSET], false, n);
|
||||
n = zynq_init_spi_flashes(0xE000D000, pic[51 - IRQ_OFFSET], true, n);
|
||||
|
||||
sysbus_create_simple(TYPE_CHIPIDEA, 0xE0002000, pic[53 - IRQ_OFFSET]);
|
||||
sysbus_create_simple(TYPE_CHIPIDEA, 0xE0003000, pic[76 - IRQ_OFFSET]);
|
||||
@ -298,7 +300,7 @@ static void zynq_init(MachineState *machine)
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, hci_addr);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[hci_irq - IRQ_OFFSET]);
|
||||
|
||||
di = drive_get_next(IF_SD);
|
||||
di = drive_get(IF_SD, 0, n);
|
||||
blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
carddev = qdev_new(TYPE_SD_CARD);
|
||||
qdev_prop_set_drive_err(carddev, "drive", blk, &error_fatal);
|
||||
|
@ -669,7 +669,8 @@ static void versal_virt_init(MachineState *machine)
|
||||
|
||||
/* Plugin SD cards. */
|
||||
for (i = 0; i < ARRAY_SIZE(s->soc.pmc.iou.sd); i++) {
|
||||
sd_plugin_card(&s->soc.pmc.iou.sd[i], drive_get_next(IF_SD));
|
||||
sd_plugin_card(&s->soc.pmc.iou.sd[i],
|
||||
drive_get(IF_SD, 0, i));
|
||||
}
|
||||
|
||||
s->binfo.ram_size = machine->ram_size;
|
||||
|
@ -169,7 +169,7 @@ static void xlnx_zcu102_init(MachineState *machine)
|
||||
/* Create and plug in the SD cards */
|
||||
for (i = 0; i < XLNX_ZYNQMP_NUM_SDHCI; i++) {
|
||||
BusState *bus;
|
||||
DriveInfo *di = drive_get_next(IF_SD);
|
||||
DriveInfo *di = drive_get(IF_SD, 0, i);
|
||||
BlockBackend *blk = di ? blk_by_legacy_dinfo(di) : NULL;
|
||||
DeviceState *carddev;
|
||||
char *bus_name;
|
||||
@ -190,7 +190,7 @@ static void xlnx_zcu102_init(MachineState *machine)
|
||||
BusState *spi_bus;
|
||||
DeviceState *flash_dev;
|
||||
qemu_irq cs_line;
|
||||
DriveInfo *dinfo = drive_get_next(IF_MTD);
|
||||
DriveInfo *dinfo = drive_get(IF_MTD, 0, i);
|
||||
gchar *bus_name = g_strdup_printf("spi%d", i);
|
||||
|
||||
spi_bus = qdev_get_child_bus(DEVICE(&s->soc), bus_name);
|
||||
@ -212,7 +212,7 @@ static void xlnx_zcu102_init(MachineState *machine)
|
||||
BusState *spi_bus;
|
||||
DeviceState *flash_dev;
|
||||
qemu_irq cs_line;
|
||||
DriveInfo *dinfo = drive_get_next(IF_MTD);
|
||||
DriveInfo *dinfo = drive_get(IF_MTD, 0, XLNX_ZYNQMP_NUM_SPIS + i);
|
||||
int bus = i / XLNX_ZYNQMP_NUM_QSPI_BUS_CS;
|
||||
gchar *bus_name = g_strdup_printf("qspi%d", bus);
|
||||
|
||||
|
@ -183,7 +183,7 @@ petalogix_ml605_init(MachineState *machine)
|
||||
spi = (SSIBus *)qdev_get_child_bus(dev, "spi");
|
||||
|
||||
for (i = 0; i < NUM_SPI_FLASHES; i++) {
|
||||
DriveInfo *dinfo = drive_get_next(IF_MTD);
|
||||
DriveInfo *dinfo = drive_get(IF_MTD, 0, i);
|
||||
qemu_irq cs_line;
|
||||
|
||||
dev = qdev_new("n25q128");
|
||||
|
@ -209,9 +209,9 @@ static void sifive_u_otp_realize(DeviceState *dev, Error **errp)
|
||||
TYPE_SIFIVE_U_OTP, SIFIVE_U_OTP_REG_SIZE);
|
||||
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mmio);
|
||||
|
||||
dinfo = drive_get_next(IF_PFLASH);
|
||||
dinfo = drive_get(IF_PFLASH, 0, 0);
|
||||
if (!dinfo) {
|
||||
dinfo = drive_get_next(IF_NONE);
|
||||
dinfo = drive_get(IF_NONE, 0, 0);
|
||||
if (dinfo) {
|
||||
warn_report("using \"-drive if=none\" for the OTP is deprecated, "
|
||||
"use \"-drive if=pflash\" instead.");
|
||||
|
@ -458,7 +458,7 @@ static void microchip_icicle_kit_machine_init(MachineState *machine)
|
||||
target_ulong firmware_end_addr, kernel_start_addr;
|
||||
uint64_t kernel_entry;
|
||||
uint32_t fdt_load_addr;
|
||||
DriveInfo *dinfo = drive_get_next(IF_SD);
|
||||
DriveInfo *dinfo = drive_get(IF_SD, 0, 0);
|
||||
|
||||
/* Sanity check on RAM size */
|
||||
if (machine->ram_size < mc->default_ram_size) {
|
||||
|
@ -46,6 +46,7 @@
|
||||
#include "hw/char/serial.h"
|
||||
#include "hw/cpu/cluster.h"
|
||||
#include "hw/misc/unimp.h"
|
||||
#include "hw/sd/sd.h"
|
||||
#include "hw/ssi/ssi.h"
|
||||
#include "target/riscv/cpu.h"
|
||||
#include "hw/riscv/riscv_hart.h"
|
||||
@ -536,7 +537,8 @@ static void sifive_u_machine_init(MachineState *machine)
|
||||
uint32_t fdt_load_addr;
|
||||
uint64_t kernel_entry;
|
||||
DriveInfo *dinfo;
|
||||
DeviceState *flash_dev, *sd_dev;
|
||||
BlockBackend *blk;
|
||||
DeviceState *flash_dev, *sd_dev, *card_dev;
|
||||
qemu_irq flash_cs, sd_cs;
|
||||
|
||||
/* Initialize SoC */
|
||||
@ -670,7 +672,7 @@ static void sifive_u_machine_init(MachineState *machine)
|
||||
|
||||
/* Connect an SPI flash to SPI0 */
|
||||
flash_dev = qdev_new("is25wp256");
|
||||
dinfo = drive_get_next(IF_MTD);
|
||||
dinfo = drive_get(IF_MTD, 0, 0);
|
||||
if (dinfo) {
|
||||
qdev_prop_set_drive_err(flash_dev, "drive",
|
||||
blk_by_legacy_dinfo(dinfo),
|
||||
@ -686,6 +688,15 @@ static void sifive_u_machine_init(MachineState *machine)
|
||||
|
||||
sd_cs = qdev_get_gpio_in_named(sd_dev, SSI_GPIO_CS, 0);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.spi2), 1, sd_cs);
|
||||
|
||||
dinfo = drive_get(IF_SD, 0, 0);
|
||||
blk = dinfo ? blk_by_legacy_dinfo(dinfo) : NULL;
|
||||
card_dev = qdev_new(TYPE_SD_CARD);
|
||||
qdev_prop_set_drive_err(card_dev, "drive", blk, &error_fatal);
|
||||
qdev_prop_set_bit(card_dev, "spi", true);
|
||||
qdev_realize_and_unref(card_dev,
|
||||
qdev_get_child_bus(sd_dev, "sd-bus"),
|
||||
&error_fatal);
|
||||
}
|
||||
|
||||
static bool sifive_u_machine_get_start_in_flash(Object *obj, Error **errp)
|
||||
|
@ -368,36 +368,9 @@ static const VMStateDescription vmstate_ssi_sd = {
|
||||
|
||||
static void ssi_sd_realize(SSIPeripheral *d, Error **errp)
|
||||
{
|
||||
ERRP_GUARD();
|
||||
ssi_sd_state *s = SSI_SD(d);
|
||||
DeviceState *carddev;
|
||||
DriveInfo *dinfo;
|
||||
|
||||
qbus_init(&s->sdbus, sizeof(s->sdbus), TYPE_SD_BUS, DEVICE(d), "sd-bus");
|
||||
|
||||
/* Create and plug in the sd card */
|
||||
/* FIXME use a qdev drive property instead of drive_get_next() */
|
||||
dinfo = drive_get_next(IF_SD);
|
||||
carddev = qdev_new(TYPE_SD_CARD);
|
||||
if (dinfo) {
|
||||
if (!qdev_prop_set_drive_err(carddev, "drive",
|
||||
blk_by_legacy_dinfo(dinfo), errp)) {
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
if (!object_property_set_bool(OBJECT(carddev), "spi", true, errp)) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!qdev_realize_and_unref(carddev, BUS(&s->sdbus), errp)) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
fail:
|
||||
error_prepend(errp, "failed to init SD card: ");
|
||||
}
|
||||
|
||||
static void ssi_sd_reset(DeviceState *dev)
|
||||
@ -426,7 +399,7 @@ static void ssi_sd_class_init(ObjectClass *klass, void *data)
|
||||
k->cs_polarity = SSI_CS_LOW;
|
||||
dc->vmsd = &vmstate_ssi_sd;
|
||||
dc->reset = ssi_sd_reset;
|
||||
/* Reason: init() method uses drive_get_next() */
|
||||
/* Reason: GPIO chip-select line should be wired up */
|
||||
dc->user_creatable = false;
|
||||
}
|
||||
|
||||
|
@ -98,7 +98,7 @@ static void add_rom_or_fail(const char *file, const hwaddr addr)
|
||||
static void niagara_init(MachineState *machine)
|
||||
{
|
||||
NiagaraBoardState *s = g_new(NiagaraBoardState, 1);
|
||||
DriveInfo *dinfo = drive_get_next(IF_PFLASH);
|
||||
DriveInfo *dinfo = drive_get(IF_PFLASH, 0, 0);
|
||||
MemoryRegion *sysmem = get_system_memory();
|
||||
|
||||
/* init CPUs */
|
||||
|
@ -50,7 +50,6 @@ void drive_check_orphaned(void);
|
||||
DriveInfo *drive_get_by_index(BlockInterfaceType type, int index);
|
||||
int drive_get_max_bus(BlockInterfaceType type);
|
||||
int drive_get_max_devs(BlockInterfaceType type);
|
||||
DriveInfo *drive_get_next(BlockInterfaceType type);
|
||||
|
||||
QemuOpts *drive_def(const char *optstr);
|
||||
QemuOpts *drive_add(BlockInterfaceType type, int index, const char *file,
|
||||
|
Loading…
Reference in New Issue
Block a user