Revision e4bcb14c hw/ppc405_boards.c

b/hw/ppc405_boards.c
197 197
    int linux_boot;
198 198
    int fl_idx, fl_sectors, len;
199 199
    int ppc_boot_device = boot_device[0];
200
    int index;
200 201

  
201 202
    /* XXX: fix this */
202 203
    ram_bases[0] = 0x00000000;
......
223 224
    bios_offset = sram_offset + sram_size;
224 225
    fl_idx = 0;
225 226
#ifdef USE_FLASH_BIOS
226
    if (pflash_table[fl_idx] != NULL) {
227
        bios_size = bdrv_getlength(pflash_table[fl_idx]);
227
    index = drive_get_index(IF_PFLASH, 0, fl_idx);
228
    if (index != -1) {
229
        bios_size = bdrv_getlength(drives_table[index].bdrv);
228 230
        fl_sectors = (bios_size + 65535) >> 16;
229 231
#ifdef DEBUG_BOARD_INIT
230 232
        printf("Register parallel flash %d size " ADDRX " at offset %08lx "
231 233
               " addr " ADDRX " '%s' %d\n",
232 234
               fl_idx, bios_size, bios_offset, -bios_size,
233
               bdrv_get_device_name(pflash_table[fl_idx]), fl_sectors);
235
               bdrv_get_device_name(drives_table[index].bdrv), fl_sectors);
234 236
#endif
235 237
        pflash_register((uint32_t)(-bios_size), bios_offset,
236
                        pflash_table[fl_idx], 65536, fl_sectors, 2,
238
                        drives_table[index].bdrv, 65536, fl_sectors, 2,
237 239
                        0x0001, 0x22DA, 0x0000, 0x0000);
238 240
        fl_idx++;
239 241
    } else
......
519 521
    int linux_boot;
520 522
    int fl_idx, fl_sectors;
521 523
    int ppc_boot_device = boot_device[0];
524
    int index;
522 525

  
523 526
    /* RAM is soldered to the board so the size cannot be changed */
524 527
    ram_bases[0] = 0x00000000;
......
536 539
#endif
537 540
    fl_idx = 0;
538 541
#if defined(USE_FLASH_BIOS)
539
    if (pflash_table[fl_idx] != NULL) {
540
        bios_size = bdrv_getlength(pflash_table[fl_idx]);
542
    index = drive_get_index(IF_PFLASH, 0, fl_idx);
543
    if (index != -1) {
544
        bios_size = bdrv_getlength(drives_table[index].bdrv);
541 545
        /* XXX: should check that size is 2MB */
542 546
        //        bios_size = 2 * 1024 * 1024;
543 547
        fl_sectors = (bios_size + 65535) >> 16;
......
545 549
        printf("Register parallel flash %d size " ADDRX " at offset %08lx "
546 550
               " addr " ADDRX " '%s' %d\n",
547 551
               fl_idx, bios_size, bios_offset, -bios_size,
548
               bdrv_get_device_name(pflash_table[fl_idx]), fl_sectors);
552
               bdrv_get_device_name(drives_table[index].bdrv), fl_sectors);
549 553
#endif
550 554
        pflash_register((uint32_t)(-bios_size), bios_offset,
551
                        pflash_table[fl_idx], 65536, fl_sectors, 4,
555
                        drives_table[index].bdrv, 65536, fl_sectors, 4,
552 556
                        0x0001, 0x22DA, 0x0000, 0x0000);
553 557
        fl_idx++;
554 558
    } else
......
571 575
    }
572 576
    bios_offset += bios_size;
573 577
    /* Register Linux flash */
574
    if (pflash_table[fl_idx] != NULL) {
575
        bios_size = bdrv_getlength(pflash_table[fl_idx]);
578
    index = drive_get_index(IF_PFLASH, 0, fl_idx);
579
    if (index != -1) {
580
        bios_size = bdrv_getlength(drives_table[index].bdrv);
576 581
        /* XXX: should check that size is 32MB */
577 582
        bios_size = 32 * 1024 * 1024;
578 583
        fl_sectors = (bios_size + 65535) >> 16;
......
580 585
        printf("Register parallel flash %d size " ADDRX " at offset %08lx "
581 586
               " addr " ADDRX " '%s'\n",
582 587
               fl_idx, bios_size, bios_offset, (target_ulong)0xfc000000,
583
               bdrv_get_device_name(pflash_table[fl_idx]));
588
               bdrv_get_device_name(drives_table[index].bdrv));
584 589
#endif
585
        pflash_register(0xfc000000, bios_offset, pflash_table[fl_idx],
590
        pflash_register(0xfc000000, bios_offset, drives_table[index].bdrv,
586 591
                        65536, fl_sectors, 4,
587 592
                        0x0001, 0x22DA, 0x0000, 0x0000);
588 593
        fl_idx++;

Also available in: Unified diff