Re: [PATCH 4/6] soc/tegra: pmc: Use X macro to generate IO pad tables
On 11/07/18 10:23, Aapo Vienamo wrote: > On Wed, 11 Jul 2018 09:30:57 +0100 > Jon Hunter wrote: > >> On 10/07/18 13:47, Aapo Vienamo wrote: >>> Refactor the IO pad tables into macro tables so that they can be reused >>> to generate pinctrl pin descriptors. Also add a name field which is >>> needed by pinctrl. >>> >>> Signed-off-by: Aapo Vienamo >>> --- >>> drivers/soc/tegra/pmc.c | 231 >>> ++-- >>> 1 file changed, 126 insertions(+), 105 deletions(-) >>> >>> diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c >>> index 3f5b69fd..b84 100644 >>> --- a/drivers/soc/tegra/pmc.c >>> +++ b/drivers/soc/tegra/pmc.c >>> @@ -137,6 +137,7 @@ struct tegra_io_pad_soc { >>> enum tegra_io_pad id; >>> unsigned int dpd; >>> unsigned int voltage; >>> + const char *name; >>> }; >>> >>> struct tegra_pmc_regs { >>> @@ -1697,37 +1698,49 @@ static const u8 tegra124_cpu_powergates[] = { >>> TEGRA_POWERGATE_CPU3, >>> }; >>> >>> +#define TEGRA_IO_PAD(_id, _dpd, _voltage, _name) \ >>> + (struct tegra_io_pad_soc) { \ >>> + .id = _id, \ >>> + .dpd= _dpd, \ >>> + .voltage = _voltage,\ >>> + .name = _name,\ >>> + }, >>> + >>> +#define TEGRA124_IO_PAD_TABLE(_pad) >>> \ >>> + /* .id .dpd.voltage .name */ \ >>> + _pad(TEGRA_IO_PAD_AUDIO,17, UINT_MAX, "audio") \ >>> + _pad(TEGRA_IO_PAD_BB, 15, UINT_MAX, "bb") \ >>> + _pad(TEGRA_IO_PAD_CAM, 36, UINT_MAX, "cam")\ >>> + _pad(TEGRA_IO_PAD_COMP, 22, UINT_MAX, "comp") \ >>> + _pad(TEGRA_IO_PAD_CSIA, 0, UINT_MAX, "csia") \ >>> + _pad(TEGRA_IO_PAD_CSIB, 1, UINT_MAX, "csb")\ >>> + _pad(TEGRA_IO_PAD_CSIE, 44, UINT_MAX, "cse")\ >>> + _pad(TEGRA_IO_PAD_DSI, 2, UINT_MAX, "dsi")\ >>> + _pad(TEGRA_IO_PAD_DSIB, 39, UINT_MAX, "dsib") \ >>> + _pad(TEGRA_IO_PAD_DSIC, 40, UINT_MAX, "dsic") \ >>> + _pad(TEGRA_IO_PAD_DSID, 41, UINT_MAX, "dsid") \ >>> + _pad(TEGRA_IO_PAD_HDMI, 28, UINT_MAX, "hdmi") \ >>> + _pad(TEGRA_IO_PAD_HSIC, 19, UINT_MAX, "hsic") \ >>> + _pad(TEGRA_IO_PAD_HV, 38, UINT_MAX, "hv") \ >>> + _pad(TEGRA_IO_PAD_LVDS, 57, UINT_MAX, "lvds") \ >>> + _pad(TEGRA_IO_PAD_MIPI_BIAS,3, UINT_MAX, "mipi-bias") \ >>> + _pad(TEGRA_IO_PAD_NAND, 13, UINT_MAX, "nand") \ >>> + _pad(TEGRA_IO_PAD_PEX_BIAS, 4, UINT_MAX, "pex-bias") \ >>> + _pad(TEGRA_IO_PAD_PEX_CLK1, 5, UINT_MAX, "pex-clk1") \ >>> + _pad(TEGRA_IO_PAD_PEX_CLK2, 6, UINT_MAX, "pex-clk2") \ >>> + _pad(TEGRA_IO_PAD_PEX_CNTRL,32, UINT_MAX, "pex-cntrl") \ >>> + _pad(TEGRA_IO_PAD_SDMMC1, 33, UINT_MAX, "sdmmc1") \ >>> + _pad(TEGRA_IO_PAD_SDMMC3, 34, UINT_MAX, "sdmmc3") \ >>> + _pad(TEGRA_IO_PAD_SDMMC4, 35, UINT_MAX, "sdmmc4") \ >>> + _pad(TEGRA_IO_PAD_SYS_DDC, 58, UINT_MAX, "sys_ddc")\ >>> + _pad(TEGRA_IO_PAD_UART, 14, UINT_MAX, "uart") \ >>> + _pad(TEGRA_IO_PAD_USB0, 9, UINT_MAX, "usb0") \ >>> + _pad(TEGRA_IO_PAD_USB1, 10, UINT_MAX, "usb1") \ >>> + _pad(TEGRA_IO_PAD_USB2, 11, UINT_MAX, "usb2") \ >>> + _pad(TEGRA_IO_PAD_USB_BIAS, 12, UINT_MAX, "usb_bias") >>> + >>> static const struct tegra_io_pad_soc tegra124_io_pads[] = { >>> - { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_BB, .dpd = 15, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_CAM, .dpd = 36, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_COMP, .dpd = 22, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_CSIE, .dpd = 44, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_DSIB, .dpd = 39, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_DSIC, .dpd = 40, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_DSID, .dpd = 41, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_HDMI, .dpd = 28, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_HV, .dpd = 38, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_LVDS, .dpd = 57, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_NAND, .dpd = 13, .voltage = UINT_MAX }, >>> - { .id
Re: [PATCH 4/6] soc/tegra: pmc: Use X macro to generate IO pad tables
On 11/07/18 10:23, Aapo Vienamo wrote: > On Wed, 11 Jul 2018 09:30:57 +0100 > Jon Hunter wrote: > >> On 10/07/18 13:47, Aapo Vienamo wrote: >>> Refactor the IO pad tables into macro tables so that they can be reused >>> to generate pinctrl pin descriptors. Also add a name field which is >>> needed by pinctrl. >>> >>> Signed-off-by: Aapo Vienamo >>> --- >>> drivers/soc/tegra/pmc.c | 231 >>> ++-- >>> 1 file changed, 126 insertions(+), 105 deletions(-) >>> >>> diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c >>> index 3f5b69fd..b84 100644 >>> --- a/drivers/soc/tegra/pmc.c >>> +++ b/drivers/soc/tegra/pmc.c >>> @@ -137,6 +137,7 @@ struct tegra_io_pad_soc { >>> enum tegra_io_pad id; >>> unsigned int dpd; >>> unsigned int voltage; >>> + const char *name; >>> }; >>> >>> struct tegra_pmc_regs { >>> @@ -1697,37 +1698,49 @@ static const u8 tegra124_cpu_powergates[] = { >>> TEGRA_POWERGATE_CPU3, >>> }; >>> >>> +#define TEGRA_IO_PAD(_id, _dpd, _voltage, _name) \ >>> + (struct tegra_io_pad_soc) { \ >>> + .id = _id, \ >>> + .dpd= _dpd, \ >>> + .voltage = _voltage,\ >>> + .name = _name,\ >>> + }, >>> + >>> +#define TEGRA124_IO_PAD_TABLE(_pad) >>> \ >>> + /* .id .dpd.voltage .name */ \ >>> + _pad(TEGRA_IO_PAD_AUDIO,17, UINT_MAX, "audio") \ >>> + _pad(TEGRA_IO_PAD_BB, 15, UINT_MAX, "bb") \ >>> + _pad(TEGRA_IO_PAD_CAM, 36, UINT_MAX, "cam")\ >>> + _pad(TEGRA_IO_PAD_COMP, 22, UINT_MAX, "comp") \ >>> + _pad(TEGRA_IO_PAD_CSIA, 0, UINT_MAX, "csia") \ >>> + _pad(TEGRA_IO_PAD_CSIB, 1, UINT_MAX, "csb")\ >>> + _pad(TEGRA_IO_PAD_CSIE, 44, UINT_MAX, "cse")\ >>> + _pad(TEGRA_IO_PAD_DSI, 2, UINT_MAX, "dsi")\ >>> + _pad(TEGRA_IO_PAD_DSIB, 39, UINT_MAX, "dsib") \ >>> + _pad(TEGRA_IO_PAD_DSIC, 40, UINT_MAX, "dsic") \ >>> + _pad(TEGRA_IO_PAD_DSID, 41, UINT_MAX, "dsid") \ >>> + _pad(TEGRA_IO_PAD_HDMI, 28, UINT_MAX, "hdmi") \ >>> + _pad(TEGRA_IO_PAD_HSIC, 19, UINT_MAX, "hsic") \ >>> + _pad(TEGRA_IO_PAD_HV, 38, UINT_MAX, "hv") \ >>> + _pad(TEGRA_IO_PAD_LVDS, 57, UINT_MAX, "lvds") \ >>> + _pad(TEGRA_IO_PAD_MIPI_BIAS,3, UINT_MAX, "mipi-bias") \ >>> + _pad(TEGRA_IO_PAD_NAND, 13, UINT_MAX, "nand") \ >>> + _pad(TEGRA_IO_PAD_PEX_BIAS, 4, UINT_MAX, "pex-bias") \ >>> + _pad(TEGRA_IO_PAD_PEX_CLK1, 5, UINT_MAX, "pex-clk1") \ >>> + _pad(TEGRA_IO_PAD_PEX_CLK2, 6, UINT_MAX, "pex-clk2") \ >>> + _pad(TEGRA_IO_PAD_PEX_CNTRL,32, UINT_MAX, "pex-cntrl") \ >>> + _pad(TEGRA_IO_PAD_SDMMC1, 33, UINT_MAX, "sdmmc1") \ >>> + _pad(TEGRA_IO_PAD_SDMMC3, 34, UINT_MAX, "sdmmc3") \ >>> + _pad(TEGRA_IO_PAD_SDMMC4, 35, UINT_MAX, "sdmmc4") \ >>> + _pad(TEGRA_IO_PAD_SYS_DDC, 58, UINT_MAX, "sys_ddc")\ >>> + _pad(TEGRA_IO_PAD_UART, 14, UINT_MAX, "uart") \ >>> + _pad(TEGRA_IO_PAD_USB0, 9, UINT_MAX, "usb0") \ >>> + _pad(TEGRA_IO_PAD_USB1, 10, UINT_MAX, "usb1") \ >>> + _pad(TEGRA_IO_PAD_USB2, 11, UINT_MAX, "usb2") \ >>> + _pad(TEGRA_IO_PAD_USB_BIAS, 12, UINT_MAX, "usb_bias") >>> + >>> static const struct tegra_io_pad_soc tegra124_io_pads[] = { >>> - { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_BB, .dpd = 15, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_CAM, .dpd = 36, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_COMP, .dpd = 22, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_CSIE, .dpd = 44, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_DSIB, .dpd = 39, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_DSIC, .dpd = 40, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_DSID, .dpd = 41, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_HDMI, .dpd = 28, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_HV, .dpd = 38, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_LVDS, .dpd = 57, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX }, >>> - { .id = TEGRA_IO_PAD_NAND, .dpd = 13, .voltage = UINT_MAX }, >>> - { .id
Re: [PATCH 4/6] soc/tegra: pmc: Use X macro to generate IO pad tables
On Wed, 11 Jul 2018 09:30:57 +0100 Jon Hunter wrote: > On 10/07/18 13:47, Aapo Vienamo wrote: > > Refactor the IO pad tables into macro tables so that they can be reused > > to generate pinctrl pin descriptors. Also add a name field which is > > needed by pinctrl. > > > > Signed-off-by: Aapo Vienamo > > --- > > drivers/soc/tegra/pmc.c | 231 > > ++-- > > 1 file changed, 126 insertions(+), 105 deletions(-) > > > > diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c > > index 3f5b69fd..b84 100644 > > --- a/drivers/soc/tegra/pmc.c > > +++ b/drivers/soc/tegra/pmc.c > > @@ -137,6 +137,7 @@ struct tegra_io_pad_soc { > > enum tegra_io_pad id; > > unsigned int dpd; > > unsigned int voltage; > > + const char *name; > > }; > > > > struct tegra_pmc_regs { > > @@ -1697,37 +1698,49 @@ static const u8 tegra124_cpu_powergates[] = { > > TEGRA_POWERGATE_CPU3, > > }; > > > > +#define TEGRA_IO_PAD(_id, _dpd, _voltage, _name) \ > > + (struct tegra_io_pad_soc) { \ > > + .id = _id, \ > > + .dpd= _dpd, \ > > + .voltage = _voltage,\ > > + .name = _name,\ > > + }, > > + > > +#define TEGRA124_IO_PAD_TABLE(_pad) > > \ > > + /* .id .dpd.voltage .name */ \ > > + _pad(TEGRA_IO_PAD_AUDIO,17, UINT_MAX, "audio") \ > > + _pad(TEGRA_IO_PAD_BB, 15, UINT_MAX, "bb") \ > > + _pad(TEGRA_IO_PAD_CAM, 36, UINT_MAX, "cam")\ > > + _pad(TEGRA_IO_PAD_COMP, 22, UINT_MAX, "comp") \ > > + _pad(TEGRA_IO_PAD_CSIA, 0, UINT_MAX, "csia") \ > > + _pad(TEGRA_IO_PAD_CSIB, 1, UINT_MAX, "csb")\ > > + _pad(TEGRA_IO_PAD_CSIE, 44, UINT_MAX, "cse")\ > > + _pad(TEGRA_IO_PAD_DSI, 2, UINT_MAX, "dsi")\ > > + _pad(TEGRA_IO_PAD_DSIB, 39, UINT_MAX, "dsib") \ > > + _pad(TEGRA_IO_PAD_DSIC, 40, UINT_MAX, "dsic") \ > > + _pad(TEGRA_IO_PAD_DSID, 41, UINT_MAX, "dsid") \ > > + _pad(TEGRA_IO_PAD_HDMI, 28, UINT_MAX, "hdmi") \ > > + _pad(TEGRA_IO_PAD_HSIC, 19, UINT_MAX, "hsic") \ > > + _pad(TEGRA_IO_PAD_HV, 38, UINT_MAX, "hv") \ > > + _pad(TEGRA_IO_PAD_LVDS, 57, UINT_MAX, "lvds") \ > > + _pad(TEGRA_IO_PAD_MIPI_BIAS,3, UINT_MAX, "mipi-bias") \ > > + _pad(TEGRA_IO_PAD_NAND, 13, UINT_MAX, "nand") \ > > + _pad(TEGRA_IO_PAD_PEX_BIAS, 4, UINT_MAX, "pex-bias") \ > > + _pad(TEGRA_IO_PAD_PEX_CLK1, 5, UINT_MAX, "pex-clk1") \ > > + _pad(TEGRA_IO_PAD_PEX_CLK2, 6, UINT_MAX, "pex-clk2") \ > > + _pad(TEGRA_IO_PAD_PEX_CNTRL,32, UINT_MAX, "pex-cntrl") \ > > + _pad(TEGRA_IO_PAD_SDMMC1, 33, UINT_MAX, "sdmmc1") \ > > + _pad(TEGRA_IO_PAD_SDMMC3, 34, UINT_MAX, "sdmmc3") \ > > + _pad(TEGRA_IO_PAD_SDMMC4, 35, UINT_MAX, "sdmmc4") \ > > + _pad(TEGRA_IO_PAD_SYS_DDC, 58, UINT_MAX, "sys_ddc")\ > > + _pad(TEGRA_IO_PAD_UART, 14, UINT_MAX, "uart") \ > > + _pad(TEGRA_IO_PAD_USB0, 9, UINT_MAX, "usb0") \ > > + _pad(TEGRA_IO_PAD_USB1, 10, UINT_MAX, "usb1") \ > > + _pad(TEGRA_IO_PAD_USB2, 11, UINT_MAX, "usb2") \ > > + _pad(TEGRA_IO_PAD_USB_BIAS, 12, UINT_MAX, "usb_bias") > > + > > static const struct tegra_io_pad_soc tegra124_io_pads[] = { > > - { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_BB, .dpd = 15, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_CAM, .dpd = 36, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_COMP, .dpd = 22, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_CSIE, .dpd = 44, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_DSIB, .dpd = 39, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_DSIC, .dpd = 40, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_DSID, .dpd = 41, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_HDMI, .dpd = 28, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_HV, .dpd = 38, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_LVDS, .dpd = 57, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_NAND, .dpd = 13, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_PEX_BIAS, .dpd = 4, .voltage =
Re: [PATCH 4/6] soc/tegra: pmc: Use X macro to generate IO pad tables
On Wed, 11 Jul 2018 09:30:57 +0100 Jon Hunter wrote: > On 10/07/18 13:47, Aapo Vienamo wrote: > > Refactor the IO pad tables into macro tables so that they can be reused > > to generate pinctrl pin descriptors. Also add a name field which is > > needed by pinctrl. > > > > Signed-off-by: Aapo Vienamo > > --- > > drivers/soc/tegra/pmc.c | 231 > > ++-- > > 1 file changed, 126 insertions(+), 105 deletions(-) > > > > diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c > > index 3f5b69fd..b84 100644 > > --- a/drivers/soc/tegra/pmc.c > > +++ b/drivers/soc/tegra/pmc.c > > @@ -137,6 +137,7 @@ struct tegra_io_pad_soc { > > enum tegra_io_pad id; > > unsigned int dpd; > > unsigned int voltage; > > + const char *name; > > }; > > > > struct tegra_pmc_regs { > > @@ -1697,37 +1698,49 @@ static const u8 tegra124_cpu_powergates[] = { > > TEGRA_POWERGATE_CPU3, > > }; > > > > +#define TEGRA_IO_PAD(_id, _dpd, _voltage, _name) \ > > + (struct tegra_io_pad_soc) { \ > > + .id = _id, \ > > + .dpd= _dpd, \ > > + .voltage = _voltage,\ > > + .name = _name,\ > > + }, > > + > > +#define TEGRA124_IO_PAD_TABLE(_pad) > > \ > > + /* .id .dpd.voltage .name */ \ > > + _pad(TEGRA_IO_PAD_AUDIO,17, UINT_MAX, "audio") \ > > + _pad(TEGRA_IO_PAD_BB, 15, UINT_MAX, "bb") \ > > + _pad(TEGRA_IO_PAD_CAM, 36, UINT_MAX, "cam")\ > > + _pad(TEGRA_IO_PAD_COMP, 22, UINT_MAX, "comp") \ > > + _pad(TEGRA_IO_PAD_CSIA, 0, UINT_MAX, "csia") \ > > + _pad(TEGRA_IO_PAD_CSIB, 1, UINT_MAX, "csb")\ > > + _pad(TEGRA_IO_PAD_CSIE, 44, UINT_MAX, "cse")\ > > + _pad(TEGRA_IO_PAD_DSI, 2, UINT_MAX, "dsi")\ > > + _pad(TEGRA_IO_PAD_DSIB, 39, UINT_MAX, "dsib") \ > > + _pad(TEGRA_IO_PAD_DSIC, 40, UINT_MAX, "dsic") \ > > + _pad(TEGRA_IO_PAD_DSID, 41, UINT_MAX, "dsid") \ > > + _pad(TEGRA_IO_PAD_HDMI, 28, UINT_MAX, "hdmi") \ > > + _pad(TEGRA_IO_PAD_HSIC, 19, UINT_MAX, "hsic") \ > > + _pad(TEGRA_IO_PAD_HV, 38, UINT_MAX, "hv") \ > > + _pad(TEGRA_IO_PAD_LVDS, 57, UINT_MAX, "lvds") \ > > + _pad(TEGRA_IO_PAD_MIPI_BIAS,3, UINT_MAX, "mipi-bias") \ > > + _pad(TEGRA_IO_PAD_NAND, 13, UINT_MAX, "nand") \ > > + _pad(TEGRA_IO_PAD_PEX_BIAS, 4, UINT_MAX, "pex-bias") \ > > + _pad(TEGRA_IO_PAD_PEX_CLK1, 5, UINT_MAX, "pex-clk1") \ > > + _pad(TEGRA_IO_PAD_PEX_CLK2, 6, UINT_MAX, "pex-clk2") \ > > + _pad(TEGRA_IO_PAD_PEX_CNTRL,32, UINT_MAX, "pex-cntrl") \ > > + _pad(TEGRA_IO_PAD_SDMMC1, 33, UINT_MAX, "sdmmc1") \ > > + _pad(TEGRA_IO_PAD_SDMMC3, 34, UINT_MAX, "sdmmc3") \ > > + _pad(TEGRA_IO_PAD_SDMMC4, 35, UINT_MAX, "sdmmc4") \ > > + _pad(TEGRA_IO_PAD_SYS_DDC, 58, UINT_MAX, "sys_ddc")\ > > + _pad(TEGRA_IO_PAD_UART, 14, UINT_MAX, "uart") \ > > + _pad(TEGRA_IO_PAD_USB0, 9, UINT_MAX, "usb0") \ > > + _pad(TEGRA_IO_PAD_USB1, 10, UINT_MAX, "usb1") \ > > + _pad(TEGRA_IO_PAD_USB2, 11, UINT_MAX, "usb2") \ > > + _pad(TEGRA_IO_PAD_USB_BIAS, 12, UINT_MAX, "usb_bias") > > + > > static const struct tegra_io_pad_soc tegra124_io_pads[] = { > > - { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_BB, .dpd = 15, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_CAM, .dpd = 36, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_COMP, .dpd = 22, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_CSIE, .dpd = 44, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_DSIB, .dpd = 39, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_DSIC, .dpd = 40, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_DSID, .dpd = 41, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_HDMI, .dpd = 28, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_HV, .dpd = 38, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_LVDS, .dpd = 57, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_NAND, .dpd = 13, .voltage = UINT_MAX }, > > - { .id = TEGRA_IO_PAD_PEX_BIAS, .dpd = 4, .voltage =
Re: [PATCH 4/6] soc/tegra: pmc: Use X macro to generate IO pad tables
On 10/07/18 13:47, Aapo Vienamo wrote: > Refactor the IO pad tables into macro tables so that they can be reused > to generate pinctrl pin descriptors. Also add a name field which is > needed by pinctrl. > > Signed-off-by: Aapo Vienamo > --- > drivers/soc/tegra/pmc.c | 231 > ++-- > 1 file changed, 126 insertions(+), 105 deletions(-) > > diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c > index 3f5b69fd..b84 100644 > --- a/drivers/soc/tegra/pmc.c > +++ b/drivers/soc/tegra/pmc.c > @@ -137,6 +137,7 @@ struct tegra_io_pad_soc { > enum tegra_io_pad id; > unsigned int dpd; > unsigned int voltage; > + const char *name; > }; > > struct tegra_pmc_regs { > @@ -1697,37 +1698,49 @@ static const u8 tegra124_cpu_powergates[] = { > TEGRA_POWERGATE_CPU3, > }; > > +#define TEGRA_IO_PAD(_id, _dpd, _voltage, _name) \ > + (struct tegra_io_pad_soc) { \ > + .id = _id, \ > + .dpd= _dpd, \ > + .voltage = _voltage,\ > + .name = _name,\ > + }, > + > +#define TEGRA124_IO_PAD_TABLE(_pad) \ > + /* .id .dpd.voltage .name */ \ > + _pad(TEGRA_IO_PAD_AUDIO,17, UINT_MAX, "audio") \ > + _pad(TEGRA_IO_PAD_BB, 15, UINT_MAX, "bb") \ > + _pad(TEGRA_IO_PAD_CAM, 36, UINT_MAX, "cam")\ > + _pad(TEGRA_IO_PAD_COMP, 22, UINT_MAX, "comp") \ > + _pad(TEGRA_IO_PAD_CSIA, 0, UINT_MAX, "csia") \ > + _pad(TEGRA_IO_PAD_CSIB, 1, UINT_MAX, "csb")\ > + _pad(TEGRA_IO_PAD_CSIE, 44, UINT_MAX, "cse")\ > + _pad(TEGRA_IO_PAD_DSI, 2, UINT_MAX, "dsi")\ > + _pad(TEGRA_IO_PAD_DSIB, 39, UINT_MAX, "dsib") \ > + _pad(TEGRA_IO_PAD_DSIC, 40, UINT_MAX, "dsic") \ > + _pad(TEGRA_IO_PAD_DSID, 41, UINT_MAX, "dsid") \ > + _pad(TEGRA_IO_PAD_HDMI, 28, UINT_MAX, "hdmi") \ > + _pad(TEGRA_IO_PAD_HSIC, 19, UINT_MAX, "hsic") \ > + _pad(TEGRA_IO_PAD_HV, 38, UINT_MAX, "hv") \ > + _pad(TEGRA_IO_PAD_LVDS, 57, UINT_MAX, "lvds") \ > + _pad(TEGRA_IO_PAD_MIPI_BIAS,3, UINT_MAX, "mipi-bias") \ > + _pad(TEGRA_IO_PAD_NAND, 13, UINT_MAX, "nand") \ > + _pad(TEGRA_IO_PAD_PEX_BIAS, 4, UINT_MAX, "pex-bias") \ > + _pad(TEGRA_IO_PAD_PEX_CLK1, 5, UINT_MAX, "pex-clk1") \ > + _pad(TEGRA_IO_PAD_PEX_CLK2, 6, UINT_MAX, "pex-clk2") \ > + _pad(TEGRA_IO_PAD_PEX_CNTRL,32, UINT_MAX, "pex-cntrl") \ > + _pad(TEGRA_IO_PAD_SDMMC1, 33, UINT_MAX, "sdmmc1") \ > + _pad(TEGRA_IO_PAD_SDMMC3, 34, UINT_MAX, "sdmmc3") \ > + _pad(TEGRA_IO_PAD_SDMMC4, 35, UINT_MAX, "sdmmc4") \ > + _pad(TEGRA_IO_PAD_SYS_DDC, 58, UINT_MAX, "sys_ddc")\ > + _pad(TEGRA_IO_PAD_UART, 14, UINT_MAX, "uart") \ > + _pad(TEGRA_IO_PAD_USB0, 9, UINT_MAX, "usb0") \ > + _pad(TEGRA_IO_PAD_USB1, 10, UINT_MAX, "usb1") \ > + _pad(TEGRA_IO_PAD_USB2, 11, UINT_MAX, "usb2") \ > + _pad(TEGRA_IO_PAD_USB_BIAS, 12, UINT_MAX, "usb_bias") > + > static const struct tegra_io_pad_soc tegra124_io_pads[] = { > - { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_BB, .dpd = 15, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_CAM, .dpd = 36, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_COMP, .dpd = 22, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_CSIE, .dpd = 44, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_DSIB, .dpd = 39, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_DSIC, .dpd = 40, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_DSID, .dpd = 41, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_HDMI, .dpd = 28, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_HV, .dpd = 38, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_LVDS, .dpd = 57, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_NAND, .dpd = 13, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_PEX_BIAS, .dpd = 4, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_PEX_CLK1, .dpd = 5, .voltage = UINT_MAX }, > - { .id =
Re: [PATCH 4/6] soc/tegra: pmc: Use X macro to generate IO pad tables
On 10/07/18 13:47, Aapo Vienamo wrote: > Refactor the IO pad tables into macro tables so that they can be reused > to generate pinctrl pin descriptors. Also add a name field which is > needed by pinctrl. > > Signed-off-by: Aapo Vienamo > --- > drivers/soc/tegra/pmc.c | 231 > ++-- > 1 file changed, 126 insertions(+), 105 deletions(-) > > diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c > index 3f5b69fd..b84 100644 > --- a/drivers/soc/tegra/pmc.c > +++ b/drivers/soc/tegra/pmc.c > @@ -137,6 +137,7 @@ struct tegra_io_pad_soc { > enum tegra_io_pad id; > unsigned int dpd; > unsigned int voltage; > + const char *name; > }; > > struct tegra_pmc_regs { > @@ -1697,37 +1698,49 @@ static const u8 tegra124_cpu_powergates[] = { > TEGRA_POWERGATE_CPU3, > }; > > +#define TEGRA_IO_PAD(_id, _dpd, _voltage, _name) \ > + (struct tegra_io_pad_soc) { \ > + .id = _id, \ > + .dpd= _dpd, \ > + .voltage = _voltage,\ > + .name = _name,\ > + }, > + > +#define TEGRA124_IO_PAD_TABLE(_pad) \ > + /* .id .dpd.voltage .name */ \ > + _pad(TEGRA_IO_PAD_AUDIO,17, UINT_MAX, "audio") \ > + _pad(TEGRA_IO_PAD_BB, 15, UINT_MAX, "bb") \ > + _pad(TEGRA_IO_PAD_CAM, 36, UINT_MAX, "cam")\ > + _pad(TEGRA_IO_PAD_COMP, 22, UINT_MAX, "comp") \ > + _pad(TEGRA_IO_PAD_CSIA, 0, UINT_MAX, "csia") \ > + _pad(TEGRA_IO_PAD_CSIB, 1, UINT_MAX, "csb")\ > + _pad(TEGRA_IO_PAD_CSIE, 44, UINT_MAX, "cse")\ > + _pad(TEGRA_IO_PAD_DSI, 2, UINT_MAX, "dsi")\ > + _pad(TEGRA_IO_PAD_DSIB, 39, UINT_MAX, "dsib") \ > + _pad(TEGRA_IO_PAD_DSIC, 40, UINT_MAX, "dsic") \ > + _pad(TEGRA_IO_PAD_DSID, 41, UINT_MAX, "dsid") \ > + _pad(TEGRA_IO_PAD_HDMI, 28, UINT_MAX, "hdmi") \ > + _pad(TEGRA_IO_PAD_HSIC, 19, UINT_MAX, "hsic") \ > + _pad(TEGRA_IO_PAD_HV, 38, UINT_MAX, "hv") \ > + _pad(TEGRA_IO_PAD_LVDS, 57, UINT_MAX, "lvds") \ > + _pad(TEGRA_IO_PAD_MIPI_BIAS,3, UINT_MAX, "mipi-bias") \ > + _pad(TEGRA_IO_PAD_NAND, 13, UINT_MAX, "nand") \ > + _pad(TEGRA_IO_PAD_PEX_BIAS, 4, UINT_MAX, "pex-bias") \ > + _pad(TEGRA_IO_PAD_PEX_CLK1, 5, UINT_MAX, "pex-clk1") \ > + _pad(TEGRA_IO_PAD_PEX_CLK2, 6, UINT_MAX, "pex-clk2") \ > + _pad(TEGRA_IO_PAD_PEX_CNTRL,32, UINT_MAX, "pex-cntrl") \ > + _pad(TEGRA_IO_PAD_SDMMC1, 33, UINT_MAX, "sdmmc1") \ > + _pad(TEGRA_IO_PAD_SDMMC3, 34, UINT_MAX, "sdmmc3") \ > + _pad(TEGRA_IO_PAD_SDMMC4, 35, UINT_MAX, "sdmmc4") \ > + _pad(TEGRA_IO_PAD_SYS_DDC, 58, UINT_MAX, "sys_ddc")\ > + _pad(TEGRA_IO_PAD_UART, 14, UINT_MAX, "uart") \ > + _pad(TEGRA_IO_PAD_USB0, 9, UINT_MAX, "usb0") \ > + _pad(TEGRA_IO_PAD_USB1, 10, UINT_MAX, "usb1") \ > + _pad(TEGRA_IO_PAD_USB2, 11, UINT_MAX, "usb2") \ > + _pad(TEGRA_IO_PAD_USB_BIAS, 12, UINT_MAX, "usb_bias") > + > static const struct tegra_io_pad_soc tegra124_io_pads[] = { > - { .id = TEGRA_IO_PAD_AUDIO, .dpd = 17, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_BB, .dpd = 15, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_CAM, .dpd = 36, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_COMP, .dpd = 22, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_CSIA, .dpd = 0, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_CSIB, .dpd = 1, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_CSIE, .dpd = 44, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_DSI, .dpd = 2, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_DSIB, .dpd = 39, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_DSIC, .dpd = 40, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_DSID, .dpd = 41, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_HDMI, .dpd = 28, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_HSIC, .dpd = 19, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_HV, .dpd = 38, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_LVDS, .dpd = 57, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_MIPI_BIAS, .dpd = 3, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_NAND, .dpd = 13, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_PEX_BIAS, .dpd = 4, .voltage = UINT_MAX }, > - { .id = TEGRA_IO_PAD_PEX_CLK1, .dpd = 5, .voltage = UINT_MAX }, > - { .id =