On Tue, Jan 12, 2016 at 05:07:08PM +0000, Scheithauer, Mario wrote:
> > -----Ursprüngliche Nachricht-----
> > Von: Kevin O'Connor [mailto:kevin@koconnor.net]
> > Gesendet: Dienstag, 12. Januar 2016 17:15
> > An: Scheithauer, Mario
> > Cc: seabios(a)seabios.org
> > Betreff: Re: [SeaBIOS] Does SeaBIOS support eMMC?
> >
> > On Mon, Jan 11, 2016 at 03:49:19PM +0000, Scheithauer, Mario wrote:
> > > First I will clone a new coreboot with an actual SeaBIOS. After that I
> > > will give you a new log.
> > > But second I think sdcard setup is not ready for JEDEC Standard
> > > 84-B51. Maybe I'm wrong with that.
> >
> > I did use that JEDEC standard as a reference when writing the code.
> >
> > > Our eMMC flash has a size of 8GB but recognized are only 2GB and I
> > > believe for switching to high-speed mode there are some more steps
> > > necessary.
> >
> > SeaBIOS does not attempt to enable high speed mode or to enable multiple read
> > data lines. The goal is just to boot the OS - the OS can then enable whatever
> > optimizations it wants.
>
> Well, I understand.
>
> > The drive is showing up as an 2TB drive, so something is clearly wrong with the
> > size detection. Upon attempting to boot from the drive, a read CRC error occurs.
> > I wonder if the drive is not in sync with the controller on the number of data lines in
> > use.
>
> I believe the mechanism to determine the size for eMMC4.5 devices are differently than up to now.
> However, that is no problem.
Yes - on v4.0 and later MMC devices SeaBIOS reads from the size from
the EXT_CSD register. The log indicates that SEND_EXT_CSD was sent,
so SeaBIOS is recognizing the hardware version, and the command
completes without error. But the size results do look suspect.
I double checked, and other users are reporting success on SeaBIOS
with v4+ eMMC devices.
> > How many SD/MMC devices are in this machine? In addition to the eMMC drive
> > that is detected, another device starts the detection on a different controller but
> > fails earlier in the process. Is that expected?
>
> We have two Storage Control Cluster, one for SDIO / SD and one for eMMC 4.5.
> In my opinion a device should be only at the second SCC connected.
> However, should the last version of Lubuntu not work with that?
> Lubuntu detects an mmc block device (mmcblk0boot0 and mmcblk0boot1).
> But the size is not correct. Both blocks have a size of 256kB.
> Fdisk cannot install a partition and ends with the error message 'failed to write disklabel: Operation not permitted'.
> Maybe we have a hardware issue, because the eMMC device is directly on the board.
To verify if Linux can use the device, I suggest disabling
CONFIG_SDCARD in SeaBIOS, hard poweroff the machine for a minute (and
pull the battery if it is a laptop), and then boot Linux from another
media. Linux should be able to detect/read/write the device. We've
seen that some eMMC devices can get stuck in a bad mode, so a full
power off may be needed.
If Linux can't detect/read/write the device, then I suggest addressing
that before looking at the SeaBIOS code.
Otherwise, can you try the SeaBIOS patch below and report the
additional debugging?
-Kevin
--- a/src/hw/sdcard.c
+++ b/src/hw/sdcard.c
@@ -490,6 +490,8 @@ sdcard_controller_setup(struct sdhci_s *regs, int prio)
, readw(®s->controller_version)
, readl(®s->cap_lo), readl(®s->cap_hi));
sdcard_reset(regs, SRF_ALL);
+ dprintf(1, "hc1=%x hc2=%x\n"
+ , readb(®s->host_control), readw(®s->host_control2));
writew(®s->irq_signal, 0);
writew(®s->irq_enable, 0x01ff);
writew(®s->irq_status, readw(®s->irq_status));
@@ -515,6 +517,8 @@ sdcard_controller_setup(struct sdhci_s *regs, int prio)
free(drive);
goto fail;
}
+ dprintf(1, "later hc1=%x hc2=%x\n"
+ , readb(®s->host_control), readw(®s->host_control2));
return;
fail:
writeb(®s->power_control, 0);