Hi Nkem,

> Just to clarify, a modification I made was calling the ethif_init function

> ethernet.c file[1] and passing some parameters (base_addr,mac,

> dma_ops,ethif_recv_callback). Currently, dma_ops and ethif_recv_callback

> contain null values and I'm not too sure what I need to initialise them as.


The issue is more clear now, the issue lies with the fact that the Ethernet

driver structure layout is different from the expected layout in libethdrivers.


For the `dma_ops` case, this shouldn't be NULL, and depending on what CAmkES

application (e.g. picoserver) you are using, this will be handled automatically

for you. Otherwise, you can call `camkes_io_ops` and then you can access the

underlying `dma_ops` structure inside the `ps_io_ops_t` pointer.


As for the `ethif_recv_callback` this shouldn't be there, the libethdrivers

drivers instead require these functions to be filled in [1]. What I'm trying to

say here is that the model of the AOS Ethernet driver is different from those

expected in libethdrivers, and you would need to modify the AOS Ethernet driver

quite heavily so that it matches the model in libethdrivers.


> Also, please could you clarify how I am meant to modify the callbacks so

> that it gets the correct registers and IRQs from the DTS.


The callbacks are called like a lambda in a 'map' function like in other

languages. It's given the current IRQ or register information each time it's

called and the user can choose to take that information and use it to allocate

hardware resources. So in the case of the C2, looking at the kernel DTS for it

(kernel/tools/dts/odroidc2.dts), the Ethernet node (/soc/ethernet@c9410000)

contains one interrupt entry and two register entries. The interrupt entry is

simple, you could simple call `ps_irq_register` on the IRQ information in the

first invocation. As for the registers, you would need to call `ps_mem_map`

twice, once for each time the callback is called.


If aren't in a rush to solve these issues, the team is considering porting over

the AOS Ethernet driver for the C2 over to libethdrivers in the next few days.

Though this would take a few days to do, review, and have it pushed out to

upstream.


Hope this helps,

Damon


[1] 
https://github.com/seL4/util_libs/blob/master/libethdrivers/src/plat/imx6/imx6.c#L370
_______________________________________________
Devel mailing list -- devel@sel4.systems
To unsubscribe send an email to devel-leave@sel4.systems

Reply via email to