18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Renesas R0P7757LC0012RL Support. 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2009 - 2010 Renesas Solutions Corp. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#include <linux/init.h> 98c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 108c2ecf20Sopenharmony_ci#include <linux/gpio.h> 118c2ecf20Sopenharmony_ci#include <linux/irq.h> 128c2ecf20Sopenharmony_ci#include <linux/regulator/fixed.h> 138c2ecf20Sopenharmony_ci#include <linux/regulator/machine.h> 148c2ecf20Sopenharmony_ci#include <linux/spi/spi.h> 158c2ecf20Sopenharmony_ci#include <linux/spi/flash.h> 168c2ecf20Sopenharmony_ci#include <linux/io.h> 178c2ecf20Sopenharmony_ci#include <linux/mfd/tmio.h> 188c2ecf20Sopenharmony_ci#include <linux/mmc/host.h> 198c2ecf20Sopenharmony_ci#include <linux/mmc/sh_mmcif.h> 208c2ecf20Sopenharmony_ci#include <linux/sh_eth.h> 218c2ecf20Sopenharmony_ci#include <linux/sh_intc.h> 228c2ecf20Sopenharmony_ci#include <linux/usb/renesas_usbhs.h> 238c2ecf20Sopenharmony_ci#include <cpu/sh7757.h> 248c2ecf20Sopenharmony_ci#include <asm/heartbeat.h> 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cistatic struct resource heartbeat_resource = { 278c2ecf20Sopenharmony_ci .start = 0xffec005c, /* PUDR */ 288c2ecf20Sopenharmony_ci .end = 0xffec005c, 298c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM | IORESOURCE_MEM_8BIT, 308c2ecf20Sopenharmony_ci}; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_cistatic unsigned char heartbeat_bit_pos[] = { 0, 1, 2, 3 }; 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_cistatic struct heartbeat_data heartbeat_data = { 358c2ecf20Sopenharmony_ci .bit_pos = heartbeat_bit_pos, 368c2ecf20Sopenharmony_ci .nr_bits = ARRAY_SIZE(heartbeat_bit_pos), 378c2ecf20Sopenharmony_ci .flags = HEARTBEAT_INVERTED, 388c2ecf20Sopenharmony_ci}; 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_cistatic struct platform_device heartbeat_device = { 418c2ecf20Sopenharmony_ci .name = "heartbeat", 428c2ecf20Sopenharmony_ci .id = -1, 438c2ecf20Sopenharmony_ci .dev = { 448c2ecf20Sopenharmony_ci .platform_data = &heartbeat_data, 458c2ecf20Sopenharmony_ci }, 468c2ecf20Sopenharmony_ci .num_resources = 1, 478c2ecf20Sopenharmony_ci .resource = &heartbeat_resource, 488c2ecf20Sopenharmony_ci}; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci/* Fast Ethernet */ 518c2ecf20Sopenharmony_ci#define GBECONT 0xffc10100 528c2ecf20Sopenharmony_ci#define GBECONT_RMII1 BIT(17) 538c2ecf20Sopenharmony_ci#define GBECONT_RMII0 BIT(16) 548c2ecf20Sopenharmony_cistatic void sh7757_eth_set_mdio_gate(void *addr) 558c2ecf20Sopenharmony_ci{ 568c2ecf20Sopenharmony_ci if (((unsigned long)addr & 0x00000fff) < 0x0800) 578c2ecf20Sopenharmony_ci writel(readl(GBECONT) | GBECONT_RMII0, GBECONT); 588c2ecf20Sopenharmony_ci else 598c2ecf20Sopenharmony_ci writel(readl(GBECONT) | GBECONT_RMII1, GBECONT); 608c2ecf20Sopenharmony_ci} 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_cistatic struct resource sh_eth0_resources[] = { 638c2ecf20Sopenharmony_ci { 648c2ecf20Sopenharmony_ci .start = 0xfef00000, 658c2ecf20Sopenharmony_ci .end = 0xfef001ff, 668c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 678c2ecf20Sopenharmony_ci }, { 688c2ecf20Sopenharmony_ci .start = evt2irq(0xc80), 698c2ecf20Sopenharmony_ci .end = evt2irq(0xc80), 708c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 718c2ecf20Sopenharmony_ci }, 728c2ecf20Sopenharmony_ci}; 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_cistatic struct sh_eth_plat_data sh7757_eth0_pdata = { 758c2ecf20Sopenharmony_ci .phy = 1, 768c2ecf20Sopenharmony_ci .set_mdio_gate = sh7757_eth_set_mdio_gate, 778c2ecf20Sopenharmony_ci}; 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_cistatic struct platform_device sh7757_eth0_device = { 808c2ecf20Sopenharmony_ci .name = "sh7757-ether", 818c2ecf20Sopenharmony_ci .resource = sh_eth0_resources, 828c2ecf20Sopenharmony_ci .id = 0, 838c2ecf20Sopenharmony_ci .num_resources = ARRAY_SIZE(sh_eth0_resources), 848c2ecf20Sopenharmony_ci .dev = { 858c2ecf20Sopenharmony_ci .platform_data = &sh7757_eth0_pdata, 868c2ecf20Sopenharmony_ci }, 878c2ecf20Sopenharmony_ci}; 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_cistatic struct resource sh_eth1_resources[] = { 908c2ecf20Sopenharmony_ci { 918c2ecf20Sopenharmony_ci .start = 0xfef00800, 928c2ecf20Sopenharmony_ci .end = 0xfef009ff, 938c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 948c2ecf20Sopenharmony_ci }, { 958c2ecf20Sopenharmony_ci .start = evt2irq(0xc80), 968c2ecf20Sopenharmony_ci .end = evt2irq(0xc80), 978c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 988c2ecf20Sopenharmony_ci }, 998c2ecf20Sopenharmony_ci}; 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_cistatic struct sh_eth_plat_data sh7757_eth1_pdata = { 1028c2ecf20Sopenharmony_ci .phy = 1, 1038c2ecf20Sopenharmony_ci .set_mdio_gate = sh7757_eth_set_mdio_gate, 1048c2ecf20Sopenharmony_ci}; 1058c2ecf20Sopenharmony_ci 1068c2ecf20Sopenharmony_cistatic struct platform_device sh7757_eth1_device = { 1078c2ecf20Sopenharmony_ci .name = "sh7757-ether", 1088c2ecf20Sopenharmony_ci .resource = sh_eth1_resources, 1098c2ecf20Sopenharmony_ci .id = 1, 1108c2ecf20Sopenharmony_ci .num_resources = ARRAY_SIZE(sh_eth1_resources), 1118c2ecf20Sopenharmony_ci .dev = { 1128c2ecf20Sopenharmony_ci .platform_data = &sh7757_eth1_pdata, 1138c2ecf20Sopenharmony_ci }, 1148c2ecf20Sopenharmony_ci}; 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_cistatic void sh7757_eth_giga_set_mdio_gate(void *addr) 1178c2ecf20Sopenharmony_ci{ 1188c2ecf20Sopenharmony_ci if (((unsigned long)addr & 0x00000fff) < 0x0800) { 1198c2ecf20Sopenharmony_ci gpio_set_value(GPIO_PTT4, 1); 1208c2ecf20Sopenharmony_ci writel(readl(GBECONT) & ~GBECONT_RMII0, GBECONT); 1218c2ecf20Sopenharmony_ci } else { 1228c2ecf20Sopenharmony_ci gpio_set_value(GPIO_PTT4, 0); 1238c2ecf20Sopenharmony_ci writel(readl(GBECONT) & ~GBECONT_RMII1, GBECONT); 1248c2ecf20Sopenharmony_ci } 1258c2ecf20Sopenharmony_ci} 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_cistatic struct resource sh_eth_giga0_resources[] = { 1288c2ecf20Sopenharmony_ci { 1298c2ecf20Sopenharmony_ci .start = 0xfee00000, 1308c2ecf20Sopenharmony_ci .end = 0xfee007ff, 1318c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 1328c2ecf20Sopenharmony_ci }, { 1338c2ecf20Sopenharmony_ci /* TSU */ 1348c2ecf20Sopenharmony_ci .start = 0xfee01800, 1358c2ecf20Sopenharmony_ci .end = 0xfee01fff, 1368c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 1378c2ecf20Sopenharmony_ci }, { 1388c2ecf20Sopenharmony_ci .start = evt2irq(0x2960), 1398c2ecf20Sopenharmony_ci .end = evt2irq(0x2960), 1408c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 1418c2ecf20Sopenharmony_ci }, 1428c2ecf20Sopenharmony_ci}; 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_cistatic struct sh_eth_plat_data sh7757_eth_giga0_pdata = { 1458c2ecf20Sopenharmony_ci .phy = 18, 1468c2ecf20Sopenharmony_ci .set_mdio_gate = sh7757_eth_giga_set_mdio_gate, 1478c2ecf20Sopenharmony_ci .phy_interface = PHY_INTERFACE_MODE_RGMII_ID, 1488c2ecf20Sopenharmony_ci}; 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_cistatic struct platform_device sh7757_eth_giga0_device = { 1518c2ecf20Sopenharmony_ci .name = "sh7757-gether", 1528c2ecf20Sopenharmony_ci .resource = sh_eth_giga0_resources, 1538c2ecf20Sopenharmony_ci .id = 2, 1548c2ecf20Sopenharmony_ci .num_resources = ARRAY_SIZE(sh_eth_giga0_resources), 1558c2ecf20Sopenharmony_ci .dev = { 1568c2ecf20Sopenharmony_ci .platform_data = &sh7757_eth_giga0_pdata, 1578c2ecf20Sopenharmony_ci }, 1588c2ecf20Sopenharmony_ci}; 1598c2ecf20Sopenharmony_ci 1608c2ecf20Sopenharmony_cistatic struct resource sh_eth_giga1_resources[] = { 1618c2ecf20Sopenharmony_ci { 1628c2ecf20Sopenharmony_ci .start = 0xfee00800, 1638c2ecf20Sopenharmony_ci .end = 0xfee00fff, 1648c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 1658c2ecf20Sopenharmony_ci }, { 1668c2ecf20Sopenharmony_ci /* TSU */ 1678c2ecf20Sopenharmony_ci .start = 0xfee01800, 1688c2ecf20Sopenharmony_ci .end = 0xfee01fff, 1698c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 1708c2ecf20Sopenharmony_ci }, { 1718c2ecf20Sopenharmony_ci .start = evt2irq(0x2980), 1728c2ecf20Sopenharmony_ci .end = evt2irq(0x2980), 1738c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 1748c2ecf20Sopenharmony_ci }, 1758c2ecf20Sopenharmony_ci}; 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_cistatic struct sh_eth_plat_data sh7757_eth_giga1_pdata = { 1788c2ecf20Sopenharmony_ci .phy = 19, 1798c2ecf20Sopenharmony_ci .set_mdio_gate = sh7757_eth_giga_set_mdio_gate, 1808c2ecf20Sopenharmony_ci .phy_interface = PHY_INTERFACE_MODE_RGMII_ID, 1818c2ecf20Sopenharmony_ci}; 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_cistatic struct platform_device sh7757_eth_giga1_device = { 1848c2ecf20Sopenharmony_ci .name = "sh7757-gether", 1858c2ecf20Sopenharmony_ci .resource = sh_eth_giga1_resources, 1868c2ecf20Sopenharmony_ci .id = 3, 1878c2ecf20Sopenharmony_ci .num_resources = ARRAY_SIZE(sh_eth_giga1_resources), 1888c2ecf20Sopenharmony_ci .dev = { 1898c2ecf20Sopenharmony_ci .platform_data = &sh7757_eth_giga1_pdata, 1908c2ecf20Sopenharmony_ci }, 1918c2ecf20Sopenharmony_ci}; 1928c2ecf20Sopenharmony_ci 1938c2ecf20Sopenharmony_ci/* Fixed 3.3V regulator to be used by SDHI0, MMCIF */ 1948c2ecf20Sopenharmony_cistatic struct regulator_consumer_supply fixed3v3_power_consumers[] = 1958c2ecf20Sopenharmony_ci{ 1968c2ecf20Sopenharmony_ci REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"), 1978c2ecf20Sopenharmony_ci REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi.0"), 1988c2ecf20Sopenharmony_ci REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"), 1998c2ecf20Sopenharmony_ci REGULATOR_SUPPLY("vqmmc", "sh_mmcif.0"), 2008c2ecf20Sopenharmony_ci}; 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ci/* SH_MMCIF */ 2038c2ecf20Sopenharmony_cistatic struct resource sh_mmcif_resources[] = { 2048c2ecf20Sopenharmony_ci [0] = { 2058c2ecf20Sopenharmony_ci .start = 0xffcb0000, 2068c2ecf20Sopenharmony_ci .end = 0xffcb00ff, 2078c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 2088c2ecf20Sopenharmony_ci }, 2098c2ecf20Sopenharmony_ci [1] = { 2108c2ecf20Sopenharmony_ci .start = evt2irq(0x1c60), 2118c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 2128c2ecf20Sopenharmony_ci }, 2138c2ecf20Sopenharmony_ci [2] = { 2148c2ecf20Sopenharmony_ci .start = evt2irq(0x1c80), 2158c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 2168c2ecf20Sopenharmony_ci }, 2178c2ecf20Sopenharmony_ci}; 2188c2ecf20Sopenharmony_ci 2198c2ecf20Sopenharmony_cistatic struct sh_mmcif_plat_data sh_mmcif_plat = { 2208c2ecf20Sopenharmony_ci .sup_pclk = 0x0f, 2218c2ecf20Sopenharmony_ci .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA | 2228c2ecf20Sopenharmony_ci MMC_CAP_NONREMOVABLE, 2238c2ecf20Sopenharmony_ci .ocr = MMC_VDD_32_33 | MMC_VDD_33_34, 2248c2ecf20Sopenharmony_ci .slave_id_tx = SHDMA_SLAVE_MMCIF_TX, 2258c2ecf20Sopenharmony_ci .slave_id_rx = SHDMA_SLAVE_MMCIF_RX, 2268c2ecf20Sopenharmony_ci}; 2278c2ecf20Sopenharmony_ci 2288c2ecf20Sopenharmony_cistatic struct platform_device sh_mmcif_device = { 2298c2ecf20Sopenharmony_ci .name = "sh_mmcif", 2308c2ecf20Sopenharmony_ci .id = 0, 2318c2ecf20Sopenharmony_ci .dev = { 2328c2ecf20Sopenharmony_ci .platform_data = &sh_mmcif_plat, 2338c2ecf20Sopenharmony_ci }, 2348c2ecf20Sopenharmony_ci .num_resources = ARRAY_SIZE(sh_mmcif_resources), 2358c2ecf20Sopenharmony_ci .resource = sh_mmcif_resources, 2368c2ecf20Sopenharmony_ci}; 2378c2ecf20Sopenharmony_ci 2388c2ecf20Sopenharmony_ci/* SDHI0 */ 2398c2ecf20Sopenharmony_cistatic struct tmio_mmc_data sdhi_info = { 2408c2ecf20Sopenharmony_ci .chan_priv_tx = (void *)SHDMA_SLAVE_SDHI_TX, 2418c2ecf20Sopenharmony_ci .chan_priv_rx = (void *)SHDMA_SLAVE_SDHI_RX, 2428c2ecf20Sopenharmony_ci .capabilities = MMC_CAP_SD_HIGHSPEED, 2438c2ecf20Sopenharmony_ci}; 2448c2ecf20Sopenharmony_ci 2458c2ecf20Sopenharmony_cistatic struct resource sdhi_resources[] = { 2468c2ecf20Sopenharmony_ci [0] = { 2478c2ecf20Sopenharmony_ci .start = 0xffe50000, 2488c2ecf20Sopenharmony_ci .end = 0xffe500ff, 2498c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 2508c2ecf20Sopenharmony_ci }, 2518c2ecf20Sopenharmony_ci [1] = { 2528c2ecf20Sopenharmony_ci .start = evt2irq(0x480), 2538c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 2548c2ecf20Sopenharmony_ci }, 2558c2ecf20Sopenharmony_ci}; 2568c2ecf20Sopenharmony_ci 2578c2ecf20Sopenharmony_cistatic struct platform_device sdhi_device = { 2588c2ecf20Sopenharmony_ci .name = "sh_mobile_sdhi", 2598c2ecf20Sopenharmony_ci .num_resources = ARRAY_SIZE(sdhi_resources), 2608c2ecf20Sopenharmony_ci .resource = sdhi_resources, 2618c2ecf20Sopenharmony_ci .id = 0, 2628c2ecf20Sopenharmony_ci .dev = { 2638c2ecf20Sopenharmony_ci .platform_data = &sdhi_info, 2648c2ecf20Sopenharmony_ci }, 2658c2ecf20Sopenharmony_ci}; 2668c2ecf20Sopenharmony_ci 2678c2ecf20Sopenharmony_cistatic int usbhs0_get_id(struct platform_device *pdev) 2688c2ecf20Sopenharmony_ci{ 2698c2ecf20Sopenharmony_ci return USBHS_GADGET; 2708c2ecf20Sopenharmony_ci} 2718c2ecf20Sopenharmony_ci 2728c2ecf20Sopenharmony_cistatic struct renesas_usbhs_platform_info usb0_data = { 2738c2ecf20Sopenharmony_ci .platform_callback = { 2748c2ecf20Sopenharmony_ci .get_id = usbhs0_get_id, 2758c2ecf20Sopenharmony_ci }, 2768c2ecf20Sopenharmony_ci .driver_param = { 2778c2ecf20Sopenharmony_ci .buswait_bwait = 5, 2788c2ecf20Sopenharmony_ci } 2798c2ecf20Sopenharmony_ci}; 2808c2ecf20Sopenharmony_ci 2818c2ecf20Sopenharmony_cistatic struct resource usb0_resources[] = { 2828c2ecf20Sopenharmony_ci [0] = { 2838c2ecf20Sopenharmony_ci .start = 0xfe450000, 2848c2ecf20Sopenharmony_ci .end = 0xfe4501ff, 2858c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 2868c2ecf20Sopenharmony_ci }, 2878c2ecf20Sopenharmony_ci [1] = { 2888c2ecf20Sopenharmony_ci .start = evt2irq(0x840), 2898c2ecf20Sopenharmony_ci .end = evt2irq(0x840), 2908c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 2918c2ecf20Sopenharmony_ci }, 2928c2ecf20Sopenharmony_ci}; 2938c2ecf20Sopenharmony_ci 2948c2ecf20Sopenharmony_cistatic struct platform_device usb0_device = { 2958c2ecf20Sopenharmony_ci .name = "renesas_usbhs", 2968c2ecf20Sopenharmony_ci .id = 0, 2978c2ecf20Sopenharmony_ci .dev = { 2988c2ecf20Sopenharmony_ci .platform_data = &usb0_data, 2998c2ecf20Sopenharmony_ci }, 3008c2ecf20Sopenharmony_ci .num_resources = ARRAY_SIZE(usb0_resources), 3018c2ecf20Sopenharmony_ci .resource = usb0_resources, 3028c2ecf20Sopenharmony_ci}; 3038c2ecf20Sopenharmony_ci 3048c2ecf20Sopenharmony_cistatic struct platform_device *sh7757lcr_devices[] __initdata = { 3058c2ecf20Sopenharmony_ci &heartbeat_device, 3068c2ecf20Sopenharmony_ci &sh7757_eth0_device, 3078c2ecf20Sopenharmony_ci &sh7757_eth1_device, 3088c2ecf20Sopenharmony_ci &sh7757_eth_giga0_device, 3098c2ecf20Sopenharmony_ci &sh7757_eth_giga1_device, 3108c2ecf20Sopenharmony_ci &sh_mmcif_device, 3118c2ecf20Sopenharmony_ci &sdhi_device, 3128c2ecf20Sopenharmony_ci &usb0_device, 3138c2ecf20Sopenharmony_ci}; 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_cistatic struct flash_platform_data spi_flash_data = { 3168c2ecf20Sopenharmony_ci .name = "m25p80", 3178c2ecf20Sopenharmony_ci .type = "m25px64", 3188c2ecf20Sopenharmony_ci}; 3198c2ecf20Sopenharmony_ci 3208c2ecf20Sopenharmony_cistatic struct spi_board_info spi_board_info[] = { 3218c2ecf20Sopenharmony_ci { 3228c2ecf20Sopenharmony_ci .modalias = "m25p80", 3238c2ecf20Sopenharmony_ci .max_speed_hz = 25000000, 3248c2ecf20Sopenharmony_ci .bus_num = 0, 3258c2ecf20Sopenharmony_ci .chip_select = 1, 3268c2ecf20Sopenharmony_ci .platform_data = &spi_flash_data, 3278c2ecf20Sopenharmony_ci }, 3288c2ecf20Sopenharmony_ci}; 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_cistatic int __init sh7757lcr_devices_setup(void) 3318c2ecf20Sopenharmony_ci{ 3328c2ecf20Sopenharmony_ci regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers, 3338c2ecf20Sopenharmony_ci ARRAY_SIZE(fixed3v3_power_consumers), 3300000); 3348c2ecf20Sopenharmony_ci 3358c2ecf20Sopenharmony_ci /* RGMII (PTA) */ 3368c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ET0_MDC, NULL); 3378c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ET0_MDIO, NULL); 3388c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ET1_MDC, NULL); 3398c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ET1_MDIO, NULL); 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ci /* ONFI (PTB, PTZ) */ 3428c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_NRE, NULL); 3438c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_NWE, NULL); 3448c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_NWP, NULL); 3458c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_NCE0, NULL); 3468c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_R_B0, NULL); 3478c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_ALE, NULL); 3488c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_CLE, NULL); 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_DQ7, NULL); 3518c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_DQ6, NULL); 3528c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_DQ5, NULL); 3538c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_DQ4, NULL); 3548c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_DQ3, NULL); 3558c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_DQ2, NULL); 3568c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_DQ1, NULL); 3578c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_ON_DQ0, NULL); 3588c2ecf20Sopenharmony_ci 3598c2ecf20Sopenharmony_ci /* IRQ8 to 0 (PTB, PTC) */ 3608c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ8, NULL); 3618c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ7, NULL); 3628c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ6, NULL); 3638c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ5, NULL); 3648c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ4, NULL); 3658c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ3, NULL); 3668c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ2, NULL); 3678c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ1, NULL); 3688c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_IRQ0, NULL); 3698c2ecf20Sopenharmony_ci 3708c2ecf20Sopenharmony_ci /* SPI0 (PTD) */ 3718c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP0_MOSI, NULL); 3728c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP0_MISO, NULL); 3738c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP0_SCK, NULL); 3748c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP0_SCK_FB, NULL); 3758c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP0_SS0, NULL); 3768c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP0_SS1, NULL); 3778c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP0_SS2, NULL); 3788c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP0_SS3, NULL); 3798c2ecf20Sopenharmony_ci 3808c2ecf20Sopenharmony_ci /* RMII 0/1 (PTE, PTF) */ 3818c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII0_CRS_DV, NULL); 3828c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII0_TXD1, NULL); 3838c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII0_TXD0, NULL); 3848c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII0_TXEN, NULL); 3858c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII0_REFCLK, NULL); 3868c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII0_RXD1, NULL); 3878c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII0_RXD0, NULL); 3888c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII0_RX_ER, NULL); 3898c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII1_CRS_DV, NULL); 3908c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII1_TXD1, NULL); 3918c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII1_TXD0, NULL); 3928c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII1_TXEN, NULL); 3938c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII1_REFCLK, NULL); 3948c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII1_RXD1, NULL); 3958c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII1_RXD0, NULL); 3968c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RMII1_RX_ER, NULL); 3978c2ecf20Sopenharmony_ci 3988c2ecf20Sopenharmony_ci /* eMMC (PTG) */ 3998c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCCLK, NULL); 4008c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCCMD, NULL); 4018c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCDAT7, NULL); 4028c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCDAT6, NULL); 4038c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCDAT5, NULL); 4048c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCDAT4, NULL); 4058c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCDAT3, NULL); 4068c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCDAT2, NULL); 4078c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCDAT1, NULL); 4088c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_MMCDAT0, NULL); 4098c2ecf20Sopenharmony_ci 4108c2ecf20Sopenharmony_ci /* LPC (PTG, PTH, PTQ, PTU) */ 4118c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SERIRQ, NULL); 4128c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LPCPD, NULL); 4138c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LDRQ, NULL); 4148c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_WP, NULL); 4158c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_FMS0, NULL); 4168c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LAD3, NULL); 4178c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LAD2, NULL); 4188c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LAD1, NULL); 4198c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LAD0, NULL); 4208c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LFRAME, NULL); 4218c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LRESET, NULL); 4228c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LCLK, NULL); 4238c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LGPIO7, NULL); 4248c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LGPIO6, NULL); 4258c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LGPIO5, NULL); 4268c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_LGPIO4, NULL); 4278c2ecf20Sopenharmony_ci 4288c2ecf20Sopenharmony_ci /* SPI1 (PTH) */ 4298c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP1_MOSI, NULL); 4308c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP1_MISO, NULL); 4318c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP1_SCK, NULL); 4328c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP1_SCK_FB, NULL); 4338c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP1_SS0, NULL); 4348c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SP1_SS1, NULL); 4358c2ecf20Sopenharmony_ci 4368c2ecf20Sopenharmony_ci /* SDHI (PTI) */ 4378c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SD_WP, NULL); 4388c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SD_CD, NULL); 4398c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SD_CLK, NULL); 4408c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SD_CMD, NULL); 4418c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SD_D3, NULL); 4428c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SD_D2, NULL); 4438c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SD_D1, NULL); 4448c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SD_D0, NULL); 4458c2ecf20Sopenharmony_ci 4468c2ecf20Sopenharmony_ci /* SCIF3/4 (PTJ, PTW) */ 4478c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RTS3, NULL); 4488c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_CTS3, NULL); 4498c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_TXD3, NULL); 4508c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RXD3, NULL); 4518c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RTS4, NULL); 4528c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RXD4, NULL); 4538c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_TXD4, NULL); 4548c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_CTS4, NULL); 4558c2ecf20Sopenharmony_ci 4568c2ecf20Sopenharmony_ci /* SERMUX (PTK, PTL, PTO, PTV) */ 4578c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM2_TXD, NULL); 4588c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM2_RXD, NULL); 4598c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM2_RTS, NULL); 4608c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM2_CTS, NULL); 4618c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM2_DTR, NULL); 4628c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM2_DSR, NULL); 4638c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM2_DCD, NULL); 4648c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM2_RI, NULL); 4658c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RAC_RXD, NULL); 4668c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RAC_RTS, NULL); 4678c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RAC_CTS, NULL); 4688c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RAC_DTR, NULL); 4698c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RAC_DSR, NULL); 4708c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RAC_DCD, NULL); 4718c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_RAC_TXD, NULL); 4728c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM1_TXD, NULL); 4738c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM1_RXD, NULL); 4748c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM1_RTS, NULL); 4758c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_COM1_CTS, NULL); 4768c2ecf20Sopenharmony_ci 4778c2ecf20Sopenharmony_ci writeb(0x10, 0xfe470000); /* SMR0: SerMux mode 0 */ 4788c2ecf20Sopenharmony_ci 4798c2ecf20Sopenharmony_ci /* IIC (PTM, PTR, PTS) */ 4808c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SDA7, NULL); 4818c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SCL7, NULL); 4828c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SDA6, NULL); 4838c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SCL6, NULL); 4848c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SDA5, NULL); 4858c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SCL5, NULL); 4868c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SDA4, NULL); 4878c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SCL4, NULL); 4888c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SDA3, NULL); 4898c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SCL3, NULL); 4908c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SDA2, NULL); 4918c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SCL2, NULL); 4928c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SDA1, NULL); 4938c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SCL1, NULL); 4948c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SDA0, NULL); 4958c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SCL0, NULL); 4968c2ecf20Sopenharmony_ci 4978c2ecf20Sopenharmony_ci /* USB (PTN) */ 4988c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_VBUS_EN, NULL); 4998c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_VBUS_OC, NULL); 5008c2ecf20Sopenharmony_ci 5018c2ecf20Sopenharmony_ci /* SGPIO1/0 (PTN, PTO) */ 5028c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SGPIO1_CLK, NULL); 5038c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SGPIO1_LOAD, NULL); 5048c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SGPIO1_DI, NULL); 5058c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SGPIO1_DO, NULL); 5068c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SGPIO0_CLK, NULL); 5078c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SGPIO0_LOAD, NULL); 5088c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SGPIO0_DI, NULL); 5098c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SGPIO0_DO, NULL); 5108c2ecf20Sopenharmony_ci 5118c2ecf20Sopenharmony_ci /* WDT (PTN) */ 5128c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_SUB_CLKIN, NULL); 5138c2ecf20Sopenharmony_ci 5148c2ecf20Sopenharmony_ci /* System (PTT) */ 5158c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_STATUS1, NULL); 5168c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_STATUS0, NULL); 5178c2ecf20Sopenharmony_ci 5188c2ecf20Sopenharmony_ci /* PWMX (PTT) */ 5198c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_PWMX1, NULL); 5208c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_PWMX0, NULL); 5218c2ecf20Sopenharmony_ci 5228c2ecf20Sopenharmony_ci /* R-SPI (PTV) */ 5238c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_R_SPI_MOSI, NULL); 5248c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_R_SPI_MISO, NULL); 5258c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_R_SPI_RSPCK, NULL); 5268c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_R_SPI_SSL0, NULL); 5278c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_R_SPI_SSL1, NULL); 5288c2ecf20Sopenharmony_ci 5298c2ecf20Sopenharmony_ci /* EVC (PTV, PTW) */ 5308c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_EVENT7, NULL); 5318c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_EVENT6, NULL); 5328c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_EVENT5, NULL); 5338c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_EVENT4, NULL); 5348c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_EVENT3, NULL); 5358c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_EVENT2, NULL); 5368c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_EVENT1, NULL); 5378c2ecf20Sopenharmony_ci gpio_request(GPIO_FN_EVENT0, NULL); 5388c2ecf20Sopenharmony_ci 5398c2ecf20Sopenharmony_ci /* LED for heartbeat */ 5408c2ecf20Sopenharmony_ci gpio_request(GPIO_PTU3, NULL); 5418c2ecf20Sopenharmony_ci gpio_direction_output(GPIO_PTU3, 1); 5428c2ecf20Sopenharmony_ci gpio_request(GPIO_PTU2, NULL); 5438c2ecf20Sopenharmony_ci gpio_direction_output(GPIO_PTU2, 1); 5448c2ecf20Sopenharmony_ci gpio_request(GPIO_PTU1, NULL); 5458c2ecf20Sopenharmony_ci gpio_direction_output(GPIO_PTU1, 1); 5468c2ecf20Sopenharmony_ci gpio_request(GPIO_PTU0, NULL); 5478c2ecf20Sopenharmony_ci gpio_direction_output(GPIO_PTU0, 1); 5488c2ecf20Sopenharmony_ci 5498c2ecf20Sopenharmony_ci /* control for MDIO of Gigabit Ethernet */ 5508c2ecf20Sopenharmony_ci gpio_request(GPIO_PTT4, NULL); 5518c2ecf20Sopenharmony_ci gpio_direction_output(GPIO_PTT4, 1); 5528c2ecf20Sopenharmony_ci 5538c2ecf20Sopenharmony_ci /* control for eMMC */ 5548c2ecf20Sopenharmony_ci gpio_request(GPIO_PTT7, NULL); /* eMMC_RST# */ 5558c2ecf20Sopenharmony_ci gpio_direction_output(GPIO_PTT7, 0); 5568c2ecf20Sopenharmony_ci gpio_request(GPIO_PTT6, NULL); /* eMMC_INDEX# */ 5578c2ecf20Sopenharmony_ci gpio_direction_output(GPIO_PTT6, 0); 5588c2ecf20Sopenharmony_ci gpio_request(GPIO_PTT5, NULL); /* eMMC_PRST# */ 5598c2ecf20Sopenharmony_ci gpio_direction_output(GPIO_PTT5, 1); 5608c2ecf20Sopenharmony_ci 5618c2ecf20Sopenharmony_ci /* register SPI device information */ 5628c2ecf20Sopenharmony_ci spi_register_board_info(spi_board_info, 5638c2ecf20Sopenharmony_ci ARRAY_SIZE(spi_board_info)); 5648c2ecf20Sopenharmony_ci 5658c2ecf20Sopenharmony_ci /* General platform */ 5668c2ecf20Sopenharmony_ci return platform_add_devices(sh7757lcr_devices, 5678c2ecf20Sopenharmony_ci ARRAY_SIZE(sh7757lcr_devices)); 5688c2ecf20Sopenharmony_ci} 5698c2ecf20Sopenharmony_ciarch_initcall(sh7757lcr_devices_setup); 5708c2ecf20Sopenharmony_ci 5718c2ecf20Sopenharmony_ci/* Initialize IRQ setting */ 5728c2ecf20Sopenharmony_civoid __init init_sh7757lcr_IRQ(void) 5738c2ecf20Sopenharmony_ci{ 5748c2ecf20Sopenharmony_ci plat_irq_setup_pins(IRQ_MODE_IRQ7654); 5758c2ecf20Sopenharmony_ci plat_irq_setup_pins(IRQ_MODE_IRQ3210); 5768c2ecf20Sopenharmony_ci} 5778c2ecf20Sopenharmony_ci 5788c2ecf20Sopenharmony_ci/* Initialize the board */ 5798c2ecf20Sopenharmony_cistatic void __init sh7757lcr_setup(char **cmdline_p) 5808c2ecf20Sopenharmony_ci{ 5818c2ecf20Sopenharmony_ci printk(KERN_INFO "Renesas R0P7757LC0012RL support.\n"); 5828c2ecf20Sopenharmony_ci} 5838c2ecf20Sopenharmony_ci 5848c2ecf20Sopenharmony_cistatic int sh7757lcr_mode_pins(void) 5858c2ecf20Sopenharmony_ci{ 5868c2ecf20Sopenharmony_ci int value = 0; 5878c2ecf20Sopenharmony_ci 5888c2ecf20Sopenharmony_ci /* These are the factory default settings of S3 (Low active). 5898c2ecf20Sopenharmony_ci * If you change these dip switches then you will need to 5908c2ecf20Sopenharmony_ci * adjust the values below as well. 5918c2ecf20Sopenharmony_ci */ 5928c2ecf20Sopenharmony_ci value |= MODE_PIN0; /* Clock Mode: 1 */ 5938c2ecf20Sopenharmony_ci 5948c2ecf20Sopenharmony_ci return value; 5958c2ecf20Sopenharmony_ci} 5968c2ecf20Sopenharmony_ci 5978c2ecf20Sopenharmony_ci/* The Machine Vector */ 5988c2ecf20Sopenharmony_cistatic struct sh_machine_vector mv_sh7757lcr __initmv = { 5998c2ecf20Sopenharmony_ci .mv_name = "SH7757LCR", 6008c2ecf20Sopenharmony_ci .mv_setup = sh7757lcr_setup, 6018c2ecf20Sopenharmony_ci .mv_init_irq = init_sh7757lcr_IRQ, 6028c2ecf20Sopenharmony_ci .mv_mode_pins = sh7757lcr_mode_pins, 6038c2ecf20Sopenharmony_ci}; 6048c2ecf20Sopenharmony_ci 605