hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/pinctrl/tegra/pinctrl-tegra.h
....@@ -1,16 +1,8 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Driver for the NVIDIA Tegra pinmux
34 *
45 * Copyright (c) 2011, NVIDIA CORPORATION. All rights reserved.
5
- *
6
- * This program is free software; you can redistribute it and/or modify it
7
- * under the terms and conditions of the GNU General Public License,
8
- * version 2, as published by the Free Software Foundation.
9
- *
10
- * This program is distributed in the hope it will be useful, but WITHOUT
11
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13
- * more details.
146 */
157
168 #ifndef __PINMUX_TEGRA_H__
....@@ -25,6 +17,7 @@
2517
2618 int nbanks;
2719 void __iomem **regs;
20
+ u32 *backup_regs;
2821 };
2922
3023 enum tegra_pinconf_param {
....@@ -104,7 +97,6 @@
10497 * @tri_reg: Tri-state register offset.
10598 * @tri_bank: Tri-state register bank.
10699 * @tri_bit: Tri-state register bit.
107
- * @parked_bit: Parked register bit. -1 if unsupported.
108100 * @einput_bit: Enable-input register bit.
109101 * @odrain_bit: Open-drain register bit.
110102 * @lock_bit: Lock register bit.
....@@ -115,7 +107,8 @@
115107 * drvup, slwr, slwf, and drvtype parameters.
116108 * @drv_bank: Drive fields register bank.
117109 * @hsm_bit: High Speed Mode register bit.
118
- * @schmitt_bit: Scmitt register bit.
110
+ * @sfsel_bit: GPIO/SFIO selection register bit.
111
+ * @schmitt_bit: Schmitt register bit.
119112 * @lpmd_bit: Low Power Mode register bit.
120113 * @drvdn_bit: Drive Down register bit.
121114 * @drvdn_width: Drive Down field width.
....@@ -126,6 +119,7 @@
126119 * @slwf_bit: Slew Falling register bit.
127120 * @slwf_width: Slew Falling field width.
128121 * @drvtype_bit: Drive type register bit.
122
+ * @parked_bitmask: Parked register mask. 0 if unsupported.
129123 *
130124 * -1 in a *_reg field means that feature is unsupported for this group.
131125 * *_bank and *_reg values are irrelevant when *_reg is -1.
....@@ -143,10 +137,10 @@
143137 const unsigned *pins;
144138 u8 npins;
145139 u8 funcs[4];
146
- s16 mux_reg;
147
- s16 pupd_reg;
148
- s16 tri_reg;
149
- s16 drv_reg;
140
+ s32 mux_reg;
141
+ s32 pupd_reg;
142
+ s32 tri_reg;
143
+ s32 drv_reg;
150144 u32 mux_bank:2;
151145 u32 pupd_bank:2;
152146 u32 tri_bank:2;
....@@ -154,13 +148,13 @@
154148 s32 mux_bit:6;
155149 s32 pupd_bit:6;
156150 s32 tri_bit:6;
157
- s32 parked_bit:6;
158151 s32 einput_bit:6;
159152 s32 odrain_bit:6;
160153 s32 lock_bit:6;
161154 s32 ioreset_bit:6;
162155 s32 rcv_sel_bit:6;
163156 s32 hsm_bit:6;
157
+ s32 sfsel_bit:6;
164158 s32 schmitt_bit:6;
165159 s32 lpmd_bit:6;
166160 s32 drvdn_bit:6;
....@@ -172,6 +166,7 @@
172166 s32 drvup_width:6;
173167 s32 slwr_width:6;
174168 s32 slwf_width:6;
169
+ u32 parked_bitmask;
175170 };
176171
177172 /**
....@@ -199,8 +194,11 @@
199194 bool hsm_in_mux;
200195 bool schmitt_in_mux;
201196 bool drvtype_in_mux;
197
+ bool sfsel_in_mux;
202198 };
203199
200
+extern const struct dev_pm_ops tegra_pinctrl_pm;
201
+
204202 int tegra_pinctrl_probe(struct platform_device *pdev,
205203 const struct tegra_pinctrl_soc_data *soc_data);
206204 #endif