18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * arch/sh/boards/renesas/sdk7780/setup.c 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Renesas Solutions SH7780 SDK Support 68c2ecf20Sopenharmony_ci * Copyright (C) 2008 Nicholas Beck <nbeck@mpc-data.co.uk> 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci#include <linux/init.h> 98c2ecf20Sopenharmony_ci#include <linux/types.h> 108c2ecf20Sopenharmony_ci#include <linux/platform_device.h> 118c2ecf20Sopenharmony_ci#include <linux/ata_platform.h> 128c2ecf20Sopenharmony_ci#include <asm/machvec.h> 138c2ecf20Sopenharmony_ci#include <mach/sdk7780.h> 148c2ecf20Sopenharmony_ci#include <asm/heartbeat.h> 158c2ecf20Sopenharmony_ci#include <asm/io.h> 168c2ecf20Sopenharmony_ci#include <asm/addrspace.h> 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#define GPIO_PECR 0xFFEA0008 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci/* Heartbeat */ 218c2ecf20Sopenharmony_cistatic struct resource heartbeat_resource = { 228c2ecf20Sopenharmony_ci .start = PA_LED, 238c2ecf20Sopenharmony_ci .end = PA_LED, 248c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM | IORESOURCE_MEM_16BIT, 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cistatic struct platform_device heartbeat_device = { 288c2ecf20Sopenharmony_ci .name = "heartbeat", 298c2ecf20Sopenharmony_ci .id = -1, 308c2ecf20Sopenharmony_ci .num_resources = 1, 318c2ecf20Sopenharmony_ci .resource = &heartbeat_resource, 328c2ecf20Sopenharmony_ci}; 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci/* SMC91x */ 358c2ecf20Sopenharmony_cistatic struct resource smc91x_eth_resources[] = { 368c2ecf20Sopenharmony_ci [0] = { 378c2ecf20Sopenharmony_ci .name = "smc91x-regs" , 388c2ecf20Sopenharmony_ci .start = PA_LAN + 0x300, 398c2ecf20Sopenharmony_ci .end = PA_LAN + 0x300 + 0x10 , 408c2ecf20Sopenharmony_ci .flags = IORESOURCE_MEM, 418c2ecf20Sopenharmony_ci }, 428c2ecf20Sopenharmony_ci [1] = { 438c2ecf20Sopenharmony_ci .start = IRQ_ETHERNET, 448c2ecf20Sopenharmony_ci .end = IRQ_ETHERNET, 458c2ecf20Sopenharmony_ci .flags = IORESOURCE_IRQ, 468c2ecf20Sopenharmony_ci }, 478c2ecf20Sopenharmony_ci}; 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_cistatic struct platform_device smc91x_eth_device = { 508c2ecf20Sopenharmony_ci .name = "smc91x", 518c2ecf20Sopenharmony_ci .id = 0, 528c2ecf20Sopenharmony_ci .dev = { 538c2ecf20Sopenharmony_ci .dma_mask = NULL, /* don't use dma */ 548c2ecf20Sopenharmony_ci .coherent_dma_mask = 0xffffffff, 558c2ecf20Sopenharmony_ci }, 568c2ecf20Sopenharmony_ci .num_resources = ARRAY_SIZE(smc91x_eth_resources), 578c2ecf20Sopenharmony_ci .resource = smc91x_eth_resources, 588c2ecf20Sopenharmony_ci}; 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_cistatic struct platform_device *sdk7780_devices[] __initdata = { 618c2ecf20Sopenharmony_ci &heartbeat_device, 628c2ecf20Sopenharmony_ci &smc91x_eth_device, 638c2ecf20Sopenharmony_ci}; 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_cistatic int __init sdk7780_devices_setup(void) 668c2ecf20Sopenharmony_ci{ 678c2ecf20Sopenharmony_ci return platform_add_devices(sdk7780_devices, 688c2ecf20Sopenharmony_ci ARRAY_SIZE(sdk7780_devices)); 698c2ecf20Sopenharmony_ci} 708c2ecf20Sopenharmony_cidevice_initcall(sdk7780_devices_setup); 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_cistatic void __init sdk7780_setup(char **cmdline_p) 738c2ecf20Sopenharmony_ci{ 748c2ecf20Sopenharmony_ci u16 ver = __raw_readw(FPGA_FPVERR); 758c2ecf20Sopenharmony_ci u16 dateStamp = __raw_readw(FPGA_FPDATER); 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci printk(KERN_INFO "Renesas Technology Europe SDK7780 support.\n"); 788c2ecf20Sopenharmony_ci printk(KERN_INFO "Board version: %d (revision %d), " 798c2ecf20Sopenharmony_ci "FPGA version: %d (revision %d), datestamp : %d\n", 808c2ecf20Sopenharmony_ci (ver >> 12) & 0xf, (ver >> 8) & 0xf, 818c2ecf20Sopenharmony_ci (ver >> 4) & 0xf, ver & 0xf, 828c2ecf20Sopenharmony_ci dateStamp); 838c2ecf20Sopenharmony_ci 848c2ecf20Sopenharmony_ci /* Setup pin mux'ing for PCIC */ 858c2ecf20Sopenharmony_ci __raw_writew(0x0000, GPIO_PECR); 868c2ecf20Sopenharmony_ci} 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci/* 898c2ecf20Sopenharmony_ci * The Machine Vector 908c2ecf20Sopenharmony_ci */ 918c2ecf20Sopenharmony_cistatic struct sh_machine_vector mv_se7780 __initmv = { 928c2ecf20Sopenharmony_ci .mv_name = "Renesas SDK7780-R3" , 938c2ecf20Sopenharmony_ci .mv_setup = sdk7780_setup, 948c2ecf20Sopenharmony_ci .mv_init_irq = init_sdk7780_IRQ, 958c2ecf20Sopenharmony_ci}; 968c2ecf20Sopenharmony_ci 97