got a working usb-host via OTGi will try to make a working EHCI, stay tuned 2011/11/15 giowck giowckln@googlemail.com:
Hi,
thank you a lot!
I will check this soon.
Am 15.11.2011 11:15, schrieb Sartakov A. Vasily:
Hallo This is a steps for get USB-otg work:
- get svn' l4linux, l4re
- cd l4linux directory apply patches:
patch -p1<drivers.diff patch -p1<arch.diff 3. make setup 4. change .config on usb_config, add in it valid CONFIG_L4_OBJ_TREE 5. make L4ARCH=arm menuconfig, 6. ordinary l4 build 7. put arm-omap3.devs in obj/l4/arm/arm-beagleboard/bin/arm_armv6/l4f 8. add: entry l4l_1 kernel fiasco -serial_esc roottask moe rom/l4l_1.cfg module l4re module ned module l4l_1.cfg module arm-omap3.devs module gumstix-fb-l4l.io module io module vmlinuz.arm module ramdisk-arm.rd
in src/l4/conf/modules.list 9. put l4l_1.cfg and gumstix-fb-l4l.io in src/l4/conf/examples 10. make uimage and choose l4l_1
Then you got around 8mb uImage, witch can boot. After that you will have BB platform sources in arch/l4/kernel/arch-arm, so, if you interesting in USB-host You should edit it I will try to do it too in nearest future, cos me need a sd/mmc and USB-host too. Btw, in our configs, all platform resources (mem io, irq) placed in single gumstix-fb-l4l.io and arm-omap3.devs cleared, it's important. if you have a same resources in both files, most of them will not work
Hit any key to stop autoboot: 0 reading l4img
8286416 bytes read ## Booting kernel from Legacy Image at 80000000 ... Image Name: L4 Image #8 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 8286352 Bytes = 7.9 MiB Load Address: 81000000 Entry Point: 81000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK
Starting kernel ...
L4 Bootstrapper Build: #8 Tue Nov 15 10:30:07 CET 2011, 4.4.1 Scanning up to 128 MB RAM Memory size is 128MB (80000000 - 88000000) RAM: 0000000080000000 - 0000000087ffffff: 131072kB Total RAM: 128MB mod10: 814e7000-817e7000: ramdisk-arm.rd mod09: 81204000-814e60a0: vmlinuz.arm mod08: 8111e000-81203074: io mod07: 8111d000-8111d97f: gumstix-fb-l4l.io mod06: 8111c000-8111c103: arm-omap3.devs mod05: 8111b000-8111b302: l4l_1.cfg mod04: 810c5000-8111a670: ned mod03: 810aa000-810c439c: l4re mod02: 8106f000-810a9b50: moe mod01: 81065000-8106e70c: sigma0 mod00: 81015000-81064ef4: fiasco Moving 11 modules to 81100000 with offset eb000 moving module 11 { 814e7000-817e7000 } -> { 815d2000-818d2000 } moving module 10 { 81204000-814e60a0 } -> { 812ef000-815d10a0 } moving module 09 { 8111e000-81203074 } -> { 81209000-812ee074 } moving module 08 { 8111d000-8111d97f } -> { 81208000-8120897f } moving module 07 { 8111c000-8111c103 } -> { 81207000-81207103 } moving module 06 { 8111b000-8111b302 } -> { 81206000-81206302 } moving module 05 { 810c5000-8111a670 } -> { 811b0000-81205670 } moving module 04 { 810aa000-810c439c } -> { 81195000-811af39c } moving module 03 { 8106f000-810a9b50 } -> { 8115a000-81194b50 } moving module 02 { 81065000-8106e70c } -> { 81150000-8115970c } moving module 01 { 81015000-81064ef4 } -> { 81100000-8114fef4 } Scanning fiasco -serial_esc Scanning sigma0 Scanning moe rom/l4l_1.cfg Relocated mbi to [0x8100f000-0x8100f186] Loading fiasco Loading sigma0 Loading moe find kernel info page... found kernel info page at 0x80002000 Regions of list regions [ 80001000, 800019ff] { a00} Kern fiasco [ 80002000, 80061fff] { 60000} Kern fiasco [ 80090000, 800969bf] { 69c0} Sigma0 sigma0 [ 80098000, 8009e17b] { 617c} Sigma0 sigma0 [ 80140000, 80176183] { 36184} Root moe [ 80178000, 8018ed0f] { 16d10} Root moe [ 81000000, 810143eb] { 143ec} Boot bootstrap [ 8100f000, 8100f283] { 284} Root Multiboot info [ 81195000, 818d1fff] { 73d000} Root Modules Memory API Version: (87) experimental Sigma0 config ip:800900e0 sp:81013704 Roottask config ip:801401c0 sp:00000000 Starting kernel fiasco at 80001000 Hello from Startup::stage2 Initialize page table Vmem_alloc::init() Cache config: ON ID_PFR0: 00001031 ID_PFR1: 00000011 ID_DFR0: 00010400 ID_AFR0: 00000000 ID_MMFR0: 31100003 ID_MMFR1: 20000000 ID_MMFR2: 01202000 ID_MMFR3: 00000011 FPU0: Arch: VFPv3(3), Part: VFPv3(30), r: 1, v: c, i: 41, t: hard, p: dbl/sngl SERIAL ESC: allocated IRQ 74 for serial uart Not using serial hack in slow timer handler. Welcome to Fiasco.OC (arm)! L4/Fiasco.OC arm microkernel (C) 1998-2011 TU Dresden Rev: r38 compiled with gcc 4.4.1 for Beagleboard [] Build: #2 Tue Nov 15 09:44:12 CET 2011
Calibrating timer loop... done. SIGMA0: Hello! KIP @ 80002000 allocated 4KB for maintenance structures SIGMA0: Dump of all resource maps RAM:------------------------ [0:80000000;80000fff] [0:80062000;8008ffff] [0:80097000;80097fff] [0:8009f000;8013ffff] [4:80140000;80176fff] [0:80177000;80177fff] [4:80178000;8018efff] [0:8018f000;8100efff] [4:8100f000;8100ffff] [0:81010000;81194fff] [4:81195000;818d1fff] [0:818d2000;86ffffff] IOMEM:---------------------- [0:0;7fffffff] [0:88000000;ffffffff] MOE: Hello world MOE: found 106516 KByte free memory MOE: found RAM from 80000000 to 87000000 MOE: allocated 112 KByte for the page array @0x80062000 MOE: virtual user address space [0-bfffffff] MOE: rom name space cap -> [C:501000] BOOTFS: [81195000-811af39c] [C:503000] l4re BOOTFS: [811b0000-81205670] [C:504000] ned BOOTFS: [81206000-81206302] [C:505000] l4l_1.cfg BOOTFS: [81207000-81207103] [C:506000] arm-omap3.devs BOOTFS: [81208000-8120897f] [C:507000] gumstix-fb-l4l.io BOOTFS: [81209000-812ee074] [C:508000] io BOOTFS: [812ef000-815d10a0] [C:509000] vmlinuz.arm BOOTFS: [815d2000-818d2000] [C:50a000] ramdisk-arm.rd MOE: cmdline: moe rom/l4l_1.cfg MOE: Starting: rom/ned rom/l4l_1.cfg MOE: loading 'rom/ned' Ned says: Hi World! Ned: loading file: 'rom/l4l_1.cfg' IO | Io service IO | WARNING: device 'plat' already assigned to an other virtual bus. IO | WARNING: device 'prcm3' already assigned to an other virtual bus. IO | WARNING: device 'prcm2' already assigned to an other virtual bus. IO | WARNING: device 'sys' already assigned to an other virtual bus. IO | WARNING: device 'i2c1' already assigned to an other virtual bus. IO | WARNING: device 'gpio' already assigned to an other virtual bus. IO | Ready. Waiting for request. l4linux | PH 0 (t: 1) offs=00008000 vaddr=00100000 vend=004492ec l4linux | phys=00100000 ephys=004492ec l4linux | f_sz=002c83cc memsz=003492ec flgs=rwx l4linux | PH 1 (t: 4) offs=002d03a8 vaddr=003c83a8 vend=003c83cc l4linux | phys=003c83a8 ephys=003c83cc l4linux | f_sz=00000024 memsz=00000024 flgs=r-x l4linux | PH 2 (t: 1685382481) offs=00000000 vaddr=00000000 vend=00000000 l4linux | phys=00000000 ephys=00000000 l4linux | f_sz=00000000 memsz=00000000 flgs=rwx l4linux | Starting binary at 0x11e2f8, argc=9 argv=0x80007f84 *argv=0xb1007ff0 argv0=rom/vmlinuz.arm l4linux | External resolver is at 0xa80006a0 l4linux | ======> L4Linux 2.6 starting...<======== l4linux | Linux version 3.0.0-l4-svn23 (jdoe@ubuntu) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #2 Tue Nov 15 09:54:29 CET 2011 l4linux | Binary name: rom/vmlinuz.arm l4linux | This is an AEABI build. l4linux | Linux kernel command line (8 args): mem=64M console=ttyLv0 l4x_rd=rom/vHSM.rd root=1:0 rw ramdisk_size=20480 init=/linuxrc debug l4linux | CPU mapping (l:p)[1]: 0:0 l4linux | Image: 00100000 - 00500000 [4096 KiB]. l4linux | Areas: Text: 00100000 - 003a8000 [2720kB] (a bit longer) l4linux | Data: 003a8000 - 003c38a0 [110kB] l4linux | Initdata: 00100000 - 0011d000 [116kB] l4linux | BSS: 003c83cc - 004492ec [515kB] l4linux | l4lx_thread_create: Created thread 415 (tamer0) (u:b3000400, sp:003cc288) l4linux | Tamer0 is 415 l4linux | Using tamed mode. l4linux | Device scan: l4linux | Device: System Control l4linux | MEM: 48002000 - 480047ff l4linux | MEM: 48004800 - 4800ffff l4linux | Device: i2c l4linux | MEM: 48070000 - 48070fff l4linux | Device: prcm2 l4linux | MEM: 48060000 - 4806007f l4linux | MEM: 48072000 - 4807207f l4linux | MEM: 480ab000 - 480acfff l4linux | MEM: 48200000 - 4820ffff l4linux | MEM: 48306800 - 48309fff l4linux | MEM: 4830a000 - 4830ffff l4linux | MEM: 6c000000 - 6cffffff l4linux | MEM: 6d000000 - 6dffffff l4linux | IRQ: 00000038 - 00000038 l4linux | IRQ: 0000003d - 0000003d l4linux | IRQ: 00000039 - 00000039 l4linux | IRQ: 00000007 - 00000007 l4linux | IRQ: 0000005c - 0000005c l4linux | Device: plat l4linux | IRQ: 0000004d - 0000004d l4linux | l4lx_thread_create: Created thread 417 (cpu0) (u:b3000600, sp:003a9ff0) l4linux | main thread will be 417 l4linux | l4x_register_pointer_section: addr = 00100000 size = 3448832 l4linux | section-with-init: virt: 0x100000 to 0x4492eb [3364 KiB] l4linux | section-with-init: Phys: 0x8034d000 to 0x806962ec, Size: 3445484 l4linux | l4x_linux_startup: thread 417. l4linux | Main thread running, waiting... l4linux | main thread: received startup message. l4linux | l4x_setup_memory: Forcing superpages for main memory l4linux | l4re_global_env: 0xb1007ef4 l4linux | Main memory size: 64MB l4linux | Main memory: virt: 0x500000 to 0x44fffff [65536 KiB] l4linux | Main memory: Phys: 0x81900000 to 0x85900000, Size: 67108864 l4linux | Filling lower ptabs... l4linux | Done (436 entries). l4linux | l4x_register_pointer_section: addr = 004ff000 size = 4096 l4linux | end: virt: 0x4ff000 to 0x4fffff [4 KiB] l4linux | end: Phys: 0x80698000 to 0x80699000, Size: 4096 l4linux | l4x_rd_path: rom/vHSM.rd l4linux | Loading: rom/vHSM.rd l4linux | Failed to query name 'rom/vHSM.rd': No such object found(-2) l4linux | Failed to get initrd: No such object found(-2) l4linux | Couldn't load ramdisk :( l4linux | l4lx_thread_create: Created thread 41c (IRQ CPU0) (u:b3000800, sp:003e3ff0) Linux version 3.0.0-l4-svn23 (jdoe@ubuntu) (gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67) ) #2 Tue Nov 15 09:54:29 CET 2011 CPU: Fiasco [860f0001] revision 1 (ARMvundefined/unknown), cr=00000000 CPU: unknown data cache, unknown instruction cache cpu_v6_proc_init Machine: L4 Memory policy: ECC disabled, Data cache writeback _CACHE_flush_kern_cache_all() On node 0 totalpages: 17409 free_area_init_node: node 0, pgdat 003c2f44, node_mem_map 00500000 DMA zone: 138 pages used for memmap DMA zone: 0 pages reserved DMA zone: 17271 pages, LIFO batch:3 pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 pcpu-alloc: [0] 0 Built 1 zonelists in Zone order, mobility grouping on. Total pages: 17271 Kernel command line: mem=64M console=ttyLv0 l4x_rd=rom/vHSM.rd root=1:0 rw ramdisk_size=20480 init=/linuxrc debug PID hash table entries: 512 (order: -1, 2048 bytes) Dentry cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 8192 (order: 3, 32768 bytes) Memory: 0MB 68MB = 68MB total Memory: 64808k/64808k available, 4828k reserved, 0K highmem Virtual kernel memory layout: vector : 0xbffff000 - 0xc0000000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB) DMA : 0xffc00000 - 0xffe00000 ( 2 MB) vmalloc : 0x04600000 - 0x0c600000 ( 128 MB) lowmem : 0x00000000 - 0x04500000 ( 69 MB) modules : 0xff100000 - 0x00100000 ( 16 MB) .init : 0x00100000 - 0x0011d000 ( 116 kB) .text : 0x0011e000 - 0x003a6e5c (2596 kB) .data : 0x003a8000 - 0x003c38a0 ( 111 kB) .bss : 0x003c83cc - 0x004492ec ( 516 kB) NR_IRQS:395 nr_irqs:395 395 l4lx_irq_init: creating IRQ thread on cpu 0 Console: colour dummy device 80x30 console [ttyLv0] enabled Calibrating delay loop... irq_thread: Starting IRQ thread on CPU 0 496.43 BogoMIPS (lpj=2482176) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 512 CPU: Testing write buffer coherency: ok print_constraints: dummy: NET: Registered protocol family 16 __l4x_ioremap: Mapping physaddr 48002000 [0x1000 Bytes, 48002000+001000] to 04500000+000000 __l4x_ioremap: Mapping physaddr 48306800 [0x2000 Bytes, 48306000+003000] to 04501000+000800 __l4x_ioremap: Mapping physaddr 48004800 [0x2000 Bytes, 48004000+003000] to 04504000+000800 _CACHE_flush_kern_cache_all() __l4x_ioremap: Mapping physaddr 48200000 [0x1000 Bytes, 48200000+001000] to 04507000+000000 IRQ: Found an INTC at 0x04507000 (revision 4.0) with 96 interrupts Total of 96 interrupts on 1 active controller omap3xxx_powerdomains_init recalculate_root_clocks Clocking rate (Crystal/Core/MPU): 26.0/332/500 MHz ERROR: IO-memory (68000000+ffff) not available omap_hwmod: l3_main: Could not ioremap omap_hwmod: _populate_mpu_rt_base found no _mpu_rt_va for l3_main omap_hwmod: _populate_mpu_rt_base found no _mpu_rt_va for l4_core omap_hwmod: _populate_mpu_rt_base found no _mpu_rt_va for l4_per omap_hwmod: _populate_mpu_rt_base found no _mpu_rt_va for l4_wkup __l4x_ioremap: Mapping physaddr 48070000 [0x7f Bytes, 48070000+001000] to 04508000+000000 __l4x_ioremap: Mapping physaddr 48072000 [0x7f Bytes, 48072000+001000] to 04509000+000000 __l4x_ioremap: Mapping physaddr 48060000 [0x7f Bytes, 48060000+001000] to 0450a000+000000 __l4x_ioremap: Mapping physaddr 480ab000 [0xfff Bytes, 480ab000+001000] to 0450b000+000000 omap_hwmod: i2c1: softreset failed (waited 10000 usec) omap_hwmod: i2c2: softreset failed (waited 10000 usec) omap_hwmod: i2c3: softreset failed (waited 10000 usec) omap2_common_pm_init Added static device 'System Control' with 2 resources. Added static device 'i2c' with 1 resources. Added static device 'prcm2' with 13 resources. omap_register_i2c_bus bus_id=1 nr_ports=3 omap2_i2c_add_bus omap_register_i2c_bus bus_id=3 nr_ports=3 omap2_i2c_add_bus omap_init_opp_table: no hwmod or odev for iva, [9] cannot add OPPs. overo_opp_init: opp default init failed
============ ICLKEN_CORE 7ffffedb ICLKEN_CORE 7ffffedb FCLKEN_CORE 43fffe01 FCLKEN_CORE c3fffe01 CTRL i2c 1 11c0118 CTRL i2c 2 118011c CTRL i2c 3 1c0118 bio: create slab<bio-0> at 0 Failed to create "l4x" debugfs directory: 1 omap_i2c omap_i2c.1: bus 1 rev3.12 at 2600 kHz l4linux | cpu0: utcb=0xb3000600 417 l4linux | l4lx_thread_create: Created thread 41f (idler0) (u:b3000a00, sp:003e5ff4) twl4030: PIH (irq 7) chaining IRQs 368..375 twl4030: power (irq 373) chaining IRQs 376..383 print_constraints: VUSB1V5: 1500 mV normal standby print_constraints: VUSB1V8: 1800 mV normal standby print_constraints: VUSB3V1: 3100 mV normal standby twl4030_usb twl4030_usb: HW_CONDITIONS 0x90/144; link 1 twl4030_usb twl4030_usb: Initialized TWL4030 USB module omap_i2c omap_i2c.3: bus 3 rev3.12 at 400 kHz Switching to clocksource kip musb-hdrc: version 6.0, pio, peripheral musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 1.400 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory musb-hdrc musb-hdrc: USB Peripheral mode controller at 0450b000 using PIO, IRQ 92 NET: Registered protocol family 2 IP route cache hash table entries: 1024 (order: 0, 4096 bytes) TCP established hash table entries: 4096 (order: 3, 32768 bytes) TCP bind hash table entries: 4096 (order: 2, 16384 bytes) TCP: Hash tables configured (established 4096 bind 4096) TCP reno registered UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) NET: Registered protocol family 1 NetWinder Floating Point Emulator V0.97 (double precision) msgmni has been set to 126 io scheduler noop registered io scheduler deadline registered io scheduler cfq registered (default) L4 serial driver ttyLv0 at MMIO 0x1 (irq = 385) is a L4 L4 shared mem serial driver l4cdds: No name given, not starting. brd: module loaded l4bdds: No name given, not starting. g_ether gadget: using random self ethernet address g_ether gadget: using random host ethernet address usb0: MAC 4a:57:0a:8c:6d:1c usb0: HOST MAC 2a:99:fb:8b:c0:d3 g_ether gadget: adding config #2 'RNDIS'/003bf038 g_ether gadget: adding 'rndis'/0414cd60 to config 'RNDIS'/003bf038 rndis_register: configNr = 0 rndis_set_param_medium: 0 0 g_ether gadget: RNDIS: dual speed IN/ep1in OUT/ep1out NOTIFY/ep2in g_ether gadget: cfg 2/003bf038 speeds: high full g_ether gadget: interface 0 = rndis/0414cd60 g_ether gadget: interface 1 = rndis/0414cd60 g_ether gadget: adding config #1 'CDC Ethernet (ECM)'/003bef9c g_ether gadget: adding 'cdc_ethernet'/0414cca0 to config 'CDC Ethernet (ECM)'/003bef9c g_ether gadget: CDC Ethernet: dual speed IN/ep1in OUT/ep1out NOTIFY/ep2in g_ether gadget: cfg 1/003bef9c speeds: high full g_ether gadget: interface 0 = cdc_ethernet/0414cca0 g_ether gadget: interface 1 = cdc_ethernet/0414cca0 g_ether gadget: Ethernet Gadget, version: Memorial Day 2008 g_ether gadget: g_ether ready mousedev: PS/2 mouse device common for all mice i2c /dev entries driver TCP cubic registered NET: Registered protocol family 17 omap2_common_pm_late_init
2011/11/2 Giorgio Wickleingiowckln@googlemail.com:
Hi,
I spent a lot of time trying to get specific OMAP3/Beagleboard hardware modules working (EHCI USB mainly). So far, without luck.
A generic "how-to-integrate-linux-drivers-in-l4linux" example would be very helpful. The procedure is not very clear to me (since I'm really new here).
Based on Vasily's work, I changed some sources of linux drivers, to get musb, otg, and usb-ehci compiled without errors. The bootlog compared to Vasily's one [1], is very different; Drivers seems to load, but they don't recognize the hardware (I think).
For example the following boot messages doesn't appear on mine:
omap_register_i2c_bus bus_id=1 nr_ports=3 omap2_i2c_add_bus omap_register_i2c_bus bus_id=3 nr_ports=3 omap2_i2c_add_bus
or
__l4x_ioremap: Mapping physaddr 48200000 [0x1000 Bytes, 48200000+001000] to 04507000+000000 IRQ: Found an INTC at 0x04507000 (revision 4.0) with 96 interrupts
or
twl4030: PIH (irq 7) chaining IRQs 368..375 twl4030: power (irq 373) chaining IRQs 376..383 print_constraints: VUSB1V5: 1500 mV normal standby print_constraints: VUSB1V8: 1800 mV normal standby print_constraints: VUSB3V1: 3100 mV normal standby twl4030_usb twl4030_usb: HW_CONDITIONS 0x90/144; link 1 twl4030_usb twl4030_usb: Initialized TWL4030 USB module omap_i2c omap_i2c.3: bus 3 rev3.12 at 400 kHz Switching to clocksource kip musb-hdrc: version 6.0, pio, peripheral musb-hdrc: ConfigData=0xde (UTMI-8, dyn FIFOs, bulk combine, bulk split, HB-ISO Rx, HB-ISO Tx, SoftConn) musb-hdrc: MHDRC RTL version 1.400 musb-hdrc: setup fifo_mode 4 musb-hdrc: 28/31 max ep, 16384/16384 memory musb-hdrc musb-hdrc: USB Peripheral mode controller at 0450b000 using
and such...
Some of these messages are generated by sources from the mach-omap2 directroy, which AFAIK are not necessary, since changes where not mentioned in Vasily's patch. Do I need to include mach-omap? If yes, how?
Please take a look at my patch (attached below). I did some work, specific for ehci usb Beagleboard support.
What is the correct method for adding those drivers? Any suggestions? Or examples (since Vasily's is not complete for me)...
My configs are in the attachment with the main patch.
Thanks, Giorgio
[1] Vasily's bootlog - http://os.inf.tu-dresden.de/pipermail/l4-hackers/2011/005069.html
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers