Re: [PATCH 6/7] dt-bindings: add header file of ASR8751C pinctrl driver

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

 



On Sat, Mar 23, 2019 at 10:01:27PM +0800, qiaozhou wrote:
> From: Qiao Zhou <qiaozhou@xxxxxxxxxxxx>
> 
> Add pinctrl definition and configuration of ASR8751C pins. The
> configuration contains pull up/down, driver strength, edge detection,
> multiple function etc.
> 
> Signed-off-by: qiaozhou <qiaozhou@xxxxxxxxxxxx>
> ---
>  include/dt-bindings/pinctrl/asr8751c-pinfunc.h | 341 +++++++++++++++++++++++++
>  1 file changed, 341 insertions(+)
>  create mode 100644 include/dt-bindings/pinctrl/asr8751c-pinfunc.h
> 
> diff --git a/include/dt-bindings/pinctrl/asr8751c-pinfunc.h b/include/dt-bindings/pinctrl/asr8751c-pinfunc.h
> new file mode 100644
> index 0000000..b326a6d
> --- /dev/null
> +++ b/include/dt-bindings/pinctrl/asr8751c-pinfunc.h
> @@ -0,0 +1,341 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * This header provides constants for ASR Aquila pinctrl bindings.
> + *
> + * Copyright (c) 2019, ASR Microelectronics(Shanghai) Co., Ltd.
> + * All rights reserved.
> + *
> + * Author: Tim Wang <timwang@xxxxxxxxxxxx>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms and conditions of the GNU General Public License,
> + * version 2, as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope it will be useful, but WITHOUT
> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> + * more details.

Don't need the GPL boilerplate with the SPDX tag.

> + */
> +
> +#ifndef __DTS_ASR8751C_PINFUNC_H
> +#define __DTS_ASR8751C_PINFUNC_H
> +
> +/*
> + * drive-strength = <value mask>
> + * SLOW0:  < 75MHz
> + * SLOW1:  < 150MHz
> + * MEDIUM: < 200MHz
> + * FAST:   > 200MHz
> + */
> +#define DS_SLOW0		pinctrl-single,drive-strength = <0x0000 0x1800>
> +#define DS_SLOW1		pinctrl-single,drive-strength = <0x0800 0x1800>
> +#define DS_MEDIUM		pinctrl-single,drive-strength = <0x1000 0x1800>
> +#define DS_FAST			pinctrl-single,drive-strength = <0x1800 0x1800>

Don't do complex definitions. Keep it to simple value defines.

