/*
* Driver for the NVIDIA Tegra pinmux
*
- * Copyright (c) 2011, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2011-2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
*/
struct tegra_function {
const char *name;
- const char **groups;
+ const char * const *groups;
unsigned ngroups;
};
* @einput_bit: Enable-input register bit.
* @odrain_bit: Open-drain register bit.
* @lock_bit: Lock register bit.
+ * @parked_bit: Parked register bit.
* @ioreset_bit: IO reset register bit.
* @rcv_sel_bit: Receiver select bit.
+ * @e_io_hv_bit: E_IO_HV register bit.
* @drv_reg: Drive fields register offset.
- * This register contains hsm, schmitt, lpmd, drvdn,
- * drvup, slwr, slwf, and drvtype parameters.
+ * This register contains the hsm, schmitt, lpmd, drvdn,
+ * drvup, slwr, and slwf parameters.
* @drv_bank: Drive fields register bank.
* @hsm_bit: High Speed Mode register bit.
* @schmitt_bit: Scmitt register bit.
* @slwr_width: Slew Rising field width.
* @slwf_bit: Slew Falling register bit.
* @slwf_width: Slew Falling field width.
+ * @drvtype_bank: Drive type fields register bank.
* @drvtype_bit: Drive type register bit.
+ * @drvtype_width: Drive type field width.
*
* -1 in a *_reg field means that feature is unsupported for this group.
* *_bank and *_reg values are irrelevant when *_reg is -1.
const unsigned *pins;
u8 npins;
u8 funcs[4];
- s16 mux_reg;
- s16 pupd_reg;
- s16 tri_reg;
- s16 drv_reg;
+ s32 mux_reg;
+ s32 pupd_reg;
+ s32 tri_reg;
+ s32 drv_reg;
u32 mux_bank:2;
u32 pupd_bank:2;
u32 tri_bank:2;
s32 einput_bit:6;
s32 odrain_bit:6;
s32 lock_bit:6;
+ s32 parked_bit:6;
s32 ioreset_bit:6;
s32 rcv_sel_bit:6;
+ s32 e_io_hv_bit:6;
s32 hsm_bit:6;
s32 schmitt_bit:6;
s32 lpmd_bit:6;
s32 drvup_bit:6;
s32 slwr_bit:6;
s32 slwf_bit:6;
+ s32 gpio_bit:6;
+ s32 lpdr_bit:6;
+ s32 pbias_buf_bit:6;
+ s32 preemp_bit:6;
s32 drvtype_bit:6;
+ s32 rfu_in_bit:6;
s32 drvdn_width:6;
s32 drvup_width:6;
s32 slwr_width:6;
s32 slwf_width:6;
+ s32 drvtype_width:6;
+ s32 rfu_in_width:6;
};
/**
unsigned ngpios;
const struct pinctrl_pin_desc *pins;
unsigned npins;
- struct tegra_function *functions;
+ const struct tegra_function *functions;
unsigned nfunctions;
const struct tegra_pingroup *groups;
unsigned ngroups;
+ bool is_gpio_reg_support;
+ int (*suspend)(u32 *pg_data);
+ void (*resume)(u32 *pg_data);
+ int (*gpio_request_enable)(unsigned pin);
bool hsm_in_mux;
bool schmitt_in_mux;
bool drvtype_in_mux;