[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 1809291] Re: ARM PL181 (mmc for Security Digital Card)
[Qemu-devel] [Bug 1809291] Re: ARM PL181 (mmc for Security Digital Card) not working in Ubuntu 18.10 (CMD 2, 3 timeout). The SDC driver worked fine in Ubuntu 18.04 and earlier versions but not in Ubuntu 18.10
Thu, 20 Dec 2018 18:53:53 -0000
'Hi, from this report your setup is unclear to me'.
I am not using Linux kernel.
The t.bin image is a program built with .s and .c files using gcc-arm-none-eabi
The sdimage is just a regular 1MB file, which is used by the -sd sdmage as a
virtual SDC card for
qemu-system-arm under Ubuntu 18.10
The t.bin code calls sdc_init() to initialize the PL181 mmc card, which is
int do_command(int cmd, int arg, int resp)
*(u32 *)(base + ARGUMENT) = (u32)arg;
*(u32 *)(base + COMMAND) = 0x400 | (resp<<6) | cmd;
u32 RCA = (u32)0x45670000; // QEMU's hard-coded RCA
base = (u32)0x10005000; // PL180 base address
printf("sdc_init : ");
*(u32 *)(base + POWER) = (u32)0xBF; // power on
*(u32 *)(base + CLOCK) = (u32)0xC6; // default CLK
// send init command sequence
do_command(0, 0, MMC_RSP_NONE);// idle state
do_command(55, 0, MMC_RSP_R1); // ready state
do_command(41, 1, MMC_RSP_R3); // argument must not be zero
do_command(2, 0, MMC_RSP_R2); // ask card CID
do_command(3, RCA, MMC_RSP_R1); // assign RCA
do_command(7, RCA, MMC_RSP_R1); // transfer state: must use RCA
do_command(16, 512, MMC_RSP_R1); // set data block length
// set interrupt MASK0 registers bits = RxAvail|TxEmpty
*(u32 *)(base + MASK0) = (1<<21)|(1<<18); //0x00240000;
After each command, read the MMC status to check for errors.
Commands 2, 3, 7, 16 all failed due to timeout, indicating the MMC card does
But the PL181 does generate interrupts for read/write sector commands.
As stated before, the SAME driver code worked fine for all earlier versions of
Ubuntu: 15 to 18.04
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
ARM PL181 (mmc for Security Digital Card) not working in Ubuntu 18.10
(CMD 2,3 timeout). The SDC driver worked fine in Ubuntu 18.04 and
earlier versions but not in Ubuntu 18.10
Status in QEMU:
ARM PL181 MMC card no longer working in qemu-system-arm in Ubuntu 18.10
The MMC driver code worked fine in Ubuntu 15.10 to 18.04.
The command to run qemu-system-arm is
qemu-system-arm -M versatilepb -m 256M -sd sdimage -kernel t.bin
During SDC initialization, SDC commands 2, 3, 9, 13, 7, 16 all timeout,
which cause subsequent read/write commands 17/24 to fail also.
Tried both ARM versatilepb and realview-pb-a8, realview-pbx-a9 boards:
all the same.
To manage notifications about this bug go to: