Re: [PATCH] pinctrl: bcm2835: Use bcm2835 gpio_chip label for bcm2711

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

 



On 2/15/22 8:56 AM, Stefan Wahren wrote:
> Hi,
> 
> Am 15.02.22 um 15:44 schrieb Lukas Wunner:
> 
>> On Tue, Feb 15, 2022 at 01:00:47PM +0100, Stefan Wahren wrote:
>>> Am 15.02.22 um 06:52 schrieb Lukas Wunner:
>>>> Commit b1d84a3d0a26 ("pinctrl: bcm2835: Add support for all GPIOs on
>>>> BCM2711") used a different label for the bcm2711 gpio_chip vis-à-vis
>>>> the bcm2835.
>>>>
>>>> That breaks compatibility for GPIO_LOOKUP_IDX() and GPIO_HOG() clauses
>>>> when porting from older Raspberry Pi Compute Modules to the CM4 or CM4S.
>>> could you explain the breakage more in detail, is it kernel or user space?
>> This kernel module (which is sought to be upstreamed mid-term)
>> requests GPIOs at runtime for a chardev:
>>
>> https://github.com/RevolutionPi/piControl/blob/master/revpi_core.c#L50
>>
>> That fails on BCM2711 because a different label name was used,
>> even though the pin-controller is otherwise compatible to BCM2835.
> 
> sorry, but you cannot blame the mainline kernel for assumptions in out
> of tree drivers. What happens if another driver relies on the existing
> labeling?
> 
> How about detecting the platform via devicetree functions in your driver?
> 
>>
>>
>>> A little bit off topic, but what is this CM4S? Is it special version of
>>> the CM4? Can you provide a link or something?
>> BCM2711 in a CM1/CM3-compatible form factor.  There is no public
>> documentation at this point besides the device-tree overlay and
>> what's being discussed in the forums and on GitHub:
>>
>> https://github.com/raspberrypi/linux/blob/rpi-5.15.y/arch/arm/boot/dts/bcm2711-rpi-cm4s.dts
>> https://forums.raspberrypi.com/viewtopic.php?t=325975
>> https://github.com/search?q=cm4s&type=commits
> Thanks a lot.
>>
>>>> The name change seems unwarranted given it's essentially the same
>>>> hardware, so use the old name instead.
>>> I disagree at this point. The pinctrl of bcm2835 and bcm2711 are
>>> different. For example the bcm2835 has only 54 GPIOs while the bcm2711
>>> has 58.
>> Four additional GPIOs don't justify a different label name given the
>> pin-controller otherwise behaves the same.  We also had minimal
>> differences in pin assignment on BCM2835/6/7 and that didn't
>> justify a different label name either.
> 
> No, the GPIO pins of BCM2835/6/7 SoC are always identical from driver
> point of view, because they use the same devicetree compatible. It's the
> Raspberry Pi board which connect the GPIOs differently, that was one of
> the reasons for introduction of GPIO line names via devicetree.
> 
> I understand your pain, but i cannot give an Ack to this change.

I agree with Stefan here, besides changing the driver name now would
mean potentially breaking user-space since the driver name is visible in
a variety of places. Seems to me like this is too late, we should have
caught this during the introduction of 2711.
--
Florian



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux