static struct resource scif##index##_resources[] = { \ DEFINE_RES_MEM(baseaddr, 0x100), \ DEFINE_RES_IRQ(irq), \ }; \ \ static struct platform_device scif##index##_device = { \ .name = "sh-sci", \ .id = index, \ .resource = scif##index##_resources, \ .num_resources = ARRAY_SIZE(scif##index##_resources), \ .dev = { \ .platform_data = &scif##index##_platform_data, \ }, \ } R8A7779_SCIF(0, 0xffe40000, gic_iid(0x78)); R8A7779_SCIF(1, 0xffe41000, gic_iid(0x79)); R8A7779_SCIF(2, 0xffe42000, gic_iid(0x7a)); R8A7779_SCIF(3, 0xffe43000, gic_iid(0x7b)); R8A7779_SCIF(4, 0xffe44000, gic_iid(0x7c)); R8A7779_SCIF(5, 0xffe45000, gic_iid(0x7d)); /* TMU */ static struct sh_timer_config tmu0_platform_data = { .channels_mask = 7, }; static struct resource tmu0_resources[] = { DEFINE_RES_MEM(0xffd80000, 0x30), DEFINE_RES_IRQ(gic_iid(0x40)), DEFINE_RES_IRQ(gic_iid(0x41)),
#include "r8a7778.h" /* SCIF */ #define R8A7778_SCIF(index, baseaddr, irq) \ static struct plat_sci_port scif##index##_platform_data = { \ .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP, \ .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, \ .type = PORT_SCIF, \ }; \ \ static struct resource scif##index##_resources[] = { \ DEFINE_RES_MEM(baseaddr, 0x100), \ DEFINE_RES_IRQ(irq), \ } R8A7778_SCIF(0, 0xffe40000, gic_iid(0x66)); R8A7778_SCIF(1, 0xffe41000, gic_iid(0x67)); R8A7778_SCIF(2, 0xffe42000, gic_iid(0x68)); R8A7778_SCIF(3, 0xffe43000, gic_iid(0x69)); R8A7778_SCIF(4, 0xffe44000, gic_iid(0x6a)); R8A7778_SCIF(5, 0xffe45000, gic_iid(0x6b)); #define r8a7778_register_scif(index) \ platform_device_register_resndata(&platform_bus, "sh-sci", index, \ scif##index##_resources, \ ARRAY_SIZE(scif##index##_resources), \ &scif##index##_platform_data, \ sizeof(scif##index##_platform_data)) /* TMU */ static struct sh_timer_config sh_tmu0_platform_data = {
.dev = { .platform_data = &smsc911x_platdata, }, .resource = smsc911x_resources, .num_resources = ARRAY_SIZE(smsc911x_resources), }; static struct resource sdhi0_resources[] = { [0] = { .name = "sdhi0", .start = 0xffe4c000, .end = 0xffe4c0ff, .flags = IORESOURCE_MEM, }, [1] = { .start = gic_iid(0x88), .flags = IORESOURCE_IRQ, }, }; static struct sh_mobile_sdhi_info sdhi0_platform_data = { .dma_slave_tx = HPBDMA_SLAVE_SDHI0_TX, .dma_slave_rx = HPBDMA_SLAVE_SDHI0_RX, .tmio_flags = TMIO_MMC_WRPROTECT_DISABLE | TMIO_MMC_HAS_IDLE_WAIT, .tmio_caps = MMC_CAP_SD_HIGHSPEED, }; static struct platform_device sdhi0_device = { .name = "sh_mobile_sdhi", .num_resources = ARRAY_SIZE(sdhi0_resources), .resource = sdhi0_resources,
&r8a7779_gpio6_device, }; void __init r8a7779_pinmux_init(void) { platform_add_devices(r8a7779_pinctrl_devices, ARRAY_SIZE(r8a7779_pinctrl_devices)); } static struct plat_sci_port scif0_platform_data = { .mapbase = 0xffe40000, .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP, .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, .scbrr_algo_id = SCBRR_ALGO_2, .type = PORT_SCIF, .irqs = SCIx_IRQ_MUXED(gic_iid(0x78)), }; static struct platform_device scif0_device = { .name = "sh-sci", .id = 0, .dev = { .platform_data = &scif0_platform_data, }, }; static struct plat_sci_port scif1_platform_data = { .mapbase = 0xffe41000, .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP, .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, .scbrr_algo_id = SCBRR_ALGO_2,
#include <linux/sh_timer.h> #include <mach/common.h> #include <mach/irqs.h> #include <mach/r7s72100.h> #include <asm/mach/arch.h> static struct sh_timer_config mtu2_0_platform_data __initdata = { .name = "MTU2_0", .timer_bit = 0, .channel_offset = -0x80, .clockevent_rating = 200, }; static struct resource mtu2_0_resources[] __initdata = { DEFINE_RES_MEM(0xfcff0300, 0x27), DEFINE_RES_IRQ(gic_iid(139)), /* MTU2 TGI0A */ }; #define r7s72100_register_mtu2(idx) \ platform_device_register_resndata(&platform_bus, "sh_mtu2", \ idx, mtu2_##idx##_resources, \ ARRAY_SIZE(mtu2_##idx##_resources), \ &mtu2_##idx##_platform_data, \ sizeof(struct sh_timer_config)) void __init r7s72100_add_dt_devices(void) { r7s72100_register_mtu2(0); } #ifdef CONFIG_USE_OF
#define SUSPMODE 0x102 static int usbhsf_power_ctrl(struct platform_device *pdev, void __iomem *base, int enable) { enable = !!enable; r8a7778_usb_phy_power(enable); iowrite16(enable << 14, base + SUSPMODE); return 0; } static struct resource usbhsf_resources[] __initdata = { DEFINE_RES_MEM(0xffe60000, 0x110), DEFINE_RES_IRQ(gic_iid(0x4f)), }; static struct renesas_usbhs_platform_info usbhs_info __initdata = { .platform_callback = { .get_id = usbhsf_get_id, .power_ctrl = usbhsf_power_ctrl, }, .driver_param = { .buswait_bwait = 4, }, }; #define USB_PHY_SETTING {.port1_func = 1, .ovc_pin[1].active_high = 1,} #define USB1_DEVICE "renesas_usbhs" #define ADD_USB_FUNC_DEVICE_IF_POSSIBLE() \
#include <mach/r7s72100.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> /* Ether */ static const struct sh_eth_plat_data ether_pdata __initconst = { .phy = 0x00, /* PD60610 */ .edmac_endian = EDMAC_LITTLE_ENDIAN, .phy_interface = PHY_INTERFACE_MODE_MII, .no_ether_link = 1 }; static const struct resource ether_resources[] __initconst = { DEFINE_RES_MEM(0xe8203000, 0x800), DEFINE_RES_MEM(0xe8204800, 0x200), DEFINE_RES_IRQ(gic_iid(359)), }; static const struct platform_device_info ether_info __initconst = { .parent = &platform_bus, .name = "r7s72100-ether", .id = -1, .res = ether_resources, .num_res = ARRAY_SIZE(ether_resources), .data = ðer_pdata, .size_data = sizeof(ether_pdata), .dma_mask = DMA_BIT_MASK(32), }; /* RSPI */ #define RSPI_RESOURCE(idx, baseaddr, irq) \
/* Dummy supplies, where voltage doesn't matter */ static struct regulator_consumer_supply dummy_supplies[] = { REGULATOR_SUPPLY("vddvario", "smsc911x"), REGULATOR_SUPPLY("vdd33a", "smsc911x"), }; /* SMSC LAN89218 */ static struct resource smsc911x_resources[] = { [0] = { .start = 0x18000000, /* ExCS0 */ .end = 0x180000ff, /* A1->A7 */ .flags = IORESOURCE_MEM, }, [1] = { .start = gic_iid(0x3c), /* IRQ 1 */ .flags = IORESOURCE_IRQ, }, }; static struct smsc911x_platform_config smsc911x_platdata = { .flags = SMSC911X_USE_32BIT, /* 32-bit SW on 16-bit HW bus */ .phy_interface = PHY_INTERFACE_MODE_MII, .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, }; static struct platform_device eth_device = { .name = "smsc911x", .id = -1, .dev = {
#include "common.h" #include "irqs.h" #include "r7s72100.h" /* Ether */ static const struct sh_eth_plat_data ether_pdata __initconst = { .phy = 0x00, /* PD60610 */ .edmac_endian = EDMAC_LITTLE_ENDIAN, .phy_interface = PHY_INTERFACE_MODE_MII, .no_ether_link = 1 }; static const struct resource ether_resources[] __initconst = { DEFINE_RES_MEM(0xe8203000, 0x800), DEFINE_RES_MEM(0xe8204800, 0x200), DEFINE_RES_IRQ(gic_iid(359)), }; static const struct platform_device_info ether_info __initconst = { .name = "r7s72100-ether", .id = -1, .res = ether_resources, .num_res = ARRAY_SIZE(ether_resources), .data = ðer_pdata, .size_data = sizeof(ether_pdata), .dma_mask = DMA_BIT_MASK(32), }; /* RSPI */ #define RSPI_RESOURCE(idx, baseaddr, irq) \ static const struct resource rspi##idx##_resources[] __initconst = { \
#define SUSPMODE 0x102 static int usbhsf_power_ctrl(struct platform_device *pdev, void __iomem *base, int enable) { enable = !!enable; r8a7778_usb_phy_power(enable); iowrite16(enable << 14, base + SUSPMODE); return 0; } static struct resource usbhsf_resources[] __initdata = { DEFINE_RES_MEM(0xffe60000, 0x110), DEFINE_RES_IRQ(gic_iid(0x4f)), }; static struct renesas_usbhs_platform_info usbhs_info __initdata = { .platform_callback = { .get_id = usbhsf_get_id, .power_ctrl = usbhsf_power_ctrl, }, .driver_param = { .buswait_bwait = 4, .d0_tx_id = HPBDMA_SLAVE_USBFUNC_TX, .d1_rx_id = HPBDMA_SLAVE_USBFUNC_RX, }, }; #define USB_PHY_SETTING {.port1_func = 1, .ovc_pin[1].active_high = 1,}