Re: pinctrl-single: num_maps in generic pinconf support?

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

 



* Drew Fustini <drew@xxxxxxxxxxxxxxx> [200527 22:20]:
> On Wed, May 27, 2020 at 09:51:22AM -0700, Tony Lindgren wrote:
> > * Drew Fustini <drew@xxxxxxxxxxxxxxx> [200526 12:22]:
> > > Hello Haojian and Linus,
> > > 
> > > For pcs_parse_one_pinctrl_entry() in drivers/pinctrl/pinctrl-single.c,
> > > I see that num_maps is set to 2 if PCS_HAS_PINCONF is enabled:
> > > 
> > > 1057         if (PCS_HAS_PINCONF && function) {
> > > 1058                 res = pcs_parse_pinconf(pcs, np, function, map);
> > > 1059                 if (res)
> > > 1060                         goto free_pingroups;
> > > 1061                 *num_maps = 2;
> > > 1062         } else {
> > > 1063                 *num_maps = 1;
> > > 1064         }
> > > 1065         mutex_unlock(&pcs->mutex);
> > > 
> > > git blame shows me that came from 9dddb4df90d13:
> > > "pinctrl: single: support generic pinconf"
> > > 
> > > Would you be able to provide any insight as to num_maps needs to be 2
> > > when pinconf is enabled?
> > 
> > Only slightly related, but we should really eventually move omaps to use
> > #pinctrl-cells = <2> (or 3) instead of 1, and pass the pinconf seprately
> > from the mux mode. 
> 
> Thanks for the insight, Tony.
> 
> I was not considering the situation where pinctrl-cells would be more
> than 1.
> 
> I see now from pinctrl-single.txt bindings doc that:
> 
> - #pinctrl-cells : number of cells in addition to the index, set to 1
>   for pinctrl-single,pins and 2 for pinctrl-single,bits
> 
> I am now wondering if it wrong for me to expect compatible string of 
> "pinconf-single" to work with pinctrl-cells of 1.

Ideally the #pinctrl-cells would be what makes sense for the
hardware. However, I'm guessing pinctrl-single.c needs patching
for that to happen.

> I see that arch/arm/boot/dts/da850.dtsi has:
> 
> 154                 pmx_core: pinmux@14120 {
> 155                         compatible = "pinctrl-single";
> 156                         reg = <0x14120 0x50>;
> 157                         #pinctrl-cells = <2>;
> 158                         pinctrl-single,bit-per-mux;
> 
> and arch/arm/boot/dts/keystone-k2l.dtsi has:
> 
> 108                 k2l_pmx: pinmux@2620690 {
> 109                         compatible = "pinctrl-single";
> 110                         reg = <0x02620690 0xc>;
> 111                         #address-cells = <1>;
> 112                         #size-cells = <0>;
> 113                         #pinctrl-cells = <2>;
> 114                         pinctrl-single,bit-per-mux;

Yeah so there's also the "bit-per-mux" variant. That should not
affect #pinctrl-cells use, we just need to make it more flexible.

> > We already treat them separately with the new
> > AM33XX_PADCONF macro, so we'd only have to change one SoC at a time to
> > use updated #pinctrl-cells. But I think pinctrl-single might need some
> > changes before we can do that.
> 
> Do you mean that it would be possible to make the change just for AM335x
> to start with?

Yes. So ideally we'd just fix up whatever is needed in pinctrl-single.c,
then just set #pinctrl-cells = <2> in am33xx-l4.dtsi, and update the
AM33XX_PADCONF accordingly.

> Do you think the changes would be limited to pinctrl-single.c and the
> associated device tree files like am33xx-l4.dtsi ?

Yes that should be the case. There should be no need to churn the board
specific dts files now that we have AM33XX_PADCONF.

Regards,

Tony



[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux