Dear L4Re experts,

I hope you are doing well and enjoying this time of the year.


I would like to ask for your help or insights on how to use the emmc-driver in 
an imx8mp based board.


In this platform, the usdhc nodes are located out of the pci bus, and they 
require an i2c device to work, as well as gpio and clocks.


I am able to start the emmc server, which identifies one usdhc device and 
starts the server loop. I pass a virtual bus to the emmc driver with all 
required devices, as they usually work in the Virtual Machine to access the 
mmc. The driver scans all of them, finding the usdhc node.


But, everything stops when I create a client, either using a dynamic way with: 
create(0, "device=...","ds-max=5); or declaring the client in the argument as: 
"emmc-drv -v --client cl1 --device=... --ds-max=5". For the second way, it 
stops when the Virtual Machine starts to configure the related virtio device (I 
am using a virtio_net node).



I will be grateful if you can give me some information about the issue or some 
of the following questions:


  1.  how should the node in the device tree of the Virtual Machine be 
configured to work with the emmc client?


    2. is it possible that the board's specific hardware configuration required 
for the mmc is stopping the emmc client to work?


    3. Is there any way to test the driver before linking it to a virtual 
machine? I found an example with the "virtio-block-chksum-sync" module, but I 
could not find this module.


I attach the configuration files, the output text and the base device tree 
structure. Thank you in advance for your attention.


Kind regards,


Alvaro Gallardo


------- OUTPUT -----
MOE: Hello world
MOE: found 1911604 KByte free memory
MOE: found RAM from 40200000 to b8600000
MOE: allocated 1924 KByte for the page array @0x40205000
MOE: virtual user address space [0-ffffffffff]
MOE: cmdline: moe rom/emmc-test.ned
MOE: rom name space cap -> [C:103000]
MOE: rwfs name space cap -> [C:105000]
  ROMFS: [4395d000-4395dc93] [C:107000] emmc-test.ned
  ROMFS: [4395e000-43a622a0] [C:109000] uvmm
  ROMFS: [43a63000-43a80a08] [C:10b000] l4re
  ROMFS: [43a81000-43b0d288] [C:10d000] ned
  ROMFS: [43b0e000-43b0f425] [C:10f000] vmm.lua
  ROMFS: [43b10000-43d3aff0] [C:111000] io
  ROMFS: [43d3b000-43d3e762] [C:113000] io-karo-eth.io
  ROMFS: [43d3f000-43d3fc93] [C:115000] emmc-test.ned
  ROMFS: [43d40000-43d40432] [C:116000] emmc.vbus
  ROMFS: [43d41000-43d4135b] [C:118000] vm_hw2.vbus
  ROMFS: [43d42000-4684e200] [C:11a000] Image
  ROMFS: [4684f000-46ef73e4] [C:11c000] alonerd.gz
  ROMFS: [46ef8000-46efe864] [C:11e000] virt.dtb
  ROMFS: [46eff000-46fd6600] [C:120000] emmc-drv
  ROMFS: [46fd7000-4701f430] [C:122000] cons
MOE: Starting: rom/ned rom/emmc-test.ned
MOE: loading 'rom/ned'
Ned says: Hi World!
Ned: loading file: 'rom/emmc-test.ned'
Console Server
cons> 
Created vcon channel: io [420010]
cons> 
Created vcon channel: emmc [421010]
cons> 
io      | Io service
emmc    | eMMC[main]: Emmc driver says hello.
emmc    | eMMC[main]: TSC frequency of 8MHz.
io      | Ready. Waiting for request.
emmc    | eMMC[main]: Starting device discovery.
emmc    | eMMC[main]: Scanning child 0x1 (L4ICU).
emmc    | eMMC[main]: Scanning child 0x2 (pinctrl_30330000).
emmc    | eMMC[main]: Scanning child 0x3 (gpio_30230000).
emmc    | eMMC[main]: Scanning child 0x4 (i2c1).
emmc    | eMMC[main]: Scanning child 0x5 (mmc1).
emmc    | eMMC[]: Using VBUS global DMA domain.
emmc    | eMMC[main]: Device @ 30b50000: interrupt: 55, level-high-triggered.
emmc    | eMMC[main]: Assuming host clock of 200MHz.
io      | vbus emmc does not support a global DMA domain
emmc    | eMMC[main]: No such object found: Assignment of DMA domain.. Skipping.
emmc    | eMMC[main]: Scanning child 0x6 (gpio_30240000).
emmc    | eMMC[main]: Scanning child 0x7 (TIMER).
emmc    | eMMC[main]: Scanning child 0x8 (gpio_30220000).
emmc    | eMMC[main]: Scanning child 0x9 (gpio_30210000).
emmc    | eMMC[main]: Scanning child 0xa (BUS_308).
emmc    | eMMC[main]: Scanning child 0xb (i2c4).
emmc    | eMMC[main]: Scanning child 0xc (i2c3).
emmc    | eMMC[main]: Scanning child 0xd (bus_30000000).
emmc    | eMMC[main]: Scanning child 0xe (i2c2).
emmc    | eMMC[main]: Scanning child 0xf (bus_30400000).
emmc    | eMMC[main]: Scanning child 0x10 (gpio_30200000).
emmc    | eMMC[main]: Scanning child 0x11 (bus_32c00000).
emmc    | eMMC[main]: Scanning child 0x12 (reset_controller_30390000).
emmc    | eMMC[main]: All devices scanned.
emmc    | eMMC[main]: Entering server loop.



Attachment: hw-passmmc.dts
Description: hw-passmmc.dts

Attachment: io-karo-eth.io
Description: io-karo-eth.io

Attachment: emmc-test.ned
Description: emmc-test.ned

Attachment: emmc.vbus
Description: emmc.vbus

_______________________________________________
l4-hackers mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to