Re: [PATCH 1/2] DT: pinctrl: Add binding documentation for Spreadtrum pin controller

From: Linus Walleij
Date: Fri Jun 09 2017 - 03:59:10 EST


On Wed, May 31, 2017 at 9:58 AM, Baolin Wang <baolin.wang@xxxxxxxxxxxxxx> wrote:
> On ä, 5æ 29, 2017 at 06:18:29äå +0200, Linus Walleij wrote:

>> > +pad driving level, system control select
>>
>> Actually I do not understand at all what "domain pad driving level"
>> or "system control select" means, those are very generic terms.
>> Can you describe precisely what it means? What domain? What
>> is a domain pad? What kind of system control? What is it selecting
>> between?
>
> I try to explain what they are on Spreadtrum platform. One pin can output
> 3.0v or 1.8v, depending on the related domain pad driving selection, if
> the related domain pad slect 3.0v, then the pin can output 3.0v.

This can probably use the generic pin control property
PIN_CONFIG_POWER_SOURCE (see include/linux/pinctrl/pinconf-generic.h)
and the corresponding DT binding "power-source" see
drivers/pinctrl/pinconf-generic.c and
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt

> "system control" is used to choose this function (like: UART0) for which
> system, since we have several systems (AP/CP/CM4) on one SoC.

Aha, that sounds like a very spreadtrum-specific feature actually.

> Since we have lots of different pin configuration to set, it will be hard to
> use the standard pin config describing in binding files. But I will try to
> remove the magic number and use the common pin config.

It is possible to use generic config and add a few custom bindings
"on top" of it. See for example:
Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt
mixing a few generic and Qualcomm-specific pin config things,
and their driver is here:
drivers/pinctrl/qcom/pinctrl-spmi-mpp.c

Yours,
Linus Walleij