diff mbox

[3/3] omap4: splitting padconfs into common, 4430 and 4460

Message ID 1316636251-23961-4-git-send-email-ricardo.salveti@linaro.org
State Accepted
Commit 53430a4f251eacc32ada54b56258cc18856d0d8e
Headers show

Commit Message

Ricardo Salveti Sept. 21, 2011, 8:17 p.m. UTC
Not all padconfs are the same between 4430 and 4460, so instead of
working around this with an if, we should have an specific padconf
structure for both chips (like handling the differences between the LEDs
GPIOs and TPS).

Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti@linaro.org>

 4 files changed, 40 insertions(+), 4 deletions(-)

Comments

Aneesh V Sept. 22, 2011, 6:42 a.m. UTC | #1
Hi Ricardo,

On Thursday 22 September 2011 01:47 AM, Ricardo Salveti de Araujo wrote:
> Not all padconfs are the same between 4430 and 4460, so instead of
> working around this with an if, we should have an specific padconf
> structure for both chips (like handling the differences between the LEDs
> GPIOs and TPS).

I was actually wondering whether I was right in keeping some mux data
in the SoC directory and was thinking of moving it back to the board
dir. Strictly speaking mux data is board specific and I have already
encountered a customer board that uses a different UART for traces. So
essential, non_essential etc completely depends on the boards not SoCs.
So, I am inclined to move it back to the board directories, because
that will be more maintainable when more and more boards get added with
conflicting mux definitions.

So, the arrays should be rather padconf_panda_common,
padconf_4460panda, padconf_4430panda etc. and they should be all in
their respective board directories.

What do you think?

br,
Aneesh
Ricardo Salveti Sept. 22, 2011, 7 a.m. UTC | #2
Hi Aneesh,

On Thu, Sep 22, 2011 at 3:42 AM, Aneesh V <aneesh@ti.com> wrote:
> Hi Ricardo,
>
> On Thursday 22 September 2011 01:47 AM, Ricardo Salveti de Araujo wrote:
>> Not all padconfs are the same between 4430 and 4460, so instead of
>> working around this with an if, we should have an specific padconf
>> structure for both chips (like handling the differences between the LEDs
>> GPIOs and TPS).
>
> I was actually wondering whether I was right in keeping some mux data
> in the SoC directory and was thinking of moving it back to the board
> dir. Strictly speaking mux data is board specific and I have already
> encountered a customer board that uses a different UART for traces. So
> essential, non_essential etc completely depends on the boards not SoCs.
> So, I am inclined to move it back to the board directories, because
> that will be more maintainable when more and more boards get added with
> conflicting mux definitions.
>
> So, the arrays should be rather padconf_panda_common,
> padconf_4460panda, padconf_4430panda etc. and they should be all in
> their respective board directories.
>
> What do you think?

Sure, makes sense, and will also help once we start seeing more OMAP4
boards around.

Cheers,
diff mbox

Patch

diff --git a/arch/arm/cpu/armv7/omap4/board.c b/arch/arm/cpu/armv7/omap4/board.c
index d9639ab..b842782 100644
--- a/arch/arm/cpu/armv7/omap4/board.c
+++ b/arch/arm/cpu/armv7/omap4/board.c
@@ -152,9 +152,11 @@  static void set_muxconf_regs_essential(void)
 		   sizeof(wkup_padconf_array_essential) /
 		   sizeof(struct pad_conf_entry));
 
-	/* gpio_wk7 is used for controlling TPS on 4460 */
 	if (omap_revision() >= OMAP4460_ES1_0)
-		writew(M3, CONTROL_WKUP_PAD1_FREF_CLK4_REQ);
+		do_set_mux(CONTROL_PADCONF_WKUP,
+				 wkup_padconf_array_essential_4460,
+				 sizeof(wkup_padconf_array_essential_4460) /
+				 sizeof(struct pad_conf_entry));
 }
 
 static void set_mux_conf_regs(void)
diff --git a/arch/arm/cpu/armv7/omap4/omap4_mux_data.h b/arch/arm/cpu/armv7/omap4/omap4_mux_data.h
index 00c52f8..b940391 100644
--- a/arch/arm/cpu/armv7/omap4/omap4_mux_data.h
+++ b/arch/arm/cpu/armv7/omap4/omap4_mux_data.h
@@ -73,4 +73,11 @@  const struct pad_conf_entry wkup_padconf_array_essential[] = {
 
 };
 
+const struct pad_conf_entry wkup_padconf_array_essential_4460[] = {
+
+{PAD1_FREF_CLK4_REQ, (M3)},	 /* gpio_wk7, TPS */
+
+};
+
+
 #endif  /* _OMAP4_MUX_DATA_H_ */
