Re: [PATCH 4/6] soc/tegra: pmc: Use X macro to generate IO pad tables

2018-07-11 Thread Jon Hunter


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

2018-07-11 Thread Jon Hunter


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

2018-07-11 Thread Aapo Vienamo
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

2018-07-11 Thread Aapo Vienamo
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

2018-07-11 Thread Jon Hunter


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

2018-07-11 Thread Jon Hunter


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 =