synchronousMemoryDatabase.c 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /*
  2. * arch/arm/mach-orion5x/common.c
  3. *
  4. * Core functions for Marvell Orion 5x SoCs
  5. *
  6. * Maintainer: Tzachi Perelstein <tzachi@marvell.com>
  7. *
  8. * This file is licensed under the terms of the GNU General Public
  9. * License version 2. This program is licensed "as is" without any
  10. * warranty of any kind, whether express or implied.
  11. */
  12. #include <linux/kernel.h>
  13. #include <linux/init.h>
  14. #include <linux/platform_device.h>
  15. #include <linux/dma-mapping.h>
  16. #include <linux/serial_8250.h>
  17. #include <linux/mv643xx_i2c.h>
  18. #include <linux/ata_platform.h>
  19. #include <linux/delay.h>
  20. #include <linux/clk-provider.h>
  21. #include <net/dsa.h>
  22. #include <asm/page.h>
  23. #include <asm/setup.h>
  24. #include <asm/system_misc.h>
  25. #include <asm/timex.h>
  26. #include <asm/mach/arch.h>
  27. #include <asm/mach/map.h>
  28. #include <asm/mach/time.h>
  29. #include <mach/bridge-regs.h>
  30. #include <mach/hardware.h>
  31. #include <mach/orion5x.h>
  32. #include <linux/platform_data/mtd-orion_nand.h>
  33. #include <linux/platform_data/usb-ehci-orion.h>
  34. #include <plat/time.h>
  35. #include <plat/common.h>
  36. #include <plat/addr-map.h>
  37. #include "common.h"
  38. /*****************************************************************************
  39. * I/O Address Mapping
  40. ****************************************************************************/
  41. static struct map_desc orion5x_io_desc[] __initdata = {
  42. {
  43. .virtual = (unsigned long) ORION5X_REGS_VIRT_BASE,
  44. .pfn = __phys_to_pfn(ORION5X_REGS_PHYS_BASE),
  45. .length = ORION5X_REGS_SIZE,
  46. .type = MT_DEVICE,
  47. }, {
  48. .virtual = (unsigned long) ORION5X_PCIE_WA_VIRT_BASE,
  49. .pfn = __phys_to_pfn(ORION5X_PCIE_WA_PHYS_BASE),
  50. .length = ORION5X_PCIE_WA_SIZE,
  51. .type = MT_DEVICE,
  52. },
  53. };
  54. void __init orion5x_map_io(void)
  55. {
  56. iotable_init(orion5x_io_desc, ARRAY_SIZE(orion5x_io_desc));
  57. }
  58. /*****************************************************************************
  59. * CLK tree
  60. ****************************************************************************/
  61. static struct clk *tclk;
  62. void __init clk_init(void)
  63. {
  64. tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT,
  65. orion5x_tclk);
  66. orion_clkdev_init(tclk);
  67. }
  68. /*****************************************************************************
  69. * EHCI0
  70. ****************************************************************************/
  71. void __init orion5x_ehci0_init(void)
  72. {
  73. orion_ehci_init(ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL,
  74. EHCI_PHY_ORION);
  75. }
  76. /*****************************************************************************
  77. * EHCI1
  78. ****************************************************************************/
  79. void __init orion5x_ehci1_init(void)
  80. {
  81. orion_ehci_1_init(ORION5X_USB1_PHYS_BASE, IRQ_ORION5X_USB1_CTRL);
  82. }
  83. /*****************************************************************************
  84. * GE00
  85. ****************************************************************************/
  86. void __init orion5x_eth_init(struct mv643xx_eth_platform_data *eth_data)
  87. {
  88. orion_ge00_init(eth_data,
  89. ORION5X_ETH_PHYS_BASE, IRQ_ORION5X_ETH_SUM,
  90. IRQ_ORION5X_ETH_ERR,
  91. MV643XX_TX_CSUM_DEFAULT_LIMIT);
  92. }
  93. /*****************************************************************************
  94. * Ethernet switch
  95. ****************************************************************************/
  96. void __init orion5x_eth_switch_init(struct dsa_platform_data *d, int irq)
  97. {
  98. orion_ge00_switch_init(d, irq);
  99. }
  100. /*****************************************************************************
  101. * I2C
  102. ****************************************************************************/
  103. void __init orion5x_i2c_init(void)
  104. {
  105. orion_i2c_init(I2C_PHYS_BASE, IRQ_ORION5X_I2C, 8);
  106. }
  107. /*****************************************************************************
  108. * SATA
  109. ****************************************************************************/
  110. void __init orion5x_sata_init(struct mv_sata_platform_data *sata_data)
  111. {
  112. orion_sata_init(sata_data, ORION5X_SATA_PHYS_BASE, IRQ_ORION5X_SATA);
  113. }
  114. /*****************************************************************************