USDHC driver failure and imx8mm platfrom support

Jean-Adrien Domage jean-adrien.domage at gapfruit.com
Thu Nov 24 13:45:14 CET 2022


Hello Stefan,

Thank you for your answer!

On 11/21/22 16:45, Stefan Kalkowski wrote:
> Thank you for the detailed explanation and background information!
> The CCM register definitions alone are not necessarily the only thing
> that differ. You might need to look at the tree structure, meaning
> the dependencies in between the clocks too.

You are correct! There exist differences within the 'Clock Root selects' 
as well.
I have corrected them already, but it did not help with my initial 
problem. Furthermore,
I first tried to make the MMIO struct from `Driver::Ccm` match the 
current bit-sets of the i.MX8MM.
It turns out, some bit-sets from the CCM's control registers of the 
i.MX8MQ does not exist
in the CCM's control register of the i.MX8MM.

> Maybe it helps to identify the differences within the Linux kernel
> code at drivers/clk/imx/clk-imx8m*.c?

This is a good suggestion! I can use this as a guideline to implement 
`void Frac_pll:rate(Rate rate)`
and `Clock::rate Frac_pll::rate() const`. In fact, I confused some 
things while reading the reference manual.
After reading again, 5.1.5.4.4 'SSCG and Fractional PLLs', I have a 
better understanding of what actually happen in
your implementation for the i.MX8MQ. And, I have found what needs to be 
corrected for the i.MX8MM SoC implementation.

> I really don't know, but I would not necessarily exclude it. But when
> looking at the device-tree of the `imx8mm-*.dts` files in Linux, I
> assume the pin settings are more important.

Currently, I assume those to be correct, as it seems, it did not change 
with the most recent BSP Linux available. And
the driver works on the older board revision with those IOMUXC settings. 
Then, as advised, I will not
take it for granted, and better have a second look at it.

> For getting fast results, we've set static IOMUX controls within
> bootstrap, but nothing keeps you from having a dedicated pin control
> service, which allows changing the pin settings dynamically. Please,
> have a look at the example driver `src/drivers/pin` within the
> genode-allwinner repository.
> When having such a driver, you can change the settings dynamically via
> the pin_control and pin_state session interfaces.

I will have a look at this!

Thanks to you, I have now good material to move forward!

Cheers!
Jad

----
Jean-Adrien Domage
Software Engineer
Gapfruit AG
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20221124/d1e2f601/attachment.htm>


More information about the users mailing list