board-bockw-reference.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. * You should have received a copy of the GNU General Public License
  17. * along with this program; if not, write to the Free Software
  18. * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  19. */
  20. #include <linux/of_platform.h>
  21. #include <linux/pinctrl/machine.h>
  22. #include <mach/common.h>
  23. #include <mach/r8a7778.h>
  24. #include <asm/mach/arch.h>
  25. /*
  26. * see board-bock.c for checking detail of dip-switch
  27. */
  28. static const struct pinctrl_map bockw_pinctrl_map[] = {
  29. /* SCIF0 */
  30. PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
  31. "scif0_data_a", "scif0"),
  32. PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
  33. "scif0_ctrl", "scif0"),
  34. };
  35. #define FPGA 0x18200000
  36. #define IRQ0MR 0x30
  37. #define COMCTLR 0x101c
  38. static void __init bockw_init(void)
  39. {
  40. static void __iomem *fpga;
  41. r8a7778_clock_init();
  42. r8a7778_init_irq_extpin_dt(1);
  43. pinctrl_register_mappings(bockw_pinctrl_map,
  44. ARRAY_SIZE(bockw_pinctrl_map));
  45. r8a7778_pinmux_init();
  46. r8a7778_add_dt_devices();
  47. fpga = ioremap_nocache(FPGA, SZ_1M);
  48. if (fpga) {
  49. /*
  50. * CAUTION
  51. *
  52. * IRQ0/1 is cascaded interrupt from FPGA.
  53. * it should be cared in the future
  54. * Now, it is assuming IRQ0 was used only from SMSC.
  55. */
  56. u16 val = ioread16(fpga + IRQ0MR);
  57. val &= ~(1 << 4); /* enable SMSC911x */
  58. iowrite16(val, fpga + IRQ0MR);
  59. }
  60. of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
  61. }
  62. static const char *bockw_boards_compat_dt[] __initdata = {
  63. "renesas,bockw-reference",
  64. NULL,
  65. };
  66. DT_MACHINE_START(BOCKW_DT, "bockw")
  67. .init_early = r8a7778_init_delay,
  68. .init_irq = r8a7778_init_irq_dt,
  69. .init_machine = bockw_init,
  70. .dt_compat = bockw_boards_compat_dt,
  71. MACHINE_END