diff --git a/board/ti/panda/panda.c b/board/ti/panda/panda.c
index 9afed80..97320cb 100644
--- a/board/ti/panda/panda.c
+++ b/board/ti/panda/panda.c
@@ -71,9 +71,26 @@  void set_muxconf_regs_non_essential(void)
 		   sizeof(core_padconf_array_non_essential) /
 		   sizeof(struct pad_conf_entry));
 
+	if (omap_revision() < OMAP4460_ES1_0)
+		do_set_mux(CONTROL_PADCONF_CORE,
+				core_padconf_array_non_essential_4430,
+				sizeof(core_padconf_array_non_essential_4430) /
+				sizeof(struct pad_conf_entry));
+	else
+		do_set_mux(CONTROL_PADCONF_CORE,
+				core_padconf_array_non_essential_4460,
+				sizeof(core_padconf_array_non_essential_4460) /
+				sizeof(struct pad_conf_entry));
+
 	do_set_mux(CONTROL_PADCONF_WKUP, wkup_padconf_array_non_essential,
 		   sizeof(wkup_padconf_array_non_essential) /
 		   sizeof(struct pad_conf_entry));
+
+	if (omap_revision() < OMAP4460_ES1_0)
+		do_set_mux(CONTROL_PADCONF_WKUP,
+				wkup_padconf_array_non_essential_4430,
+				sizeof(wkup_padconf_array_non_essential_4430) /
+				sizeof(struct pad_conf_entry));
 }
 
 #ifdef CONFIG_GENERIC_MMC
diff --git a/board/ti/panda/panda_mux_data.h b/board/ti/panda/panda_mux_data.h
index 63448b6..83d0c3f 100644
--- a/board/ti/panda/panda_mux_data.h
+++ b/board/ti/panda/panda_mux_data.h
@@ -100,7 +100,6 @@  const struct pad_conf_entry core_padconf_array_non_essential[] = {
 	{USBB1_HSIC_STROBE, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},	/* usbb1_hsic_strobe */
 	{USBC1_ICUSB_DP, (IEN | M0)},					/* usbc1_icusb_dp */
 	{USBC1_ICUSB_DM, (IEN | M0)},					/* usbc1_icusb_dm */
-	{ABE_MCBSP2_CLKX, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},	/* abe_mcbsp2_clkx */
 	{ABE_MCBSP2_DR, (IEN | OFF_EN | OFF_OUT_PTD | M0)},		/* abe_mcbsp2_dr */
 	{ABE_MCBSP2_DX, (OFF_EN | OFF_OUT_PTD | M0)},			/* abe_mcbsp2_dx */
 	{ABE_MCBSP2_FSX, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},	/* abe_mcbsp2_fsx */
@@ -202,6 +201,14 @@  const struct pad_conf_entry core_padconf_array_non_essential[] = {
 	{DPM_EMU19, (IEN | M5)},					/* dispc2_data0 */
 };
 
+const struct pad_conf_entry core_padconf_array_non_essential_4430[] = {
+	{ABE_MCBSP2_CLKX, (IEN | OFF_EN | OFF_PD | OFF_IN | M0)},	/* abe_mcbsp2_clkx */
+};
+
+const struct pad_conf_entry core_padconf_array_non_essential_4460[] = {
+	{ABE_MCBSP2_CLKX, (PTU | OFF_EN | OFF_OUT_PTU | M3)},		/* led status_1 */
+};
+
 const struct pad_conf_entry wkup_padconf_array_non_essential[] = {
 	{PAD0_SIM_IO, (IEN | M0)},		/* sim_io */
 	{PAD1_SIM_CLK, (M0)},			/* sim_clk */
@@ -214,7 +221,6 @@  const struct pad_conf_entry wkup_padconf_array_non_essential[] = {
 	{PAD0_FREF_CLK0_OUT, (M2)},		/* sys_drm_msecure */
 	{PAD1_FREF_CLK3_REQ, M7},					/* safe mode */
 	{PAD0_FREF_CLK3_OUT, (M0)},		/* fref_clk3_out */
-	{PAD1_FREF_CLK4_REQ, (PTU | M3)},	/* led status_1 */
 	{PAD0_FREF_CLK4_OUT, (PTU | M3)},	/* led status_2 */
 	{PAD0_SYS_NRESPWRON, (M0)},		/* sys_nrespwron */
 	{PAD1_SYS_NRESWARM, (M0)},		/* sys_nreswarm */
@@ -224,4 +230,8 @@  const struct pad_conf_entry wkup_padconf_array_non_essential[] = {
 	{PAD1_SYS_BOOT7, (IEN | M3)},		/* gpio_wk10 */
 };
 
+const struct pad_conf_entry wkup_padconf_array_non_essential_4430[] = {
+	{PAD1_FREF_CLK4_REQ, (PTU | M3)},	/* led status_1 */
+};
+
 #endif /* _PANDA_MUX_DATA_H_ */