Skip to content

Commit 02aeb2f

Browse files
committed
pinctrl: sh-pfc: sh7269: Fix CAN function GPIOs
pinmux_func_gpios[] contains a hole due to the missing function GPIO definition for the "CTX0&CTX1" signal, which is the logical "AND" of the first two CAN outputs. A closer look reveals other issues: - Some functionality is available on alternative pins, but the PINMUX_DATA() entries is using the wrong marks, - Several configurations are missing. Fix this by: - Renaming CTX0CTX1CTX2_MARK, CRX0CRX1_PJ22_MARK, and CRX0CRX1CRX2_PJ20_MARK to CTX0_CTX1_CTX2_MARK, CRX0_CRX1_PJ22_MARK, resp. CRX0_CRX1_CRX2_PJ20_MARK for consistency with the corresponding enum IDs, - Adding all missing enum IDs and marks, - Use the right (*_PJ2x) variants for alternative pins, - Adding all missing configurations to pinmux_data[], - Adding all missing function GPIO definitions to pinmux_func_gpios[]. See SH7268 Group, SH7269 Group User’s Manual: Hardware, Rev. 2.00: [1] Table 1.4 List of Pins [2] Figure 23.29 Connection Example when Using Channels 0 and 1 as One Channel (64 Mailboxes × 1 Channel) and Channel 2 as One Channel (32 Mailboxes × 1 Channel), [3] Figure 23.30 Connection Example when Using Channels 0, 1, and 2 as One Channel (96 Mailboxes × 1 Channel), [4] Table 48.3 Multiplexed Pins (Port B), [5] Table 48.4 Multiplexed Pins (Port C), [6] Table 48.10 Multiplexed Pins (Port J), [7] Section 48.2.4 Port B Control Registers 0 to 5 (PBCR0 to PBCR5). Signed-off-by: Geert Uytterhoeven <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 55b1cb1 commit 02aeb2f

File tree

2 files changed

+36
-14
lines changed

2 files changed

+36
-14
lines changed

