[PATCH] pinctrl: qcom: establish proper EBI2 pin groups

Bjorn Andersson bjorn.andersson at linaro.org
Tue Jul 12 16:03:54 PDT 2016


On Thu 07 Jul 16:15 PDT 2016, Linus Walleij wrote:

> After some digging around I found documentation (!) of the APQ8060
> EBI2 pin groups. It turns out I first need to split the group in
> two: ebi2cs and ebi2 proper. The chip select pins are kind of
> orthogonal to the other EBI2 pins since CS1B and CS2B can be muxed
> over address bits 7 and 6 (don't know why, but they can). This
> is good to fix up before we add users.
> 
> Also found what the "holes" in the assignment all the way up to
> gpio158 was actually for.
> 
> All mux documentation comes from "Snapdragon(TM) S3 APQ8060-based
> DragonBoard(TM) GPIO User Guide Rev. E August 10, 2012", published
> by Bsquare Corporation.
> 
> As the documentation seems a bit hard to come by I put some comments
> in the group definitions so that it is clear to all readers what
> is going on here and what the lines are used for.
> 
> Cc: Björn Andersson <bjorn.andersson at linaro.org>

Acked-by: Bjorn Andersson <bjorn.andersson at linaro.org>

Regards,
Bjorn

> Cc: Stephen Boyd <sboyd at codeaurora.org>
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> ---
>  drivers/pinctrl/qcom/pinctrl-msm8660.c | 68 +++++++++++++++++++++++-----------
>  1 file changed, 46 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/pinctrl/qcom/pinctrl-msm8660.c b/drivers/pinctrl/qcom/pinctrl-msm8660.c
> index 98eb0e33df84..5591d093bf78 100644
> --- a/drivers/pinctrl/qcom/pinctrl-msm8660.c
> +++ b/drivers/pinctrl/qcom/pinctrl-msm8660.c
> @@ -506,6 +506,7 @@ enum msm8660_functions {
>  	MSM_MUX_usb_fs2_oe_n,
>  	MSM_MUX_vfe,
>  	MSM_MUX_vsens_alarm,
> +	MSM_MUX_ebi2cs,
>  	MSM_MUX_ebi2,
>  	MSM_MUX__,
>  };
> @@ -697,13 +698,35 @@ static const char * const vfe_groups[] = {
>  static const char * const vsens_alarm_groups[] = {
>  	"gpio127"
>  };
> +static const char * const ebi2cs_groups[] = {
> +	"gpio39", /* CS1A */
> +	"gpio40", /* CS2A */
> +	"gpio123", /* CS1B */
> +	"gpio124", /* CS2B */
> +	"gpio131", /* CS5 */
> +	"gpio132", /* CS4 */
> +	"gpio133", /* CS3 */
> +	"gpio134", /* CS0 */
> +};
>  static const char * const ebi2_groups[] = {
> -	"gpio39", "gpio40", "gpio123", "gpio124", "gpio125", "gpio126",
> -	"gpio127", "gpio128", "gpio129", "gpio130", "gpio132", "gpio133",
> -	"gpio134", "gpio135", "gpio136", "gpio137", "gpio138", "gpio139",
> -	"gpio140", "gpio141", "gpio142", "gpio143", "gpio144", "gpio145",
> -	"gpio146", "gpio147", "gpio148", "gpio149", "gpio150", "gpio151",
> -	"gpio153", "gpio157"
> +	/* ADDR9 & ADDR8 */
> +	"gpio37", "gpio38",
> +	/* ADDR7 - ADDR 0 */
> +	"gpio123", "gpio124", "gpio125", "gpio126",
> +	"gpio127", "gpio128", "gpio129", "gpio130",
> +	/* (muxed address+data) AD15 - AD0 */
> +	"gpio135", "gpio136", "gpio137", "gpio138", "gpio139",
> +	"gpio140", "gpio141", "gpio142", "gpio143", "gpio144",
> +	"gpio145", "gpio146", "gpio147", "gpio148", "gpio149",
> +	"gpio150",
> +	"gpio151", /* OE output enable */
> +	"gpio152", /* clock */
> +	"gpio153", /* ADV */
> +	"gpio154", /* WAIT (input) */
> +	"gpio155", /* UB Upper Byte Enable */
> +	"gpio156", /* LB Lower Byte Enable */
> +	"gpio157", /* WE Write Enable */
> +	"gpio158", /* busy */
>  };
>  
>  static const struct msm_function msm8660_functions[] = {
> @@ -758,7 +781,8 @@ static const struct msm_function msm8660_functions[] = {
>  	FUNCTION(usb_fs2_oe_n),
>  	FUNCTION(vfe),
>  	FUNCTION(vsens_alarm),
> -	FUNCTION(ebi2),
> +	FUNCTION(ebi2cs), /* for EBI2 chip selects */
> +	FUNCTION(ebi2), /* for general EBI2 pins */
>  };
>  
>  static const struct msm_pingroup msm8660_groups[] = {
> @@ -799,10 +823,10 @@ static const struct msm_pingroup msm8660_groups[] = {
>  	PINGROUP(34, gsbi1, _, _, _, _, _, _),
>  	PINGROUP(35, gsbi1, _, _, _, _, _, _),
>  	PINGROUP(36, gsbi1, _, _, _, _, _, _),
> -	PINGROUP(37, gsbi2, _, _, _, _, _, _),
> -	PINGROUP(38, gsbi2, _, _, _, _, _, _),
> -	PINGROUP(39, gsbi2, ebi2, mdp_vsync, _, _, _, _),
> -	PINGROUP(40, gsbi2, ebi2, _, _, _, _, _),
> +	PINGROUP(37, gsbi2, ebi2, _, _, _, _, _),
> +	PINGROUP(38, gsbi2, ebi2, _, _, _, _, _),
> +	PINGROUP(39, gsbi2, ebi2cs, mdp_vsync, _, _, _, _),
> +	PINGROUP(40, gsbi2, ebi2cs, _, _, _, _, _),
>  	PINGROUP(41, gsbi3, mdp_vsync, _, _, _, _, _),
>  	PINGROUP(42, gsbi3, vfe, _, _, _, _, _),
>  	PINGROUP(43, gsbi3, _, _, _, _, _, _),
> @@ -885,18 +909,18 @@ static const struct msm_pingroup msm8660_groups[] = {
>  	PINGROUP(120, i2s, _, _, _, _, _, _),
>  	PINGROUP(121, i2s, _, _, _, _, _, _),
>  	PINGROUP(122, i2s, gp_clk_1b, _, _, _, _, _),
> -	PINGROUP(123, ebi2, gsbi2_spi_cs1_n, _, _, _, _, _),
> -	PINGROUP(124, ebi2, gsbi2_spi_cs2_n, _, _, _, _, _),
> +	PINGROUP(123, ebi2, gsbi2_spi_cs1_n, ebi2cs, _, _, _, _),
> +	PINGROUP(124, ebi2, gsbi2_spi_cs2_n, ebi2cs, _, _, _, _),
>  	PINGROUP(125, ebi2, gsbi2_spi_cs3_n, _, _, _, _, _),
>  	PINGROUP(126, ebi2, _, _, _, _, _, _),
>  	PINGROUP(127, ebi2, vsens_alarm, _, _, _, _, _),
>  	PINGROUP(128, ebi2, _, _, _, _, _, _),
>  	PINGROUP(129, ebi2, _, _, _, _, _, _),
>  	PINGROUP(130, ebi2, _, _, _, _, _, _),
> -	PINGROUP(131, _, _, _, _, _, _, _),
> -	PINGROUP(132, ebi2, _, _, _, _, _, _),
> -	PINGROUP(133, ebi2, _, _, _, _, _, _),
> -	PINGROUP(134, ebi2, _, _, _, _, _, _),
> +	PINGROUP(131, ebi2cs, _, _, _, _, _, _),
> +	PINGROUP(132, ebi2cs, _, _, _, _, _, _),
> +	PINGROUP(133, ebi2cs, _, _, _, _, _, _),
> +	PINGROUP(134, ebi2cs, _, _, _, _, _, _),
>  	PINGROUP(135, ebi2, _, _, _, _, _, _),
>  	PINGROUP(136, ebi2, _, _, _, _, _, _),
>  	PINGROUP(137, ebi2, _, _, _, _, _, _),
> @@ -914,13 +938,13 @@ static const struct msm_pingroup msm8660_groups[] = {
>  	PINGROUP(149, ebi2, sdc2, _, _, _, _, _),
>  	PINGROUP(150, ebi2, sdc2, _, _, _, _, _),
>  	PINGROUP(151, ebi2, sdc2, _, _, _, _, _),
> -	PINGROUP(152, _, sdc2, _, _, _, _, _),
> +	PINGROUP(152, ebi2, sdc2, _, _, _, _, _),
>  	PINGROUP(153, ebi2, _, _, _, _, _, _),
> -	PINGROUP(154, _, _, _, _, _, _, _),
> -	PINGROUP(155, _, _, _, _, _, _, _),
> -	PINGROUP(156, _, _, _, _, _, _, _),
> +	PINGROUP(154, ebi2, _, _, _, _, _, _),
> +	PINGROUP(155, ebi2, _, _, _, _, _, _),
> +	PINGROUP(156, ebi2, _, _, _, _, _, _),
>  	PINGROUP(157, ebi2, _, _, _, _, _, _),
> -	PINGROUP(158, _, _, _, _, _, _, _),
> +	PINGROUP(158, ebi2, _, _, _, _, _, _),
>  	PINGROUP(159, sdc1, _, _, _, _, _, _),
>  	PINGROUP(160, sdc1, _, _, _, _, _, _),
>  	PINGROUP(161, sdc1, _, _, _, _, _, _),
> -- 
> 2.7.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel



More information about the linux-arm-kernel mailing list