Re: [PATCH v5 01/11] i2c: Enhance i2c_new_ancillary_device API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Laurent,

On Mon, Jun 12, 2023 at 2:54 PM Laurent Pinchart
<laurent.pinchart@xxxxxxxxxxxxxxxx> wrote:
> On Mon, Jun 12, 2023 at 12:42:33PM +0000, Biju Das wrote:
> > > Subject: Re: [PATCH v5 01/11] i2c: Enhance i2c_new_ancillary_device API
> > > On Mon, Jun 12, 2023 at 09:53:02AM +0000, Biju Das wrote:
> > > > How do we proceed here between [1] and [2]?
> > > >
> > > > DT-Maintainers suggestion:
> > > > [1]
> > > > raa215300: pmic@12 {
> > > >   compatible = "renesas,raa215300";
> > > >   reg = <0x12>, <0x6f>;
> > > >   reg-names = "main", "rtc";
> > > >
> > > >   clocks = <&x2>;
> > > >   clock-names = "xin";
> > > >   /* Add Optional shared IRQ resource and share it to child and handle
> > > > it both in parent and child */ };
> > > >
> > > > Laurent/Wolfram suggestion to split it into two nodes and get rid of this patch:
> > > > [2]
> > > >   raa215300: pmic @12 {
> > > >           compatible = "renesas,raa215300";
> > > >           reg = <0x12>;
> > > >
> > > >           /* Add Optional shared IRQ */
> > > >           renesas,raa215300-rtc = <&rtc_raa215300>; /* Parse the handle and Enable RTC , if present.*/
> > > >   };
> > > >
> > > >   rtc_raa215300: rtc@6f {
> > > >           compatible = "renesas,raa215300-isl1208";
> > >
> > > Make this
> > >
> > >             compatible = "renesas,raa215300-isl1208", "isil,isl1208";
> > >
> > > >           reg = <0x6f>;
> > > >
> > > >           /* Add Optional shared IRQ */
> > > >           clocks = <&x2>;
> > > >           clock-names = "xin";
> > > >           renesas,raa215300-pmic = <&pmic>; /* Parse the handle to get PMIC
> > > > version to check Oscillator bit is inverted or not */
> > >
> > > This isn't nice. I would instead add a renesas,invert-xtoscb boolean
> > > property. If you don't want different DT sources for different revisions
> > > of the PMIC,
> >
> > I need to support all PMIC versions with same image, as PMIC is just a component on the
> > SoM module. So SoM's have different PMIC versions.
>
> I understand it's not convenient, so let's try to find a good solution.
>
> > > one option is to perform the auto-detection in the boot
> > > loader and update the DT dynamically there.
> >
> > Yes, this is an option. Bootloader updates "renesas,invert-xtoscb" property based
> > on PMIC version.
> >
> > Not sure, From binding perspective, Documenting "renesas,invert-xtoscb" is OK for
> > the relevant maintainers??
>
> It's fine with me at least :-) I think a property makes sense, as it
> describes the device. Updating the device tree in the boot loader based
> on auto-detection of features is also fairly common (to set the amount
> of DRAM for instance).
>
> What I'm not entirely sure about in this case is if a property would be
> the best option, or two different compatible strings. I'll let the
> appropriate maintainer recommend one of those two options. In either
> case, the boot loader would be responsible for updating the DT.

Indeed. DT binding best practices 101: do not use properties to
distinguish, use compatible values instead.

And don't use different compatible values if you can distinguish using
a version register.  Unfortunately the version register is part of the
main/first device (the PMIC), so the RTC cannot find out easily...

So basically you have an i2c mfd.  The Linux mfd subsystem is tailored
for platform devices, so it's not a good match.  The closest we have
in i2c is the ancillary device...

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux