[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

boottime usb-host support in ARMMP for cubietruck



Is it possible to enable the usb-host boot support in the ARMMP kernel
for the cubietruck in the way that the hd-media tarball used by d-i
does?

I've tried experimenting with the various options, I've narrowed it to
just the initrd. With the installer initrd, I can boot from USB and
access the USB filesystem. With the default armmp initrd, I get a
kernel panic:

[    4.879987]  sda: sda1 sda2 sda3 < sda5 >
[    4.886513] sd 0:0:0:0: [sda] Attached SCSI disk
[    4.893857] sd 0:0:0:0: Attached scsi generic sg0 type 0
Begin: Loading essential drivers ... done.
Begin: Running /scripts/init-premount ... done.
Begin: Mounting root file system ... Begin:
Running /scripts/local-top ... done. Begin: Waiting for root file
system ... done. Gave up waiting for root device.  Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/disk/by-uuid/"8c5538d5-e865-4650-a51c-ce955b6e132f" does
not exist.  Dropping to a shell! modprobe: module i8042 not found in
modules.dep [   36.102241] ehci_hcd: USB 2.0 'Enhanced' Host Controller
(EHCI) Driver [   36.110876] ehci-pci: EHCI PCI platform driver
[   36.124979] ehci-orion: EHCI orion driver
modprobe: module uhci-hcd not found in modules.dep
[   36.163008] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver


BusyBox v1.22.1 (Debian 1:1.22.0-9+b1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty; job control turned off
(initramfs) 

(/dev/sda in this case is a SATA drive which I want to ignore for the
purposes of this boot)

There is no uhci listing in the modules.dep of the running system which
accesses /dev/sdb1 just fine.

Running system installed on SATA:
# lsmod|grep hci
ohci_platform           4082  0 
ehci_platform           4562  0 
ohci_hcd               37631  1 ohci_platform
ehci_hcd               64429  1 ehci_platform
ahci_sunxi              2652  0 
libahci_platform        4679  4 ahci_sunxi
libahci                23077  1 libahci_platform
libata                161809  3 libahci,libahci_platform,ahci_sunxi

UUID="8c5538d5-e865-4650-a51c-ce955b6e132f" is the first partition of a
USB stick, which shows as /dev/sdb1 *after* boot but is not available
in the default initrd.

I've tried to tweak the default initrd manually:

Added to ohci-platform and ehci-platform modules, added these
lines to modules.dep (ignore line breaks):
kernel/drivers/usb/host/ohci-platform.ko:
kernel/drivers/usb/host/ohci-hcd.ko
kernel/drivers/usb/host/ehci-platform.ko:
kernel/drivers/usb/host/ehci-hcd.ko

Added modprobe.d/aliases.conf:
softdep uhci-hcd pre: ehci-hcd
softdep ohci-hcd pre: ehci-hcd
kernel/drivers/usb/host/ehci-platform.ko:
kernel/drivers/usb/host/ehci-hcd.ko

Briefly, before the installer starts, I can see that sdb is recognised
by either the installer kernel or the default armmp kernel but it
disappears behind the installer prompt and I can't seem to replicate
this with the default armmp initrd.

uboot commands for usb boot:

setenv autoload no
usb start
setenv initrd_high '0xffffffff'
setenv fdt_high '0xffffffff'
setenv initrd_addr_r ${ramdisk_addr_r}
setenv loadkernel 'load usb 0:1 ${kernel_addr_r} vmlinuz-3.16.0-4-armmp-lpae'
setenv loadinitrd 'load usb 0:1 ${initrd_addr_r} initrd-usb.img-3.16.0-4-armmp-lpae.u-boot; setenv initrd_size ${filesize}'
setenv loadfdt 'load usb 0:1 ${fdt_addr_r} dtb-3.16.0-4-armmp-lpae'
setenv bootargs 'console=ttyS0,115200 rw root=UUID="8c5538d5-e865-4650-a51c-ce955b6e132f" ip=dhcp'
setenv bootcmd 'run loadkernel; run loadinitrd; run loadfdt; bootz ${kernel_addr_r} ${initrd_addr_r}:${filesize} ${fdt_addr_r}'
boot


-- 


Neil Williams
=============
http://www.linux.codehelp.co.uk/

Attachment: pgpfXqORdHhAL.pgp
Description: OpenPGP digital signature


Reply to: