/* * Renesas Europe EDOSK7760 Board Support * * Copyright (C) 2008 SPES Societa' Progettazione Elettronica e Software Ltd. * Author: Luca Santini * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include #include #include #include #include /* Bus state controller registers for CS4 area */ #define BSC_CS4BCR 0xA4FD0010 #define BSC_CS4WCR 0xA4FD0030 #define SMC_IOBASE 0xA2000000 #define SMC_IO_OFFSET 0x300 #define SMC_IOADDR (SMC_IOBASE + SMC_IO_OFFSET) #define ETHERNET_IRQ 5 /* i2c initialization functions */ static struct sh7760_i2c_platdata i2c_pd = { .speed_khz = 400, }; static struct resource sh7760_i2c1_res[] = { { .start = SH7760_I2C1_MMIO, .end = SH7760_I2C1_MMIOEND, .flags = IORESOURCE_MEM, },{ .start = SH7760_I2C1_IRQ, .end = SH7760_I2C1_IRQ, .flags = IORESOURCE_IRQ, }, }; static struct platform_device sh7760_i2c1_dev = { .dev = { .platform_data = &i2c_pd, }, .name = SH7760_I2C_DEVNAME, .id = 1, .resource = sh7760_i2c1_res, .num_resources = ARRAY_SIZE(sh7760_i2c1_res), }; static struct resource sh7760_i2c0_res[] = { { .start = SH7760_I2C0_MMIO, .end = SH7760_I2C0_MMIOEND, .flags = IORESOURCE_MEM, }, { .start = SH7760_I2C0_IRQ, .end = SH7760_I2C0_IRQ, .flags = IORESOURCE_IRQ, }, }; static struct platform_device sh7760_i2c0_dev = { .dev = { .platform_data = &i2c_pd, }, .name = SH7760_I2C_DEVNAME, .id = 0, .resource = sh7760_i2c0_res, .num_resources = ARRAY_SIZE(sh7760_i2c0_res), }; /* eth initialization functions */ static struct smc91x_platdata smc91x_info = { .flags = SMC91X_USE_16BIT | SMC91X_IO_SHIFT_1 | IORESOURCE_IRQ_LOWLEVEL, }; static struct resource smc91x_res[] = { [0] = { .start = SMC_IOADDR, .end = SMC_IOADDR + 0x1f, .flags = IORESOURCE_MEM, }, [1] = { .start = ETHERNET_IRQ, .end = ETHERNET_IRQ, .flags = IORESOURCE_IRQ , } }; static struct platform_device smc91x_dev = { .name = "smc91x", .id = -1, .num_resources = ARRAY_SIZE(smc91x_res), .resource = smc91x_res, .dev = { .platform_data = &smc91x_info, }, }; /* platform init code */ static struct platform_device *edosk7760_devices[] __initdata = { &sh7760_i2c0_dev, &sh7760_i2c1_dev, &smc91x_dev, }; static int __init init_edosk7760_devices(void) { plat_irq_setup_pins(IRQ_MODE_IRQ); return platform_add_devices(edosk7760_devices, ARRAY_SIZE(edosk7760_devices)); } __initcall(init_edosk7760_devices); /* * The Machine Vector */ struct sh_machine_vector mv_edosk7760 __initmv = { .mv_name = "EDOSK7760", .mv_nr_irqs = 128, };