tegra: pmc: move IO pad IDs to a devicetree binding

This commit is contained in:
SwtcR 2018-02-17 16:39:39 +09:00
parent 2efb7c9f14
commit edcdfe9f45
4 changed files with 96 additions and 82 deletions

View file

@ -342,7 +342,7 @@ struct tegra_sor {
struct drm_info_list *debugfs_files;
const struct tegra_sor_ops *ops;
enum tegra_io_pad pad;
unsigned int pad;
/* for HDMI 2.0 */
struct tegra_sor_hdmi_settings *settings;

View file

@ -132,7 +132,7 @@ struct tegra_powergate {
};
struct tegra_io_pad_soc {
enum tegra_io_pad id;
unsigned int id;
unsigned int dpd;
unsigned int voltage;
};
@ -952,7 +952,7 @@ static void tegra_powergate_init(struct tegra_pmc *pmc,
}
static const struct tegra_io_pad_soc *
tegra_io_pad_find(struct tegra_pmc *pmc, enum tegra_io_pad id)
tegra_io_pad_find(struct tegra_pmc *pmc, unsigned int id)
{
unsigned int i;
@ -963,7 +963,7 @@ tegra_io_pad_find(struct tegra_pmc *pmc, enum tegra_io_pad id)
return NULL;
}
static int tegra_io_pad_prepare(enum tegra_io_pad id, unsigned long *request,
static int tegra_io_pad_prepare(unsigned int id, unsigned long *request,
unsigned long *status, u32 *mask)
{
const struct tegra_io_pad_soc *pad;
@ -1036,7 +1036,7 @@ static void tegra_io_pad_unprepare(void)
*
* Returns: 0 on success or a negative error code on failure.
*/
int tegra_io_pad_power_enable(enum tegra_io_pad id)
int tegra_io_pad_power_enable(unsigned int id)
{
unsigned long request, status;
u32 mask;
@ -1072,7 +1072,7 @@ EXPORT_SYMBOL(tegra_io_pad_power_enable);
*
* Returns: 0 on success or a negative error code on failure.
*/
int tegra_io_pad_power_disable(enum tegra_io_pad id)
int tegra_io_pad_power_disable(unsigned int id)
{
unsigned long request, status;
u32 mask;
@ -1102,7 +1102,7 @@ unlock:
}
EXPORT_SYMBOL(tegra_io_pad_power_disable);
int tegra_io_pad_set_voltage(enum tegra_io_pad id,
int tegra_io_pad_set_voltage(unsigned int id,
enum tegra_io_pad_voltage voltage)
{
const struct tegra_io_pad_soc *pad;
@ -1140,7 +1140,7 @@ int tegra_io_pad_set_voltage(enum tegra_io_pad id,
}
EXPORT_SYMBOL(tegra_io_pad_set_voltage);
int tegra_io_pad_get_voltage(enum tegra_io_pad id)
int tegra_io_pad_get_voltage(unsigned int id)
{
const struct tegra_io_pad_soc *pad;
u32 value;

View file

@ -0,0 +1,79 @@
/*
* Copyright (c) 2010 Google, Inc
* Copyright (c) 2014 NVIDIA Corporation
*
* Author:
* Colin Cross <ccross@google.com>
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that 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.
*
*/
#ifndef _DT_BINDINGS_SOC_TEGRA_PMC_H
#define _DT_BINDINGS_SOC_TEGRA_PMC_H
#define TEGRA_IO_PAD_AUDIO 0
#define TEGRA_IO_PAD_AUDIO_HV 1
#define TEGRA_IO_PAD_BB 2
#define TEGRA_IO_PAD_CAM 3
#define TEGRA_IO_PAD_COMP 4
#define TEGRA_IO_PAD_CONN 5
#define TEGRA_IO_PAD_CSIA 6
#define TEGRA_IO_PAD_CSIB 7
#define TEGRA_IO_PAD_CSIC 8
#define TEGRA_IO_PAD_CSID 9
#define TEGRA_IO_PAD_CSIE 10
#define TEGRA_IO_PAD_CSIF 11
#define TEGRA_IO_PAD_DBG 12
#define TEGRA_IO_PAD_DEBUG_NONAO 13
#define TEGRA_IO_PAD_DMIC 14
#define TEGRA_IO_PAD_DMIC_HV 15
#define TEGRA_IO_PAD_DP 16
#define TEGRA_IO_PAD_DSI 17
#define TEGRA_IO_PAD_DSIB 18
#define TEGRA_IO_PAD_DSIC 19
#define TEGRA_IO_PAD_DSID 20
#define TEGRA_IO_PAD_EDP 21
#define TEGRA_IO_PAD_EMMC 22
#define TEGRA_IO_PAD_EMMC2 23
#define TEGRA_IO_PAD_GPIO 24
#define TEGRA_IO_PAD_HDMI 25
#define TEGRA_IO_PAD_HDMI_DP0 26
#define TEGRA_IO_PAD_HDMI_DP1 27
#define TEGRA_IO_PAD_HSIC 28
#define TEGRA_IO_PAD_HV 29
#define TEGRA_IO_PAD_LVDS 30
#define TEGRA_IO_PAD_MIPI_BIAS 31
#define TEGRA_IO_PAD_NAND 32
#define TEGRA_IO_PAD_PEX_BIAS 33
#define TEGRA_IO_PAD_PEX_CLK_BIAS 34
#define TEGRA_IO_PAD_PEX_CLK1 35
#define TEGRA_IO_PAD_PEX_CLK2 36
#define TEGRA_IO_PAD_PEX_CLK3 37
#define TEGRA_IO_PAD_PEX_CNTRL 38
#define TEGRA_IO_PAD_SDMMC1 39
#define TEGRA_IO_PAD_SDMMC1_HV 40
#define TEGRA_IO_PAD_SDMMC2 41
#define TEGRA_IO_PAD_SDMMC2_HV 42
#define TEGRA_IO_PAD_SDMMC3 43
#define TEGRA_IO_PAD_SDMMC3_HV 44
#define TEGRA_IO_PAD_SDMMC4 45
#define TEGRA_IO_PAD_SPI 46
#define TEGRA_IO_PAD_SPI_HV 47
#define TEGRA_IO_PAD_SYS_DDC 48
#define TEGRA_IO_PAD_UART 49
#define TEGRA_IO_PAD_UFS 50
#define TEGRA_IO_PAD_USB0 51
#define TEGRA_IO_PAD_USB1 52
#define TEGRA_IO_PAD_USB2 53
#define TEGRA_IO_PAD_USB3 54
#define TEGRA_IO_PAD_USB_BIAS 55
#endif /* _DT_BINDINGS_SOC_TEGRA_PMC_H */

View file

@ -22,6 +22,7 @@
#include <linux/reboot.h>
#include <soc/tegra/pm.h>
#include <dt-bindings/soc/tegra/pmc.h>
struct clk;
struct reset_control;
@ -70,72 +71,6 @@ int tegra_pmc_cpu_remove_clamping(unsigned int cpuid);
#define TEGRA_POWERGATE_3D0 TEGRA_POWERGATE_3D
/**
* enum tegra_io_pad - I/O pad group identifier
*
* I/O pins on Tegra SoCs are grouped into so-called I/O pads. Each such pad
* can be used to control the common voltage signal level and power state of
* the pins of the given pad.
*/
enum tegra_io_pad {
TEGRA_IO_PAD_AUDIO,
TEGRA_IO_PAD_AUDIO_HV,
TEGRA_IO_PAD_BB,
TEGRA_IO_PAD_CAM,
TEGRA_IO_PAD_COMP,
TEGRA_IO_PAD_CONN,
TEGRA_IO_PAD_CSIA,
TEGRA_IO_PAD_CSIB,
TEGRA_IO_PAD_CSIC,
TEGRA_IO_PAD_CSID,
TEGRA_IO_PAD_CSIE,
TEGRA_IO_PAD_CSIF,
TEGRA_IO_PAD_DBG,
TEGRA_IO_PAD_DEBUG_NONAO,
TEGRA_IO_PAD_DMIC,
TEGRA_IO_PAD_DMIC_HV,
TEGRA_IO_PAD_DP,
TEGRA_IO_PAD_DSI,
TEGRA_IO_PAD_DSIB,
TEGRA_IO_PAD_DSIC,
TEGRA_IO_PAD_DSID,
TEGRA_IO_PAD_EDP,
TEGRA_IO_PAD_EMMC,
TEGRA_IO_PAD_EMMC2,
TEGRA_IO_PAD_GPIO,
TEGRA_IO_PAD_HDMI,
TEGRA_IO_PAD_HDMI_DP0,
TEGRA_IO_PAD_HDMI_DP1,
TEGRA_IO_PAD_HSIC,
TEGRA_IO_PAD_HV,
TEGRA_IO_PAD_LVDS,
TEGRA_IO_PAD_MIPI_BIAS,
TEGRA_IO_PAD_NAND,
TEGRA_IO_PAD_PEX_BIAS,
TEGRA_IO_PAD_PEX_CLK_BIAS,
TEGRA_IO_PAD_PEX_CLK1,
TEGRA_IO_PAD_PEX_CLK2,
TEGRA_IO_PAD_PEX_CLK3,
TEGRA_IO_PAD_PEX_CNTRL,
TEGRA_IO_PAD_SDMMC1,
TEGRA_IO_PAD_SDMMC1_HV,
TEGRA_IO_PAD_SDMMC2,
TEGRA_IO_PAD_SDMMC2_HV,
TEGRA_IO_PAD_SDMMC3,
TEGRA_IO_PAD_SDMMC3_HV,
TEGRA_IO_PAD_SDMMC4,
TEGRA_IO_PAD_SPI,
TEGRA_IO_PAD_SPI_HV,
TEGRA_IO_PAD_SYS_DDC,
TEGRA_IO_PAD_UART,
TEGRA_IO_PAD_UFS,
TEGRA_IO_PAD_USB0,
TEGRA_IO_PAD_USB1,
TEGRA_IO_PAD_USB2,
TEGRA_IO_PAD_USB3,
TEGRA_IO_PAD_USB_BIAS,
};
/* deprecated, use TEGRA_IO_PAD_{HDMI,LVDS} instead */
#define TEGRA_IO_RAIL_HDMI TEGRA_IO_PAD_HDMI
#define TEGRA_IO_RAIL_LVDS TEGRA_IO_PAD_LVDS
@ -160,11 +95,11 @@ int tegra_powergate_remove_clamping(unsigned int id);
int tegra_powergate_sequence_power_up(unsigned int id, struct clk *clk,
struct reset_control *rst);
int tegra_io_pad_power_enable(enum tegra_io_pad id);
int tegra_io_pad_power_disable(enum tegra_io_pad id);
int tegra_io_pad_set_voltage(enum tegra_io_pad id,
int tegra_io_pad_power_enable(unsigned int id);
int tegra_io_pad_power_disable(unsigned int id);
int tegra_io_pad_set_voltage(unsigned int id,
enum tegra_io_pad_voltage voltage);
int tegra_io_pad_get_voltage(enum tegra_io_pad id);
int tegra_io_pad_get_voltage(unsigned int id);
/* deprecated, use tegra_io_pad_power_{enable,disable}() instead */
int tegra_io_rail_power_on(unsigned int id);
@ -202,23 +137,23 @@ static inline int tegra_powergate_sequence_power_up(unsigned int id,
return -ENOSYS;
}
static inline int tegra_io_pad_power_enable(enum tegra_io_pad id)
static inline int tegra_io_pad_power_enable(unsigned int id)
{
return -ENOSYS;
}
static inline int tegra_io_pad_power_disable(enum tegra_io_pad id)
static inline int tegra_io_pad_power_disable(unsigned int id)
{
return -ENOSYS;
}
static inline int tegra_io_pad_set_voltage(enum tegra_io_pad id,
static inline int tegra_io_pad_set_voltage(unsigned int id,
enum tegra_io_pad_voltage voltage)
{
return -ENOSYS;
}
static inline int tegra_io_pad_get_voltage(enum tegra_io_pad id)
static inline int tegra_io_pad_get_voltage(unsigned int id)
{
return -ENOSYS;
}