> +
> +/*
> + * Edge detect setting
> + * input-schmitt = <value mask>;
> + * input-schmitt-enable = <value enable disable mask>
> + */
> +
> +/* no edge detect */
> +#define EDGE_NONE		pinctrl-single,input-schmitt		= <0x00 0x30>;	\
> +				pinctrl-single,input-schmitt-enable	= <0x40 0x00 0x40 0x40>
> +/* enable edge fall detect only*/
> +#define EDGE_FALL		pinctrl-single,input-schmitt		= <0x20 0x30>;	\
> +				pinctrl-single,input-schmitt-enable	= <0x00 0x00 0x40 0x40>
> +/* enable edge rise detect only */
> +#define EDGE_RISE		pinctrl-single,input-schmitt		= <0x10 0x30>;	\
> +				pinctrl-single,input-schmitt-enable	= <0x00 0x00 0x40 0x40>
> +/* enable edge fall/rise detect */
> +#define EDGE_BOTH		pinctrl-single,input-schmitt		= <0x30 0x30>;	\
> +				pinctrl-single,input-schmitt-enable	= <0x00 0x00 0x40 0x40>
> +
> +/*
> + * bias-pullup = <value enable disable mask>;
> + * bias-pulldown = <value enable disable mask>
> + */
> +
> +/* PULL_SEL controlled by Alternative Function */
> +#define PULL_NONE		pinctrl-single,bias-pullup	= <0x0000 0xc000 0x0000 0xc000>;	\
> +				pinctrl-single,bias-pulldown	= <0x0000 0xa000 0x0000 0xa000>
> +/* PULL_SEL controlled by MFPR, enable PULL_UP, disable PULL_DOWN */
> +#define PULL_UP			pinctrl-single,bias-pullup	= <0xc000 0xc000 0x0000 0xc000>;	\
> +				pinctrl-single,bias-pulldown	= <0x8000 0xa000 0x8000 0xa000>
> +/* PULL_SEL controlled by MFPR, disable PULL_UP, enable PULL_DOWN */
> +#define PULL_DOWN		pinctrl-single,bias-pullup	= <0x8000 0xc000 0x8000 0xc000>; \
> +				pinctrl-single,bias-pulldown	= <0xa000 0xa000 0x0000 0xa000>
> +/* PULL_SEL controlled by MFPR, enable PULL_UP and PULL_DOWN */
> +#define PULL_BOTH		pinctrl-single,bias-pullup	= <0xc000 0xc000 0x8000 0xc000>; \
> +				pinctrl-single,bias-pulldown	= <0xa000 0xa000 0x8000 0xa000>
> +/* PULL_SEL controlled by MFPR, disable PULL_UP and PULL_DOWN */
> +#define PULL_FLOAT		pinctrl-single,bias-pullup	= <0x8000 0x8000 0x0000 0xc000>;	\
> +				pinctrl-single,bias-pulldown	= <0x8000 0x8000 0x0000 0xa000>
> +/* Low Power Mode settings */
> +/* no LPM setting, LPM state same as active */
> +#define LPM_NONE		pinctrl-single,low-power-mode = <0x000 0x388>
> +/* LPM, output 0 */
> +#define LPM_DRIVE_LOW		pinctrl-single,low-power-mode = <0x208 0x388>
> +/* LPM, output 1*/
> +#define LPM_DRIVE_HIGH		pinctrl-single,low-power-mode = <0x308 0x388>
> +/* LPM, input state */
> +#define LPM_FLOAT		pinctrl-single,low-power-mode = <0x288 0x388>
> +
> +/* Active settings */
> +#define MFP_DEFAULT		DS_MEDIUM;PULL_NONE;EDGE_NONE;LPM_NONE
> +#define MFP_PULL_UP		DS_MEDIUM;PULL_UP;EDGE_NONE;LPM_NONE
> +#define MFP_PULL_DOWN		DS_MEDIUM;PULL_DOWN;EDGE_NONE;LPM_NONE
> +#define MFP_PULL_FLOAT		DS_MEDIUM;PULL_FLOAT;EDGE_NONE;LPM_NONE
> +
> +/* LPM output */
> +#define MFP_LPM_DRIVE_HIGH	DS_MEDIUM;PULL_NONE;EDGE_NONE;LPM_DRIVE_HIGH
> +#define MFP_LPM_DRIVE_LOW	DS_MEDIUM;PULL_NONE;EDGE_NONE;LPM_DRIVE_LOW
> +
> +/* LPM input */
> +#define MFP_LPM_FLOAT		DS_MEDIUM;PULL_NONE;EDGE_NONE;LPM_FLOAT
> +#define MFP_LPM_PULL_UP		DS_MEDIUM;PULL_UP;EDGE_NONE;LPM_FLOAT
> +#define MFP_LPM_PULL_DW		DS_MEDIUM;PULL_DOWN;EDGE_NONE;LPM_FLOAT
> +
> +/*
> + * MFP alternative functions 0-7
> + */
> +#define AF0			0x0
> +#define AF1			0x1
> +#define AF2			0x2
> +#define AF3			0x3
> +#define AF4			0x4
> +#define AF5			0x5
> +#define AF6			0x6
> +#define AF7			0x7
> +
> +/*
> + * Pin names and MFPR addresses
> + */
> +#define MFPR_OFFSET(x)	((x) << 2)
> +#define GPIO_00		MFPR_OFFSET(1)
> +#define GPIO_01		MFPR_OFFSET(2)
> +#define GPIO_02		MFPR_OFFSET(3)
> +#define GPIO_03		MFPR_OFFSET(4)
> +#define GPIO_04		MFPR_OFFSET(5)
> +#define GPIO_05		MFPR_OFFSET(6)
> +#define GPIO_06		MFPR_OFFSET(7)
> +#define GPIO_07		MFPR_OFFSET(8)
> +#define GPIO_08		MFPR_OFFSET(9)
> +#define GPIO_09		MFPR_OFFSET(10)
> +#define GPIO_10		MFPR_OFFSET(11)
> +#define GPIO_11		MFPR_OFFSET(12)
> +#define GPIO_12		MFPR_OFFSET(13)
> +#define GPIO_13		MFPR_OFFSET(14)
> +#define GPIO_14		MFPR_OFFSET(15)
> +#define GPIO_15		MFPR_OFFSET(16)
> +#define GPIO_16		MFPR_OFFSET(17)
> +#define GPIO_17		MFPR_OFFSET(18)
> +#define GPIO_18		MFPR_OFFSET(19)
> +#define GPIO_19		MFPR_OFFSET(20)
> +#define GPIO_20		MFPR_OFFSET(21)
> +#define GPIO_21		MFPR_OFFSET(22)
> +#define GPIO_22		MFPR_OFFSET(23)
> +#define GPIO_23		MFPR_OFFSET(24)
> +#define GPIO_24		MFPR_OFFSET(25)
> +#define GPIO_25		MFPR_OFFSET(26)
> +#define RXTXEN		MFPR_OFFSET(27)
> +#define PRI_TXFRAME	MFPR_OFFSET(28)
> +#define SPI0_EN		MFPR_OFFSET(29)
> +#define RF_RESET_N	MFPR_OFFSET(30)
> +#define SEC_SYSCLKEN	MFPR_OFFSET(31)
> +#define PRI_RXFRAME	MFPR_OFFSET(32)
> +#define PRI_RBDP0_0	MFPR_OFFSET(33)
> +#define PRI_RBDP0_1	MFPR_OFFSET(34)
> +#define PRI_RBDP0_2	MFPR_OFFSET(35)
> +#define PRI_RBDP0_3	MFPR_OFFSET(36)
> +#define PRI_RBDP0_4	MFPR_OFFSET(37)
> +#define PRI_RBDP0_5	MFPR_OFFSET(38)
> +#define PRI_RBDP0_6	MFPR_OFFSET(39)
> +#define PRI_RBDP0_7	MFPR_OFFSET(40)
> +#define PRI_RBDP0_8	MFPR_OFFSET(41)
> +#define PRI_RBDP0_9	MFPR_OFFSET(42)
> +#define PRI_RBDP0_10	MFPR_OFFSET(43)
> +#define PRI_MCLK	MFPR_OFFSET(98)
> +#define PRI_RBDP0_11	MFPR_OFFSET(44)
> +#define RXTXDATA	MFPR_OFFSET(45)
> +#define SYSCLK_OUT	MFPR_OFFSET(46)
> +#define PRI_FCLK	MFPR_OFFSET(47)
> +#define PRI_RBDP1_0	MFPR_OFFSET(48)
> +#define PRI_RBDP1_1	MFPR_OFFSET(49)
> +#define SPI0_CLK	MFPR_OFFSET(50)
> +#define PRI_RBDP1_2	MFPR_OFFSET(51)
> +#define PRI_RBDP1_3	MFPR_OFFSET(52)
> +#define PRI_RBDP1_4	MFPR_OFFSET(53)
> +#define PRI_RBDP1_5	MFPR_OFFSET(54)
> +#define PRI_RBDP1_6	MFPR_OFFSET(55)
> +#define PRI_RBDP1_7	MFPR_OFFSET(56)
> +#define PRI_RBDP1_8	MFPR_OFFSET(57)
> +#define PRI_RBDP1_9	MFPR_OFFSET(58)
> +#define SPI0_DIO	MFPR_OFFSET(59)
> +#define PRI_RBDP1_10	MFPR_OFFSET(60)
> +#define PRI_RBDP1_11	MFPR_OFFSET(61)
> +#define SPI1_EN		MFPR_OFFSET(62)
> +#define SEC_RXFRAME	MFPR_OFFSET(63)
> +#define SEC_RBDP0_0	MFPR_OFFSET(64)
> +#define SEC_RBDP0_1	MFPR_OFFSET(65)
> +#define SEC_RBDP0_2	MFPR_OFFSET(66)
> +#define SEC_RBDP0_3	MFPR_OFFSET(67)
> +#define SEC_RBDP0_4	MFPR_OFFSET(68)
> +#define SEC_RBDP0_5	MFPR_OFFSET(69)
> +#define SEC_RBDP0_6	MFPR_OFFSET(70)
> +#define SEC_RBDP0_7	MFPR_OFFSET(71)
> +#define SEC_RBDP0_8	MFPR_OFFSET(72)
> +#define SEC_RBDP0_9	MFPR_OFFSET(73)
> +#define SEC_RBDP0_10	MFPR_OFFSET(74)
> +#define SEC_MCLK	MFPR_OFFSET(99)
> +#define SEC_RBDP0_11	MFPR_OFFSET(75)
> +#define SPI1_CLK	MFPR_OFFSET(76)
> +#define SPI1_DIO	MFPR_OFFSET(77)
> +#define CP_GPO_0	MFPR_OFFSET(78)
> +#define CP_GPO_1	MFPR_OFFSET(79)
> +#define CP_GPO_2	MFPR_OFFSET(80)
> +#define CP_GPO_3	MFPR_OFFSET(81)
> +#define CP_GPO_4	MFPR_OFFSET(82)
> +#define CP_GPO_5	MFPR_OFFSET(83)
> +#define CP_GPO_6	MFPR_OFFSET(84)
> +#define CP_GPO_7	MFPR_OFFSET(85)
> +#define CP_GPO_8	MFPR_OFFSET(86)
> +#define CP_GPO_9	MFPR_OFFSET(87)
> +#define CP_GPO_10	MFPR_OFFSET(88)
> +#define CP_GPO_11	MFPR_OFFSET(89)
> +#define CP_GPO_12	MFPR_OFFSET(90)
> +#define CP_GPO_13	MFPR_OFFSET(91)
> +#define CP_GPO_14	MFPR_OFFSET(92)
> +#define CP_GPO_15	MFPR_OFFSET(93)
> +#define CP_UART_RXD	MFPR_OFFSET(94)
> +#define CP_UART_TXD	MFPR_OFFSET(95)
> +#define CP_UART_RTS	MFPR_OFFSET(96)
> +#define CP_UART_CTS	MFPR_OFFSET(97)
> +#define USIM2_UCLK	MFPR_OFFSET(100)
> +#define USIM2_UIO	MFPR_OFFSET(101)
> +#define USIM2_URSTn	MFPR_OFFSET(102)
> +#define USIM_UCLK	MFPR_OFFSET(103)
> +#define USIM_UIO	MFPR_OFFSET(104)
> +#define USIM_URSTn	MFPR_OFFSET(105)
> +#define MMC1_DAT3	MFPR_OFFSET(110)
> +#define MMC1_DAT2	MFPR_OFFSET(111)
> +#define MMC1_DAT1	MFPR_OFFSET(112)
> +#define MMC1_DAT0	MFPR_OFFSET(113)
> +#define MMC1_CMD	MFPR_OFFSET(114)
> +#define MMC1_CLK	MFPR_OFFSET(115)
> +#define PWR_SCL		MFPR_OFFSET(118)
> +#define PWR_SDA		MFPR_OFFSET(119)
> +#define VCXO_EN		MFPR_OFFSET(120)
> +#define VBAT_DROP	MFPR_OFFSET(121)
> +#define PMIC_INT_N	MFPR_OFFSET(122)
> +#define PRI_TDI		MFPR_OFFSET(123)
> +#define PRI_TMS		MFPR_OFFSET(124)
> +#define PRI_TCK		MFPR_OFFSET(125)
> +#define PRI_TDO		MFPR_OFFSET(126)
> +#define SLAVE_RESET_OUT	MFPR_OFFSET(127)
> +#define VCXO_REQ1	MFPR_OFFSET(128)
> +#define VCXO_REQ	MFPR_OFFSET(129)
> +#define VCXO_OUT	MFPR_OFFSET(130)
> +#define GPIO_26		MFPR_OFFSET(131)
> +#define GPIO_27		MFPR_OFFSET(132)
> +#define GPIO_28		MFPR_OFFSET(133)
> +#define GPIO_29		MFPR_OFFSET(134)
> +#define GPIO_30		MFPR_OFFSET(135)
> +#define GPIO_31		MFPR_OFFSET(136)
> +#define GPIO_32		MFPR_OFFSET(137)
> +#define GPIO_33		MFPR_OFFSET(138)
> +#define GPIO_34		MFPR_OFFSET(139)
> +#define GPIO_35		MFPR_OFFSET(140)
> +#define GPIO_36		MFPR_OFFSET(141)
> +#define GPIO_37		MFPR_OFFSET(142)
> +#define GPIO_38		MFPR_OFFSET(143)
> +#define GPIO_39		MFPR_OFFSET(144)
> +#define GPIO_40		MFPR_OFFSET(145)
> +#define GPIO_41		MFPR_OFFSET(146)
> +#define GPIO_42		MFPR_OFFSET(147)
> +#define GPIO_43		MFPR_OFFSET(148)
> +#define GPIO_44		MFPR_OFFSET(149)
> +#define GPIO_45		MFPR_OFFSET(150)
> +#define GPIO_46		MFPR_OFFSET(151)
> +#define GPIO_47		MFPR_OFFSET(152)
> +#define GPIO_48		MFPR_OFFSET(153)
> +#define GPIO_49		MFPR_OFFSET(154)
> +#define GPIO_50		MFPR_OFFSET(155)
> +#define GPIO_51		MFPR_OFFSET(156)
> +#define GPIO_52		MFPR_OFFSET(157)
> +#define GPIO_53		MFPR_OFFSET(158)
> +#define GPIO_54		MFPR_OFFSET(159)
> +#define GPIO_55		MFPR_OFFSET(160)
> +#define GPIO_56		MFPR_OFFSET(161)
> +#define GPIO_57		MFPR_OFFSET(162)
> +#define GPIO_58		MFPR_OFFSET(163)
> +#define GPIO_59		MFPR_OFFSET(164)
> +#define GPIO_60		MFPR_OFFSET(165)
> +#define GPIO_61		MFPR_OFFSET(166)
> +#define GPIO_62		MFPR_OFFSET(167)
> +#define GPIO_63		MFPR_OFFSET(168)
> +#define GPIO_64		MFPR_OFFSET(169)
> +#define GPIO_65		MFPR_OFFSET(170)
> +#define GPIO_66		MFPR_OFFSET(171)
> +#define GPIO_67		MFPR_OFFSET(172)
> +#define GPIO_68		MFPR_OFFSET(173)
> +#define GPIO_69		MFPR_OFFSET(174)
> +#define GPIO_70		MFPR_OFFSET(175)
> +#define GPIO_71		MFPR_OFFSET(176)
> +#define GPIO_72		MFPR_OFFSET(177)
> +#define GPIO_73		MFPR_OFFSET(178)
> +#define GPIO_74		MFPR_OFFSET(179)
> +#define GPIO_75		MFPR_OFFSET(180)
> +#define GPIO_76		MFPR_OFFSET(181)
> +#define GPIO_77		MFPR_OFFSET(182)
> +#define GPIO_78		MFPR_OFFSET(183)
> +#define GPIO_79		MFPR_OFFSET(184)
> +#define GPIO_80		MFPR_OFFSET(185)
> +#define GPIO_81		MFPR_OFFSET(186)
> +#define GPIO_82		MFPR_OFFSET(187)
> +#define GPIO_83		MFPR_OFFSET(188)
> +#define GPIO_84		MFPR_OFFSET(189)
> +#define GPIO_85		MFPR_OFFSET(190)
> +#define GPIO_86		MFPR_OFFSET(191)
> +#define GPIO_87		MFPR_OFFSET(192)
> +#define GPIO_88		MFPR_OFFSET(193)
> +#define GPIO_89		MFPR_OFFSET(194)
> +#define GPIO_90		MFPR_OFFSET(195)
> +#define GPIO_91		MFPR_OFFSET(196)
> +#define GPIO_92		MFPR_OFFSET(197)
> +#define GPIO_93		MFPR_OFFSET(198)
> +#define GPIO_94		MFPR_OFFSET(199)
> +#define GPIO_95		MFPR_OFFSET(200)
> +#define GPIO_96		MFPR_OFFSET(201)
> +#define GPIO_97		MFPR_OFFSET(202)
> +#define GPIO_98		MFPR_OFFSET(203)
> +#define GPIO_99		MFPR_OFFSET(204)
> +#define GPIO_100	MFPR_OFFSET(205)
> +#define GPIO_101	MFPR_OFFSET(206)
> +#define GPIO_102	MFPR_OFFSET(207)
> +#define GPIO_103	MFPR_OFFSET(208)
> +#define GPIO_104	MFPR_OFFSET(209)
> +#define GPIO_105	MFPR_OFFSET(210)
> +#define GPIO_106	MFPR_OFFSET(211)
> +#define GPIO_107	MFPR_OFFSET(212)
> +#define GPIO_108	MFPR_OFFSET(213)
> +#define GPIO_109	MFPR_OFFSET(214)
> +#define GPIO_110	MFPR_OFFSET(215)
> +#define GPIO_111	MFPR_OFFSET(216)
> +#define GPIO_112	MFPR_OFFSET(217)
> +#define GPIO_113	MFPR_OFFSET(218)
> +#define GPIO_114	MFPR_OFFSET(219)
> +#define GPIO_115	MFPR_OFFSET(220)
> +#define GPIO_116	MFPR_OFFSET(221)
> +#define GPIO_117	MFPR_OFFSET(222)
> +#define GPIO_118	MFPR_OFFSET(223)
> +#define GPIO_119	MFPR_OFFSET(224)
> +#define GPIO_120	MFPR_OFFSET(225)
> +#define GPIO_121	MFPR_OFFSET(226)
> +#define GPIO_122	MFPR_OFFSET(227)
> +#define GPIO_123	MFPR_OFFSET(228)
> +#define GPIO_124	MFPR_OFFSET(229)
> +#define GPIO_125	MFPR_OFFSET(230)
> +#define GPIO_126	MFPR_OFFSET(231)
> +#define GPIO_127	MFPR_OFFSET(232)
> +#endif /* __DTS_ASR8751C_PINFUNC_H */
> -- 
> 2.7.4
> 




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux