Page MenuHomeFreeBSD

Add support for RK3399 emmc
ClosedPublic

Authored by ganbold on May 4 2019, 11:21 AM.

Details

Summary

Add emmc support for Rockchip RK3399 SoC.

Diff Detail

Repository
rS FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

ganbold created this revision.May 4 2019, 11:21 AM
manu requested changes to this revision.May 4 2019, 11:35 AM

It missed the phy, so currently this works because u-boot already setup it for us.

sys/dev/sdhci/sdhci_fdt.c
57 ↗(On Diff #57033)

This needs to be undef ifdef EXT_RESOURCES.
Same comment for most of the thing below.

This revision now requires changes to proceed.May 4 2019, 11:35 AM
andrew added a subscriber: andrew.May 4 2019, 11:48 AM
andrew added inline comments.
sys/dev/sdhci/sdhci_fdt.c
289 ↗(On Diff #57033)

This should be moved from probe to attach.

ganbold updated this revision to Diff 57034.May 4 2019, 2:52 PM

Updated. In case pf phy, we first maybe need separate driver for emmc-phy.

emaste added a subscriber: emaste.May 13 2019, 3:03 PM
ganbold updated this revision to Diff 59337.Jul 3 2019, 6:41 AM

Updated (phy enabled)

ganbold updated this revision to Diff 59340.Jul 3 2019, 11:06 AM

Fix register definitions

manu added a comment.Jul 15 2019, 6:25 PM

For rockchip there is a clock exposed (via the clock-output-names property) but you don't register it and you try to get it in the emmc-phy review (D20840).

This means that the sdhci driver should first expose the clock, wait for the phy driver with the help of newpass to be attached and then resume the work on sd/emmc detection.
I also think that you should subclass the driver since this will add a lot of rockchip related code.

ganbold updated this revision to Diff 59802.Jul 16 2019, 12:16 PM

Updated accordingly.

manu added inline comments.Jul 16 2019, 12:44 PM
sys/dev/sdhci/sdhci_fdt.c
161 ↗(On Diff #59802)

You should validate that this was the emmcclock that was requested based on the cells content and return ENXIO if it wasn't

481 ↗(On Diff #59802)

phy_init(sc->phy);

ganbold updated this revision to Diff 59804.Jul 16 2019, 2:29 PM

Updated accordingly.

ganbold updated this revision to Diff 59861.Jul 18 2019, 3:01 AM

Looks like phydev_if.h is not needed, and no other functional changes.

manu requested changes to this revision.Jul 18 2019, 8:39 AM
manu added inline comments.
sys/dev/sdhci/sdhci_fdt.c
492 ↗(On Diff #59861)

I would prefer this block to be in a deticated rockchip function.

161 ↗(On Diff #59802)

You still don't validate the clock id based on cells[0] content.

This revision now requires changes to proceed.Jul 18 2019, 8:39 AM
ganbold updated this revision to Diff 59873.EditedJul 18 2019, 9:59 AM

Added ncells check in rk3399_ofw_map() function according to comment.
Moved rk3399 sdhci init related codes into sdhci_init_rk3399() function so that it looks more clean.

manu accepted this revision.Jul 19 2019, 5:59 PM
This revision is now accepted and ready to land.Jul 19 2019, 5:59 PM
This revision was automatically updated to reflect the committed changes.