Re: [PATCH] pinctrl: qcom-pmic-gpio: silence -EPROBE_DEFER message on probe

From: Krzysztof Kozlowski
Date: Fri Aug 18 2023 - 09:52:51 EST


On 17/08/2023 18:26, Brian Masney wrote:
> On Thu, Aug 17, 2023 at 05:01:19PM +0200, Konrad Dybcio wrote:
>> On 17.08.2023 16:59, Brian Masney wrote:
>>> The following message shows up one or more times when booting a Qualcomm
>>> SA8775 Development board:
>>>
>>> qcom-spmi-gpio c440000.spmi:pmic@2:gpio@8800: can't add gpio chip
>>>
>>> Convert this over to use dev_err_probe() to silence this message.
>>>
>>> Signed-off-by: Brian Masney <bmasney@xxxxxxxxxx>
>>> ---
>> That looks odd, why would it ever defer?
>>
>> SPMI should be up by the time it gets a chance to probe.
>
> You replied within the same minute of me posting that patch, which is
> the fastest review I've had to date on an upstream kernel list. Before
> we continue, please verify:
>
> [ ] I am not a robot
>
> :)
>
> So SPMI is up and probes normally the first time, and is up by time this
> driver probes. I think the probe deferral is happening somewhere in
> pinctrl, however I am not sure exactly where. I added some tracers to
> the kernel command line and here's some relevant log messages:
>
> device: 'c440000.spmi:pmic@2:gpio@8800': device_add
> bus: 'platform': add device c440000.spmi:pmic@2:gpio@8800
> PM: Adding info for platform:c440000.spmi:pmic@2:gpio@8800
> bus: 'platform': __driver_probe_device: matched device c440000.spmi:pmic@2:gpio@8800 with driver qcom-spmi-gpio
> bus: 'platform': really_probe: probing driver qcom-spmi-gpio with device c440000.spmi:pmic@2:gpio@8800
> qcom-spmi-gpio c440000.spmi:pmic@2:gpio@8800: no pinctrl handle
> qcom-spmi-gpio c440000.spmi:pmic@2:gpio@8800: try to register 12 pins ...
> pinctrl core: registered pin 0 (gpio1) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 1 (gpio2) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 2 (gpio3) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 3 (gpio4) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 4 (gpio5) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 5 (gpio6) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 6 (gpio7) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 7 (gpio8) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 8 (gpio9) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 9 (gpio10) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 10 (gpio11) on c440000.spmi:pmic@2:gpio@8800
> pinctrl core: registered pin 11 (gpio12) on c440000.spmi:pmic@2:gpio@8800
> qcom-spmi-gpio c440000.spmi:pmic@2:gpio@8800: no hogs found
> qcom-spmi-gpio c440000.spmi:pmic@2:gpio@8800: error -EPROBE_DEFER: can't add gpio chip
> qcom-spmi-gpio c440000.spmi:pmic@2:gpio@8800: Driver qcom-spmi-gpio requests probe deferral
> platform c440000.spmi:pmic@2:gpio@8800: Added to deferred list
>
> The second time it probes the device is successfully added.

There is a bug in DTS. I'll send a patch.

Best regards,
Krzysztof