GSoC PRU: AM35xx Clock driver

Christian Mauderer list at c-mauderer.de
Sat Jul 27 12:34:26 UTC 2019


On 24/07/2019 16:53, Nils Hölscher wrote:
> Hi,
> 
> @Vijay Kumar Banerjee <mailto:vijaykumar9597 at gmail.com>  thanks for the
> dtb file.
> I build my file from FreeBSD master.
> 
> Prcm attaches now but still after the pruss driver...:
> "
> nexus0: <RTEMS Nexus device>
> ofwbus0: <Open Firmware Device Tree> on nexus0
> simplebus0: <Flattened device tree simple bus> on ofwbus0
> *ti_pruss0: <TI Programmable Realtime Unit Subsystem> mem
> 0x4a300000-0x4a37ffff irq 20,21,22,23,24,25,26,27 on simplebus0
> ti_pruss0: could not enable PRUSS clock
> device_attach: ti_pruss0 attach returned 6*
> simplebus1: <Flattened device tree simple bus> on simplebus0*
> am335x_prcm0: <AM335x Power and Clock Management> mem 0x200000-0x203fff
> on simplebus1*

Hello Nils,

I'm not sure about the order. But what seems a little bit odd is that
the prcm0 is found in simplebus0 while am335x_prcm0 is found on
simplebus1. Maybe it's worth investigating how that order is created and
how it is handled in RTEMS.

A general note regarding the prcm module: In RTEMS most (non-libbsd)
drivers enable their power and clocks themself. Please make sure that
the FreeBSD prcm doesn't interfere with that. Otherwise you might get
odd effects.

Best regards

Christian

> *====am335x_prcm_attach====*
> "
> 
> Is there anything else I can do besides using MODULE_DEPENDENCY, which I
> already use.
> The prcm module is also a EARLY_DRIVER_MODULE.
> 
> Best,
> Nils
> 
> On Wed, 24 Jul 2019 at 16:04, Vijay Kumar Banerjee
> <vijaykumar9597 at gmail.com <mailto:vijaykumar9597 at gmail.com>> wrote:
> 
> 
> 
>     On Wed, Jul 24, 2019 at 7:03 PM Nils Hölscher <nilhoel1 at gmail.com
>     <mailto:nilhoel1 at gmail.com>> wrote:
> 
> 
> 
>         On Wed, 24 Jul 2019 at 15:14, Vijay Kumar Banerjee
>         <vijaykumar9597 at gmail.com <mailto:vijaykumar9597 at gmail.com>> wrote:
> 
> 
> 
> 
>             On Wed, Jul 24, 2019 at 6:36 PM Nils Hölscher
>             <nilhoel1 at gmail.com <mailto:nilhoel1 at gmail.com>> wrote:
> 
>                 Hi again,
> 
>             Hi Nils 
> 
>                 I just decompiled my device tree and checked.
>                 The probe code of the prcm driver is as follows:
>                 "
>                 static int
>                 am335x_prcm_probe(device_t dev)
>                 {
>                     printk("am335x_prcm_probe\n");
> 
>                     if (!ofw_bus_status_okay(dev)){
>                         printk("ofw_bus_status_not_okay\n");
>                         return (ENXIO);
>                     }
> 
>             Do you get the "ofw_bus_status_not_okay" print ? 
> 
>         Yes. But I also see the other print. except the success one. 
> 
>                     if (ofw_bus_is_compatible(dev, "ti,am3-prcm")) {
>                         device_set_desc(dev, "AM335x Power and Clock
>                 Management");
>                         printk("PROBE SUCESSFULL\n");
>                         return(BUS_PROBE_DEFAULT);
>                     }
>                     printk("ofw_bus incompatible\n");
>                     return (ENXIO);
>                 }
>                 "
>                 So it seems the prcm part in the device tree has to be
>                 compatible to "ti,am3-prcm".
>                 The thing is the decompiled device tree states just that:
>                 "
>                 prcm at 0 {
>                                         compatible =
>                 "ti,am3-prcm\0simple-bus";
> 
>             In my device tree, it runs successfully and the decompiled
>             compatible looks like  :
>             ```
>                         prcm at 200000 {
>                             compatible = "ti,am3-prcm";
>                             reg = < 0x200000 0x4000 >;
>                             linux,phandle = < 0x4a >;
>                             phandle = < 0x4a >;
>             ```
> 
>         OK, this is awkward, cause we both should have used the same
>         sources.
> 
>     Have you checked that your source is from the tree matching the
>     libBSD HEAD
>     commit? 
> 
>                                         reg = <0x00 0x2000>;
>                                         #address-cells = <0x01>;
>                                         #size-cells = <0x01>;
>                                         ranges = <0x00 0x00 0x2000>;
>                                         phandle = <0x5a>;
>                 [...]
>                 "
>                 Any ideas would help, cause I am currently not able to
>                 understand this behaviour.
>                 Also without this driver even the dev_usb_bbb driver
>                 shouldn't work.
>                 However it attaches because it doesn't check for the
>                 clocks error code.
> 
>             I remember testing this a few days ago for my fb drivers and
>             it was attaching alright,
>             if I remember correctly. If changing the dtb doesn't work
>             for you, I won't mind checking
>             again, this will give me a hint for the display issue as well. 
> 
>         I will keep you updated on this.
>         Would you be so kind and send me your compiled device tree? 
> 
>     Please find it attached in this mail. 
> 
>     Note: I have removed the devel from the cc because the attachment
>     might be
>     big for the list. Please continue the discussion in the mailing list
>     and maybe note
>     it somewhere that you already received the dtb from me in private mail.
> 
>     Regards,
>     Vijay
> 
>                  
> 
>                 Best,
>                 Nils
> 
> 
> 
>                 On Wed, 24 Jul 2019 at 14:43, Nils Hölscher
>                 <nilhoel1 at gmail.com <mailto:nilhoel1 at gmail.com>> wrote:
> 
>                     Hi,
> 
>                     I just found out that the prcm driver fails to probe
>                     on the simplebus and therefore cannot apply itself.
>                     Seems like I am back to checking dtb.
> 
>                     Best,
>                     Nils
> 
>                     On Tue, 23 Jul 2019 at 14:26, Nils Hölscher
>                     <nilhoel1 at gmail.com <mailto:nilhoel1 at gmail.com>> wrote:
> 
>                         Hi,
> 
>                         After debugging with printk, didn't get the
>                         module loading working as suggested by Sebastian.
>                         I just found out that my PRU driver can't be
>                         attached, cause the AM35xx clock driver isn't
>                         loaded.
>                         The driver can be found her:
>                         https://github.com/RTEMS/rtems-libbsd/blob/610349693dd31d8b0efd33776516b7187cc5cda2/freebsd/sys/arm/ti/am335x/am335x_prcm.c
> 
>                         Can anyone tell me how to load this driver and
>                         obisouly before I initialize my BSD modules?
> 
>                         FYI: The code line that fails is this one, cause
>                         the driver hasn't been initialized.
>                         https://github.com/RTEMS/rtems-libbsd/blob/610349693dd31d8b0efd33776516b7187cc5cda2/freebsd/sys/arm/ti/am335x/am335x_prcm.c#L854
> 
>                         Thanks,
>                         Nils
> 
>                 _______________________________________________
>                 devel mailing list
>                 devel at rtems.org <mailto:devel at rtems.org>
>                 http://lists.rtems.org/mailman/listinfo/devel
> 
> 
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
> 



More information about the devel mailing list