blob: 5acbd298b3254f23f61f47bde8176d5b255d64ca [file] [log] [blame]
/*
* Copyright 2021 ASR Microelectronics (Shanghai) Co., Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __DTS_ASR18XX_PINFUNC_H
#define __DTS_ASR18XX_PINFUNC_H
/* drive-strength: value, mask */
#define DS_SLOW0 pinctrl-single,drive-strength = <0x0000 0x1C08>
#define DS_SLOW1 pinctrl-single,drive-strength = <0x0800 0x1C08>
#define DS_MEDIUM pinctrl-single,drive-strength = <0x1000 0x1C08>
#define DS_FAST pinctrl-single,drive-strength = <0x1800 0x1C08>
#define DS_FAST0 pinctrl-single,drive-strength = <0x0400 0x1C08>
#define DS_FAST1 pinctrl-single,drive-strength = <0x0C00 0x1C08>
#define DS_FAST2 pinctrl-single,drive-strength = <0x1400 0x1C08>
#define DS_FAST3 pinctrl-single,drive-strength = <0x1C00 0x1C08>
#define DS_STRONG0 pinctrl-single,drive-strength = <0x1008 0x1C08>
/* slow-rate: value, mask */
#define SL_NORMAL pinctrl-single,slew-rate = <0x0000 0x0080>
#define SL_LOW pinctrl-single,slew-rate = <0x0080 0x0080>
/* input-schmitt: value, mask ; input-schmitt-enable: value, enable, disable, mask */
#define EDGE_NONE pinctrl-single,input-schmitt = <0 0x330>; \
pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>
#define EDGE_RISE pinctrl-single,input-schmitt = <0x10 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_FALL pinctrl-single,input-schmitt = <0x20 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_BOTH pinctrl-single,input-schmitt = <0x30 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_RISE_HYST1 pinctrl-single,input-schmitt = <0x110 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_FALL_HYST1 pinctrl-single,input-schmitt = <0x120 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_BOTH_HYST1 pinctrl-single,input-schmitt = <0x130 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_RISE_HYST2 pinctrl-single,input-schmitt = <0x210 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_FALL_HYST2 pinctrl-single,input-schmitt = <0x220 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_BOTH_HYST2 pinctrl-single,input-schmitt = <0x230 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_RISE_HYST3 pinctrl-single,input-schmitt = <0x310 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_FALL_HYST3 pinctrl-single,input-schmitt = <0x320 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
#define EDGE_BOTH_HYST3 pinctrl-single,input-schmitt = <0x330 0x330>; \
pinctrl-single,input-schmitt-enable = <0x0 0 0x40 0x40>
/* bias-pullup/down: value, enable, disable, mask */
#define PULL_NONE pinctrl-single,bias-pullup = <0x0000 0xc000 0 0xc000>; \
pinctrl-single,bias-pulldown = <0x0000 0xa000 0 0xa000>
#define PULL_UP pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>; \
pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>
#define PULL_DOWN pinctrl-single,bias-pullup = <0x8000 0xc000 0x8000 0xc000>; \
pinctrl-single,bias-pulldown = <0xa000 0xa000 0 0xa000>
#define PULL_BOTH pinctrl-single,bias-pullup = <0xc000 0xc000 0x8000 0xc000>; \
pinctrl-single,bias-pulldown = <0xa000 0xa000 0x8000 0xa000>
#define PULL_FLOAT pinctrl-single,bias-pullup = <0x8000 0x8000 0 0xc000>; \
pinctrl-single,bias-pulldown = <0x8000 0x8000 0 0xa000>
#define MFP_DEFAULT DS_MEDIUM;PULL_NONE;EDGE_NONE;SL_NORMAL
#define MFP_PULL_UP DS_MEDIUM;PULL_UP;EDGE_NONE;SL_NORMAL
#define MFP_PULL_DOWN DS_MEDIUM;PULL_DOWN;EDGE_NONE;SL_NORMAL
#define MFP_PULL_FLOAT DS_MEDIUM;PULL_FLOAT;EDGE_NONE;SL_NORMAL
/*
* 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 DF_IO0 0x0040
#define DF_IO1 0x003c
#define DF_IO2 0x0038
#define DF_IO3 0x0034
#define DF_IO4 0x0030
#define DF_IO5 0x002c
#define DF_IO6 0x0028
#define DF_IO7 0x0024
#define DF_IO8 0x0020
#define DF_IO9 0x001c
#define DF_IO10 0x0018
#define DF_IO11 0x0014
#define DF_IO12 0x0010
#define DF_IO13 0x000c
#define DF_IO14 0x0008
#define DF_IO15 0x0004
#define DF_nCS0 0x0044
#define DF_nCS1 0x0048
#define SM_nCS0 0x004c
#define SM_nCS1 0x0050
#define DF_WEn 0x0054
#define DF_REn 0x0058
#define DF_CLE_SM_OEn 0x005c
#define DF_ALE_SM_WEn 0x0060
#define DF_RDY0 0x0068
#define DF_RDY1 0x0078
#define SM_SCLK 0x0064
#define SM_BE0 0x006c
#define SM_BE1 0x0070
#define SM_ADV 0x0074
#define SM_ADVMUX 0x007c
#define SM_RDY 0x0080
#define MMC1_DAT7 0x0084
#define MMC1_DAT6 0x0088
#define MMC1_DAT5 0x008c
#define MMC1_DAT4 0x0090
#define MMC1_DAT3 0x0094
#define MMC1_DAT2 0x0098
#define MMC1_DAT1 0x009c
#define MMC1_DAT0 0x00a0
#define MMC1_CMD 0x00a4
#define MMC1_CLK 0x00a8
#define MMC1_CD 0x00ac
#define MMC1_WP 0x00b0
#define PRI_TDI 0xB4
#define PRI_TMS 0xB8
#define PRI_TCK 0xBC
#define PRI_TDO 0xC0
#define RF_CONF_4 0x0274
#define VCXO_REQ 0xD4
#define VCXO_OUT 0xD8
#define VBUS_DRV 0xC8
#define CLK_REQ 0x00cc
#define ANT_SW4 0x26C
#define PA_MODE 0x270
#define TDS_DIO0 0x2B4
#define TDS_DIO1 0x2B8
#define TDS_DIO2 0x2BC
#define TDS_DIO3 0x2C0
#define TDS_DIO4 0x2C4
#define TDS_DIO5 0x2C8
#define TDS_DIO6 0x2CC
#define TDS_DIO7 0x2D0
#define TDS_CLK 0x2D4
#define TDS_DIO8 0x2D8
#define TDS_DIO9 0x2DC
#define TDS_DIO10 0x2E0
#define TDS_DIO11 0x2E4
#define TDS_DIO12 0x2E8
#define TDS_DIO13 0x2EC
#define TDS_DIO14 0x2F0
#define TDS_DIO15 0x2F4
#define TDS_DIO16 0x2F8
#define TDS_DIO17 0x2FC
#define TDS_DIO18 0x300
#define TDS_PAON 0x2E0
#define TDS_PACTRL 0x2E4
#define TDS_RXON 0x2E8
#define TDS_TXON 0x2EC
#define TDS_LNACTRL 0x2F0
#define TDS_MIXCTRL 0x2F4
#define TDS_TRXSW 0x2F8
#define TDS_RXREV 0x2FC
#define TDS_TXREV 0x300
#define GPIO00 0x0DC
#define GPIO01 0x0E0
#define GPIO02 0x0E4
#define GPIO03 0x0E8
#define GPIO04 0x0EC
#define GPIO05 0x0F0
#define GPIO06 0x0F4
#define GPIO07 0x0F8
#define GPIO08 0x0FC
#define GPIO09 0x100
#define GPIO10 0x104
#define GPIO11 0x108
#define GPIO12 0x10C
#define GPIO13 0x110
#define GPIO14 0x114
#define GPIO15 0x118
#define GPIO16 0x11C
#define GPIO17 0x120
#define GPIO18 0x124
#define GPIO19 0x128
#define GPIO20 0x12C
#define GPIO21 0x130
#define GPIO22 0x134
#define GPIO23 0x138
#define GPIO24 0x13C
#define GPIO25 0x140
#define GPIO26 0x144
#define GPIO27 0x148
#define GPIO28 0x14c
#define GPIO29 0x150
#define GPIO30 0x154
#define GPIO31 0x158
#define GPIO32 0x15c
#define GPIO33 0x160
#define GPIO34 0x164
#define GPIO35 0x168
#define GPIO36 0x16c
#define GPIO37 0x170
#define GPIO38 0x174
#define GPIO39 0x178
#define GPIO40 0x17c
#define GPIO41 0x180
#define GPIO42 0x184
#define GPIO43 0x188
#define GPIO44 0x18c
#define GPIO45 0x190
#define GPIO46 0x194
#define GPIO47 0x198
#define GPIO48 0x19c
#define GPIO49 0x1a0
#define GPIO50 0x1a4
#define GPIO51 0x1a8
#define GPIO52 0x1ac
#define GPIO53 0x1b0
#define GPIO54 0x1b4
#define GPIO55 0x1f4
#define GPIO60 0x304
#define GPIO61 0x308
#define GPIO62 0x30C
#define GPIO63 0x310
#define GPIO64 0x314
#define GPIO65 0x318
#define GPIO66 0x31C
#define GPIO69 0x2BC
#define GPIO70 0x2C0
#define GPIO71 0x1B8
#define GPIO72 0x1BC
#define GPIO79 0x2E4
#define GPIO80 0x2E8
#define GPIO81 0x280
#define GPIO82 0x284
#define GPIO83 0x288
#define GPIO86 0x204
// Add by liubin
#define GPIO117 0xB4
#define GPIO118 0xB8
#define GPIO119 0xBC
#define GPIO120 0xC0
#define GPIO123 0xCC
#define GPIO124 0xD0
#define GPIO126 0xD8
#define USB_ID 0xb0
#define ND_IO8 DF_IO8
#define ND_IO9 DF_IO9
#define ND_IO10 DF_IO10
#define ND_IO11 DF_IO11
#define ND_IO12 DF_IO12
#define ND_IO13 DF_IO13
#define ND_IO14 DF_IO14
#define ND_IO15 DF_IO15
#define ND_IO7 DF_IO7
#define ND_IO6 DF_IO6
#define ND_IO5 DF_IO5
#define ND_IO4 DF_IO4
#define ND_IO3 DF_IO3
#define ND_IO2 DF_IO2
#define ND_IO1 DF_IO1
#define ND_IO0 DF_IO0
#define ND_CLE_SM_OEN DF_CLE_SM_OEn
#define SM_BEN0 SM_BE0
#endif /* __DTS_ASR18XX_PINFUNC_H */