58
58
#define PIN_CFG_IOLH_C BIT(13)
59
59
#define PIN_CFG_SOFT_PS BIT(14)
60
60
61
- #define RZG2L_MPXED_PIN_FUNCS (PIN_CFG_IOLH_A | \
62
- PIN_CFG_SR | \
61
+ #define RZG2L_MPXED_COMMON_PIN_FUNCS ( group ) \
62
+ (PIN_CFG_IOLH_##group | \
63
63
PIN_CFG_PUPD | \
64
64
PIN_CFG_FILONOFF | \
65
65
PIN_CFG_FILNUM | \
66
66
PIN_CFG_FILCLKSEL)
67
67
68
+ #define RZG2L_MPXED_PIN_FUNCS (RZG2L_MPXED_COMMON_PIN_FUNCS(A) | \
69
+ PIN_CFG_SR)
70
+
71
+ #define RZG3S_MPXED_PIN_FUNCS (group ) (RZG2L_MPXED_COMMON_PIN_FUNCS(group) | \
72
+ PIN_CFG_SOFT_PS)
73
+
68
74
#define RZG2L_MPXED_ETH_PIN_FUNCS (x ) ((x) | \
69
75
PIN_CFG_FILONOFF | \
70
76
PIN_CFG_FILNUM | \
@@ -1314,6 +1320,36 @@ static const u32 r9a07g043_gpio_configs[] = {
1314
1320
RZG2L_GPIO_PORT_PACK (6 , 0x22 , RZG2L_MPXED_PIN_FUNCS ),
1315
1321
};
1316
1322
1323
+ static const u32 r9a08g045_gpio_configs [] = {
1324
+ RZG2L_GPIO_PORT_PACK (4 , 0x20 , RZG3S_MPXED_PIN_FUNCS (A )), /* P0 */
1325
+ RZG2L_GPIO_PORT_PACK (5 , 0x30 , RZG2L_MPXED_ETH_PIN_FUNCS (PIN_CFG_IOLH_C |
1326
+ PIN_CFG_IO_VMC_ETH0 )), /* P1 */
1327
+ RZG2L_GPIO_PORT_PACK (4 , 0x31 , RZG2L_MPXED_ETH_PIN_FUNCS (PIN_CFG_IOLH_C |
1328
+ PIN_CFG_IO_VMC_ETH0 )), /* P2 */
1329
+ RZG2L_GPIO_PORT_PACK (4 , 0x32 , RZG2L_MPXED_ETH_PIN_FUNCS (PIN_CFG_IOLH_C |
1330
+ PIN_CFG_IO_VMC_ETH0 )), /* P3 */
1331
+ RZG2L_GPIO_PORT_PACK (6 , 0x33 , RZG2L_MPXED_ETH_PIN_FUNCS (PIN_CFG_IOLH_C |
1332
+ PIN_CFG_IO_VMC_ETH0 )), /* P4 */
1333
+ RZG2L_GPIO_PORT_PACK (5 , 0x21 , RZG3S_MPXED_PIN_FUNCS (A )), /* P5 */
1334
+ RZG2L_GPIO_PORT_PACK (5 , 0x22 , RZG3S_MPXED_PIN_FUNCS (A )), /* P6 */
1335
+ RZG2L_GPIO_PORT_PACK (5 , 0x34 , RZG2L_MPXED_ETH_PIN_FUNCS (PIN_CFG_IOLH_C |
1336
+ PIN_CFG_IO_VMC_ETH1 )), /* P7 */
1337
+ RZG2L_GPIO_PORT_PACK (5 , 0x35 , RZG2L_MPXED_ETH_PIN_FUNCS (PIN_CFG_IOLH_C |
1338
+ PIN_CFG_IO_VMC_ETH1 )), /* P8 */
1339
+ RZG2L_GPIO_PORT_PACK (4 , 0x36 , RZG2L_MPXED_ETH_PIN_FUNCS (PIN_CFG_IOLH_C |
1340
+ PIN_CFG_IO_VMC_ETH1 )), /* P9 */
1341
+ RZG2L_GPIO_PORT_PACK (5 , 0x37 , RZG2L_MPXED_ETH_PIN_FUNCS (PIN_CFG_IOLH_C |
1342
+ PIN_CFG_IO_VMC_ETH1 )), /* P10 */
1343
+ RZG2L_GPIO_PORT_PACK (4 , 0x23 , RZG3S_MPXED_PIN_FUNCS (B ) | PIN_CFG_IEN ), /* P11 */
1344
+ RZG2L_GPIO_PORT_PACK (2 , 0x24 , RZG3S_MPXED_PIN_FUNCS (B ) | PIN_CFG_IEN ), /* P12 */
1345
+ RZG2L_GPIO_PORT_PACK (5 , 0x25 , RZG3S_MPXED_PIN_FUNCS (A )), /* P13 */
1346
+ RZG2L_GPIO_PORT_PACK (3 , 0x26 , RZG3S_MPXED_PIN_FUNCS (A )), /* P14 */
1347
+ RZG2L_GPIO_PORT_PACK (4 , 0x27 , RZG3S_MPXED_PIN_FUNCS (A )), /* P15 */
1348
+ RZG2L_GPIO_PORT_PACK (2 , 0x28 , RZG3S_MPXED_PIN_FUNCS (A )), /* P16 */
1349
+ RZG2L_GPIO_PORT_PACK (4 , 0x29 , RZG3S_MPXED_PIN_FUNCS (A )), /* P17 */
1350
+ RZG2L_GPIO_PORT_PACK (6 , 0x2a , RZG3S_MPXED_PIN_FUNCS (A )), /* P18 */
1351
+ };
1352
+
1317
1353
static const struct {
1318
1354
struct rzg2l_dedicated_configs common [35 ];
1319
1355
struct rzg2l_dedicated_configs rzg2l_pins [7 ];
@@ -1400,6 +1436,46 @@ static const struct {
1400
1436
}
1401
1437
};
1402
1438
1439
+ static const struct rzg2l_dedicated_configs rzg3s_dedicated_pins [] = {
1440
+ { "NMI" , RZG2L_SINGLE_PIN_PACK (0x0 , 0 , (PIN_CFG_FILONOFF | PIN_CFG_FILNUM |
1441
+ PIN_CFG_FILCLKSEL )) },
1442
+ { "TMS/SWDIO" , RZG2L_SINGLE_PIN_PACK (0x1 , 0 , (PIN_CFG_IOLH_A | PIN_CFG_IEN |
1443
+ PIN_CFG_SOFT_PS )) },
1444
+ { "TDO" , RZG2L_SINGLE_PIN_PACK (0x1 , 1 , (PIN_CFG_IOLH_A | PIN_CFG_SOFT_PS )) },
1445
+ { "WDTOVF_PERROUT#" , RZG2L_SINGLE_PIN_PACK (0x6 , 0 , PIN_CFG_IOLH_A | PIN_CFG_SOFT_PS ) },
1446
+ { "SD0_CLK" , RZG2L_SINGLE_PIN_PACK (0x10 , 0 , (PIN_CFG_IOLH_B | PIN_CFG_IO_VMC_SD0 )) },
1447
+ { "SD0_CMD" , RZG2L_SINGLE_PIN_PACK (0x10 , 1 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1448
+ PIN_CFG_IO_VMC_SD0 )) },
1449
+ { "SD0_RST#" , RZG2L_SINGLE_PIN_PACK (0x10 , 2 , (PIN_CFG_IOLH_B | PIN_CFG_IO_VMC_SD0 )) },
1450
+ { "SD0_DATA0" , RZG2L_SINGLE_PIN_PACK (0x11 , 0 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1451
+ PIN_CFG_IO_VMC_SD0 )) },
1452
+ { "SD0_DATA1" , RZG2L_SINGLE_PIN_PACK (0x11 , 1 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1453
+ PIN_CFG_IO_VMC_SD0 )) },
1454
+ { "SD0_DATA2" , RZG2L_SINGLE_PIN_PACK (0x11 , 2 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1455
+ PIN_CFG_IO_VMC_SD0 )) },
1456
+ { "SD0_DATA3" , RZG2L_SINGLE_PIN_PACK (0x11 , 3 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1457
+ PIN_CFG_IO_VMC_SD0 )) },
1458
+ { "SD0_DATA4" , RZG2L_SINGLE_PIN_PACK (0x11 , 4 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1459
+ PIN_CFG_IO_VMC_SD0 )) },
1460
+ { "SD0_DATA5" , RZG2L_SINGLE_PIN_PACK (0x11 , 5 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1461
+ PIN_CFG_IO_VMC_SD0 )) },
1462
+ { "SD0_DATA6" , RZG2L_SINGLE_PIN_PACK (0x11 , 6 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1463
+ PIN_CFG_IO_VMC_SD0 )) },
1464
+ { "SD0_DATA7" , RZG2L_SINGLE_PIN_PACK (0x11 , 7 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1465
+ PIN_CFG_IO_VMC_SD0 )) },
1466
+ { "SD1_CLK" , RZG2L_SINGLE_PIN_PACK (0x12 , 0 , (PIN_CFG_IOLH_B | PIN_CFG_IO_VMC_SD1 )) },
1467
+ { "SD1_CMD" , RZG2L_SINGLE_PIN_PACK (0x12 , 1 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1468
+ PIN_CFG_IO_VMC_SD1 )) },
1469
+ { "SD1_DATA0" , RZG2L_SINGLE_PIN_PACK (0x13 , 0 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1470
+ PIN_CFG_IO_VMC_SD1 )) },
1471
+ { "SD1_DATA1" , RZG2L_SINGLE_PIN_PACK (0x13 , 1 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1472
+ PIN_CFG_IO_VMC_SD1 )) },
1473
+ { "SD1_DATA2" , RZG2L_SINGLE_PIN_PACK (0x13 , 2 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1474
+ PIN_CFG_IO_VMC_SD1 )) },
1475
+ { "SD1_DATA3" , RZG2L_SINGLE_PIN_PACK (0x13 , 3 , (PIN_CFG_IOLH_B | PIN_CFG_IEN |
1476
+ PIN_CFG_IO_VMC_SD1 )) },
1477
+ };
1478
+
1403
1479
static int rzg2l_gpio_get_gpioint (unsigned int virq , const struct rzg2l_pinctrl_data * data )
1404
1480
{
1405
1481
unsigned int gpioint ;
@@ -1761,6 +1837,9 @@ static int rzg2l_pinctrl_probe(struct platform_device *pdev)
1761
1837
BUILD_BUG_ON (ARRAY_SIZE (r9a07g043_gpio_configs ) * RZG2L_PINS_PER_PORT >
1762
1838
ARRAY_SIZE (rzg2l_gpio_names ));
1763
1839
1840
+ BUILD_BUG_ON (ARRAY_SIZE (r9a08g045_gpio_configs ) * RZG2L_PINS_PER_PORT >
1841
+ ARRAY_SIZE (rzg2l_gpio_names ));
1842
+
1764
1843
pctrl = devm_kzalloc (& pdev -> dev , sizeof (* pctrl ), GFP_KERNEL );
1765
1844
if (!pctrl )
1766
1845
return - ENOMEM ;
@@ -1806,6 +1885,35 @@ static const struct rzg2l_hwcfg rzg2l_hwcfg = {
1806
1885
.iolh_groupb_oi = { 100 , 66 , 50 , 33 , },
1807
1886
};
1808
1887
1888
+ static const struct rzg2l_hwcfg rzg3s_hwcfg = {
1889
+ .regs = {
1890
+ .pwpr = 0x3000 ,
1891
+ .sd_ch = 0x3004 ,
1892
+ },
1893
+ .iolh_groupa_ua = {
1894
+ /* 1v8 power source */
1895
+ [RZG2L_IOLH_IDX_1V8 ] = 2200 , 4400 , 9000 , 10000 ,
1896
+ /* 3v3 power source */
1897
+ [RZG2L_IOLH_IDX_3V3 ] = 1900 , 4000 , 8000 , 9000 ,
1898
+ },
1899
+ .iolh_groupb_ua = {
1900
+ /* 1v8 power source */
1901
+ [RZG2L_IOLH_IDX_1V8 ] = 7000 , 8000 , 9000 , 10000 ,
1902
+ /* 3v3 power source */
1903
+ [RZG2L_IOLH_IDX_3V3 ] = 4000 , 6000 , 8000 , 9000 ,
1904
+ },
1905
+ .iolh_groupc_ua = {
1906
+ /* 1v8 power source */
1907
+ [RZG2L_IOLH_IDX_1V8 ] = 5200 , 6000 , 6550 , 6800 ,
1908
+ /* 2v5 source */
1909
+ [RZG2L_IOLH_IDX_2V5 ] = 4700 , 5300 , 5800 , 6100 ,
1910
+ /* 3v3 power source */
1911
+ [RZG2L_IOLH_IDX_3V3 ] = 4500 , 5200 , 5700 , 6050 ,
1912
+ },
1913
+ .drive_strength_ua = true,
1914
+ .func_base = 1 ,
1915
+ };
1916
+
1809
1917
static struct rzg2l_pinctrl_data r9a07g043_data = {
1810
1918
.port_pins = rzg2l_gpio_names ,
1811
1919
.port_pin_configs = r9a07g043_gpio_configs ,
@@ -1827,6 +1935,16 @@ static struct rzg2l_pinctrl_data r9a07g044_data = {
1827
1935
.hwcfg = & rzg2l_hwcfg ,
1828
1936
};
1829
1937
1938
+ static struct rzg2l_pinctrl_data r9a08g045_data = {
1939
+ .port_pins = rzg2l_gpio_names ,
1940
+ .port_pin_configs = r9a08g045_gpio_configs ,
1941
+ .n_ports = ARRAY_SIZE (r9a08g045_gpio_configs ),
1942
+ .dedicated_pins = rzg3s_dedicated_pins ,
1943
+ .n_port_pins = ARRAY_SIZE (r9a08g045_gpio_configs ) * RZG2L_PINS_PER_PORT ,
1944
+ .n_dedicated_pins = ARRAY_SIZE (rzg3s_dedicated_pins ),
1945
+ .hwcfg = & rzg3s_hwcfg ,
1946
+ };
1947
+
1830
1948
static const struct of_device_id rzg2l_pinctrl_of_table [] = {
1831
1949
{
1832
1950
.compatible = "renesas,r9a07g043-pinctrl" ,
@@ -1836,6 +1954,10 @@ static const struct of_device_id rzg2l_pinctrl_of_table[] = {
1836
1954
.compatible = "renesas,r9a07g044-pinctrl" ,
1837
1955
.data = & r9a07g044_data ,
1838
1956
},
1957
+ {
1958
+ .compatible = "renesas,r9a08g045-pinctrl" ,
1959
+ .data = & r9a08g045_data ,
1960
+ },
1839
1961
{ /* sentinel */ }
1840
1962
};
1841
1963
0 commit comments