1/* 2 * Bock-W board support 3 * 4 * Copyright (C) 2013 Renesas Solutions Corp. 5 * Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; version 2 of the License. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 */ 16 17#include <linux/of_platform.h> 18 19#include <asm/mach/arch.h> 20 21#include "common.h" 22#include "r8a7778.h" 23 24/* 25 * see board-bock.c for checking detail of dip-switch 26 */ 27 28#define FPGA 0x18200000 29#define IRQ0MR 0x30 30#define COMCTLR 0x101c 31 32#define PFC 0xfffc0000 33#define PUPR4 0x110 34static void __init bockw_init(void) 35{ 36 void __iomem *fpga; 37 void __iomem *pfc; 38 39#ifndef CONFIG_COMMON_CLK 40 r8a7778_clock_init(); 41#endif 42 r8a7778_init_irq_extpin_dt(1); 43 r8a7778_add_dt_devices(); 44 45 fpga = ioremap_nocache(FPGA, SZ_1M); 46 if (fpga) { 47 /* 48 * CAUTION 49 * 50 * IRQ0/1 is cascaded interrupt from FPGA. 51 * it should be cared in the future 52 * Now, it is assuming IRQ0 was used only from SMSC. 53 */ 54 u16 val = ioread16(fpga + IRQ0MR); 55 val &= ~(1 << 4); /* enable SMSC911x */ 56 iowrite16(val, fpga + IRQ0MR); 57 58 iounmap(fpga); 59 } 60 61 pfc = ioremap_nocache(PFC, 0x200); 62 if (pfc) { 63 /* 64 * FIXME 65 * 66 * SDHI CD/WP pin needs pull-up 67 */ 68 iowrite32(ioread32(pfc + PUPR4) | (3 << 26), pfc + PUPR4); 69 iounmap(pfc); 70 } 71 72 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 73} 74 75static const char *bockw_boards_compat_dt[] __initdata = { 76 "renesas,bockw-reference", 77 NULL, 78}; 79 80DT_MACHINE_START(BOCKW_DT, "bockw") 81 .init_early = shmobile_init_delay, 82 .init_irq = r8a7778_init_irq_dt, 83 .init_machine = bockw_init, 84 .init_late = shmobile_init_late, 85 .dt_compat = bockw_boards_compat_dt, 86MACHINE_END 87