Hej
Zna się tu ktoś na programowaniu w kernel spejsie, bo na forach zagranicznych poświęconych programowaniu w kernelu nie da się zarejestrować, mejle aktywacyjne nie dochodzą a ja mam tylko małe doświadczenie przy programowaniu character deviców.
Mam problem ze zrozumieniem tagów resets i reset-names:
rst: rstmgr@ffd11000 {
#reset-cells = <1>;
compatible = "altr,rst-mgr";
reg = <0xffd11000 0x1000>;
altr,modrst-offset = <0x20>;
};
mmc: dwmmc0@ff808000 {
compatible = "altr,socfpga-dw-mshc";
reg = <0xff808000 0x1000>;
...
resets = <&rst SDMMC_RESET>;
reset-names = "reset";
...
};
Jak sobie podglądam implementację kernel drivera dla powyższego układu to tagi resets, reset-names w ogóle nie są parsowane:
https://github.com/torvalds/linux/blob/master/drivers/mmc/host/dw_mmc-pltfm.c
Więc nie bardzo rozumiem jak z poziomu user spejsa mogę wywołać reset tego układu odwołując się do tego drivera, jakim kawałkiem softu?
Co do rst:
https://github.com/torvalds/linux/blob/master/drivers/reset/reset-simple.c
to są metody assert i deassert, którym mógłbyś przekazać id=SDMMC_RESET ale z user spejsa też nie da się odwołac do tego drivera bo to nie jest char device tylko to instaluje się w katalogach:
/sys/devices/platform/soc => ffd11000.rstmgr
/sys/bus/platform/devices/soc => ffd11000.rstmgr
i nie masz jak się odwołać do tego.
Więc nie bardzo wiem co ja mogę zrobić z tagai resets i reset-names. Może implementacja dw_mmc-pltfm.c jest niepełna i brakuje tam parsowania tych tagów? Właśnie spodziewałem się że jakaś funkcja zostanie podmapowana pod te tagi.