Re: [PATCH 1/2] dt-bindings: pinctrl: k3-am6: Introduce pinmux definitions

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

 




On 08/11/18 7:15 PM, Nishanth Menon wrote:
> On 16:56-20181108, Vignesh R wrote:
>> From: Tero Kristo <t-kristo@xxxxxx>
>>
>> The dt-bindings header for TI K3-AM6 SoCs define a set of macros for
>> defining pinmux configs in human readable form, instead of raw-coded
>> hex values.
>>
>> Signed-off-by: Tero Kristo <t-kristo@xxxxxx>
>> Signed-off-by: Lokesh Vutla <lokeshvutla@xxxxxx>
>> Signed-off-by: Vignesh R <vigneshr@xxxxxx>
>> ---
>>  MAINTAINERS                          |  1 +
>>  include/dt-bindings/pinctrl/k3-am6.h | 49 ++++++++++++++++++++++++++++
>>  2 files changed, 50 insertions(+)
>>  create mode 100644 include/dt-bindings/pinctrl/k3-am6.h
>>
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index fb58c64dda49..7fd59955fd21 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -2204,6 +2204,7 @@ S:	Supported
>>  F:	Documentation/devicetree/bindings/arm/ti/k3.txt
>>  F:	arch/arm64/boot/dts/ti/Makefile
>>  F:	arch/arm64/boot/dts/ti/k3-*
>> +F:	include/dt-bindings/pinctrl/k3-am6.h
>>  
>>  ARM/TEXAS INSTRUMENT KEYSTONE ARCHITECTURE
>>  M:	Santosh Shilimkar <ssantosh@xxxxxxxxxx>
>> diff --git a/include/dt-bindings/pinctrl/k3-am6.h b/include/dt-bindings/pinctrl/k3-am6.h
>> new file mode 100644
>> index 000000000000..42e22ee57600
>> --- /dev/null
>> +++ b/include/dt-bindings/pinctrl/k3-am6.h
> 
> Are we thinking of creating headers for every single SoC?

We would need one file per SoC family (i.e atleast one for K3 family as
a whole) as pinctrl register layout is significantly different than
other TI SoCs. I can rename the file to include/dt-bindings/pinctrl/k3.h
to indicate its intended to be common for all K3 SoCs, if you prefer.

> 
> Is it possible for us to reduce the number of headers we'd need?
> 
>> @@ -0,0 +1,49 @@
>> +/* SPDX-License-Identifier: GPL-2.0 */
>> +/*
>> + * This header provides constants for TI K3-AM6 pinctrl bindings.
>> + *
>> + * Copyright (C) 2018 Texas Instruments
> 
> Please fix this:
> Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
> 

Done.

>> + */
>> +#ifndef _DT_BINDINGS_PINCTRL_TI_K3_AM6_H
>> +#define _DT_BINDINGS_PINCTRL_TI_K3_AM6_H
>> +
>> +/* K3 mux mode options for each pin. See TRM for options */
>> +#define MUX_MODE0	0
>> +#define MUX_MODE1	1
>> +#define MUX_MODE2	2
>> +#define MUX_MODE3	3
>> +#define MUX_MODE4	4
>> +#define MUX_MODE5	5
>> +#define MUX_MODE6	6
>> +#define MUX_MODE7	7
>> +#define MUX_MODE15	15
>> +
> bit 15?
> 

Nope its 0xF. Anyway, dropping these macros as suggested by Tony on
Patch 2/2

>> +#define PULL_DISABLE		(1 << 16)
> PULLUDEN -> this bit enables the Pull
>> +#define PULL_UP			(1 << 17)
> This is a pull direction selection bit.
> 
> so, should these be:
> #define PULLUDEN_SHIFT (16)
> #define PULLTYPESEL_SHIFT (17)
> #define RXACTIVE_SHIFT (18)
> 
> #define PULL_DISABLE (1 << PULLUDEN_SHIFT)
> #define PULL_ENABLE (0 << PULLUDEN_SHIFT)
> 
> #define PULL_UP (1 << PULLTYPESEL_SHIFT | PULL_ENABLE)
> #define PULL_DOWN (0 << PULLTYPESEL_SHIFT | PULL_ENABLE)
> 
>> +#define INPUT_EN		(1 << 18)
> #define INPUT_EN (1 << RXACTIVE_SHIFT)
> 
> These names dont seem to match up to the http://www.ti.com/lit/pdf/spruid7
> 
> This might be readable when people look up trm and try to generate the
> pinmux setup.
> 

Ok, will update as you suggested above.

>> +#define SLEWCTRL_200MHZ		0
>> +#define SLEWCTRL_150MHZ		(1 << 19)
>> +#define SLEWCTRL_100MHZ		(2 << 19)
>> +#define SLEWCTRL_50MHZ		(3 << 19)
> 
>> +#define TX_DIS			(1 << 21)
> What does this mean? Transmit disable? or output disable?
> 
>> +#define ISO_OVR			(1 << 22)
>> +#define ISO_BYPASS		(1 << 23)
>> +#define DS_EN			(1 << 24)
>> +#define DS_INPUT		(1 << 25)
> Seems to be DSOUT_DIS not the same as input -> in deepsleep,
> there is no input - this bit simply means that you are driving an output
> or not during deep sleep?
> 
>> +#define DS_FORCE_OUT_HIGH	(1 << 26)
> you need a FORCE_OUT_LOW as well to be readable.
> 
>> +#define DS_PULL_UP_DOWN_EN	0
>> +#define DS_PULL_UP_DOWN_DIS	(1 << 27)
>> +#define DS_PULL_UP_SEL		(1 << 28)
>> +#define WAKEUP_ENABLE		(1 << 29)
> I do have a similar set of confusion here as well.

Dropping all the above from v2 as we wont be needing them ATM.

>> +
>> +#define PIN_OUTPUT		(PULL_DISABLE)
>> +#define PIN_OUTPUT_PULLUP	(PULL_UP)
>> +#define PIN_OUTPUT_PULLDOWN	0
>> +#define PIN_INPUT		(INPUT_EN | PULL_DISABLE)
>> +#define PIN_INPUT_PULLUP	(INPUT_EN | PULL_UP)
>> +#define PIN_INPUT_PULLDOWN	(INPUT_EN)
> 
> 
> Not exactly sure of the approach taken here -> it seems to be a mix of
> implicit macro -> there needs to be some level of consistency and
> guidance to dts folks as to which macros are to be used and what not.
> 

Will fix that.

> will be nice if the number of macros are minimal and is clearly
> documented as to what macros are expected to be used in dts.
> 

I will come up with minimal set needed for now and add a comment as to
what macros are intended to be used in DT.

>> +
>> +#define AM65X_IOPAD(pa, val)		(((pa) & 0x1fff)) (val)
>> +#define AM65X_WKUP_IOPAD(pa, val)	(((pa) & 0x1fff)) (val)
>> +
>> +#endif
>> -- 
>> 2.19.1
>>
> 

-- 
Regards
Vignesh



[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