arch/sh/include/cpu-sh2a/cpu/sh7269.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,15 @@ enum {
7878
GPIO_FN_WDTOVF,
7979

8080
/* CAN */
81-
GPIO_FN_CTX1, GPIO_FN_CRX1, GPIO_FN_CTX0, GPIO_FN_CTX0_CTX1,
82-
GPIO_FN_CRX0, GPIO_FN_CRX0_CRX1, GPIO_FN_CRX0_CRX1_CRX2,
81+
GPIO_FN_CTX2, GPIO_FN_CRX2,
82+
GPIO_FN_CTX1, GPIO_FN_CRX1,
83+
GPIO_FN_CTX0, GPIO_FN_CRX0,
84+
GPIO_FN_CTX0_CTX1, GPIO_FN_CRX0_CRX1,
85+
GPIO_FN_CTX0_CTX1_CTX2, GPIO_FN_CRX0_CRX1_CRX2,
86+
GPIO_FN_CTX2_PJ21, GPIO_FN_CRX2_PJ20,
87+
GPIO_FN_CTX1_PJ23, GPIO_FN_CRX1_PJ22,
88+
GPIO_FN_CTX0_CTX1_PJ23, GPIO_FN_CRX0_CRX1_PJ22,
89+
GPIO_FN_CTX0_CTX1_CTX2_PJ21, GPIO_FN_CRX0_CRX1_CRX2_PJ20,
8390

8491
/* DMAC */
8592
GPIO_FN_TEND0, GPIO_FN_DACK0, GPIO_FN_DREQ0,

drivers/pinctrl/sh-pfc/pfc-sh7269.c

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -737,13 +737,12 @@ enum {
737737
CRX0_MARK, CTX0_MARK,
738738
CRX1_MARK, CTX1_MARK,
739739
CRX2_MARK, CTX2_MARK,
740-
CRX0_CRX1_MARK,
741-
CRX0_CRX1_CRX2_MARK,
742-
CTX0CTX1CTX2_MARK,
740+
CRX0_CRX1_MARK, CTX0_CTX1_MARK,
741+
CRX0_CRX1_CRX2_MARK, CTX0_CTX1_CTX2_MARK,
743742
CRX1_PJ22_MARK, CTX1_PJ23_MARK,
744743
CRX2_PJ20_MARK, CTX2_PJ21_MARK,
745-
CRX0CRX1_PJ22_MARK,
746-
CRX0CRX1CRX2_PJ20_MARK,
744+
CRX0_CRX1_PJ22_MARK, CTX0_CTX1_PJ23_MARK,
745+
CRX0_CRX1_CRX2_PJ20_MARK, CTX0_CTX1_CTX2_PJ21_MARK,
747746

748747
/* VDC */
749748
DV_CLK_MARK,
@@ -821,6 +820,7 @@ static const u16 pinmux_data[] = {
821820
PINMUX_DATA(CS3_MARK, PC8MD_001),
822821
PINMUX_DATA(TXD7_MARK, PC8MD_010),
823822
PINMUX_DATA(CTX1_MARK, PC8MD_011),
823+
PINMUX_DATA(CTX0_CTX1_MARK, PC8MD_100),
824824

825825
PINMUX_DATA(PC7_DATA, PC7MD_000),
826826
PINMUX_DATA(CKE_MARK, PC7MD_001),
@@ -833,11 +833,12 @@ static const u16 pinmux_data[] = {
833833
PINMUX_DATA(CAS_MARK, PC6MD_001),
834834
PINMUX_DATA(SCK7_MARK, PC6MD_010),
835835
PINMUX_DATA(CTX0_MARK, PC6MD_011),
836+
PINMUX_DATA(CTX0_CTX1_CTX2_MARK, PC6MD_100),
836837

837838
PINMUX_DATA(PC5_DATA, PC5MD_000),
838839
PINMUX_DATA(RAS_MARK, PC5MD_001),
839840
PINMUX_DATA(CRX0_MARK, PC5MD_011),
840-
PINMUX_DATA(CTX0CTX1CTX2_MARK, PC5MD_100),
841+
PINMUX_DATA(CTX0_CTX1_CTX2_MARK, PC5MD_100),
841842
PINMUX_DATA(IRQ0_PC_MARK, PC5MD_101),
842843

843844
PINMUX_DATA(PC4_DATA, PC4MD_00),
@@ -1289,30 +1290,32 @@ static const u16 pinmux_data[] = {
12891290
PINMUX_DATA(LCD_DATA23_PJ23_MARK, PJ23MD_010),
12901291
PINMUX_DATA(LCD_TCON6_MARK, PJ23MD_011),
12911292
PINMUX_DATA(IRQ3_PJ_MARK, PJ23MD_100),
1292-
PINMUX_DATA(CTX1_MARK, PJ23MD_101),
1293+
PINMUX_DATA(CTX1_PJ23_MARK, PJ23MD_101),
1294+
PINMUX_DATA(CTX0_CTX1_PJ23_MARK, PJ23MD_110),
12931295

12941296
PINMUX_DATA(PJ22_DATA, PJ22MD_000),
12951297
PINMUX_DATA(DV_DATA22_MARK, PJ22MD_001),
12961298
PINMUX_DATA(LCD_DATA22_PJ22_MARK, PJ22MD_010),
12971299
PINMUX_DATA(LCD_TCON5_MARK, PJ22MD_011),
12981300
PINMUX_DATA(IRQ2_PJ_MARK, PJ22MD_100),
1299-
PINMUX_DATA(CRX1_MARK, PJ22MD_101),
1300-
PINMUX_DATA(CRX0_CRX1_MARK, PJ22MD_110),
1301+
PINMUX_DATA(CRX1_PJ22_MARK, PJ22MD_101),
1302+
PINMUX_DATA(CRX0_CRX1_PJ22_MARK, PJ22MD_110),
13011303

13021304
PINMUX_DATA(PJ21_DATA, PJ21MD_000),
13031305
PINMUX_DATA(DV_DATA21_MARK, PJ21MD_001),
13041306
PINMUX_DATA(LCD_DATA21_PJ21_MARK, PJ21MD_010),
13051307
PINMUX_DATA(LCD_TCON4_MARK, PJ21MD_011),
13061308
PINMUX_DATA(IRQ1_PJ_MARK, PJ21MD_100),
1307-
PINMUX_DATA(CTX2_MARK, PJ21MD_101),
1309+
PINMUX_DATA(CTX2_PJ21_MARK, PJ21MD_101),
1310+
PINMUX_DATA(CTX0_CTX1_CTX2_PJ21_MARK, PJ21MD_110),
13081311

13091312
PINMUX_DATA(PJ20_DATA, PJ20MD_000),
13101313
PINMUX_DATA(DV_DATA20_MARK, PJ20MD_001),
13111314
PINMUX_DATA(LCD_DATA20_PJ20_MARK, PJ20MD_010),
13121315
PINMUX_DATA(LCD_TCON3_MARK, PJ20MD_011),
13131316
PINMUX_DATA(IRQ0_PJ_MARK, PJ20MD_100),
1314-
PINMUX_DATA(CRX2_MARK, PJ20MD_101),
1315-
PINMUX_DATA(CRX0CRX1CRX2_PJ20_MARK, PJ20MD_110),
1317+
PINMUX_DATA(CRX2_PJ20_MARK, PJ20MD_101),
1318+
PINMUX_DATA(CRX0_CRX1_CRX2_PJ20_MARK, PJ20MD_110),
13161319

13171320
PINMUX_DATA(PJ19_DATA, PJ19MD_000),
13181321
PINMUX_DATA(DV_DATA19_MARK, PJ19MD_001),
@@ -1663,12 +1666,24 @@ static const struct pinmux_func pinmux_func_gpios[] = {
16631666
GPIO_FN(WDTOVF),
16641667

16651668
/* CAN */
1669+
GPIO_FN(CTX2),
1670+
GPIO_FN(CRX2),
16661671
GPIO_FN(CTX1),
16671672
GPIO_FN(CRX1),
16681673
GPIO_FN(CTX0),
16691674
GPIO_FN(CRX0),
1675+
GPIO_FN(CTX0_CTX1),
16701676
GPIO_FN(CRX0_CRX1),
1677+
GPIO_FN(CTX0_CTX1_CTX2),
16711678
GPIO_FN(CRX0_CRX1_CRX2),
1679+
GPIO_FN(CTX2_PJ21),
1680+
GPIO_FN(CRX2_PJ20),
1681+
GPIO_FN(CTX1_PJ23),
1682+
GPIO_FN(CRX1_PJ22),
1683+
GPIO_FN(CTX0_CTX1_PJ23),
1684+
GPIO_FN(CRX0_CRX1_PJ22),
1685+
GPIO_FN(CTX0_CTX1_CTX2_PJ21),
1686+
GPIO_FN(CRX0_CRX1_CRX2_PJ20),
16721687

16731688
/* DMAC */
16741689
GPIO_FN(TEND0),

0 commit comments

Comments
 (0)