generic.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. /*
  2. * arch/arm/mach-spear3xx/generic.h
  3. *
  4. * SPEAr3XX machine family generic header file
  5. *
  6. * Copyright (C) 2009 ST Microelectronics
  7. * Viresh Kumar<viresh.kumar@st.com>
  8. *
  9. * This file is licensed under the terms of the GNU General Public
  10. * License version 2. This program is licensed "as is" without any
  11. * warranty of any kind, whether express or implied.
  12. */
  13. #ifndef __MACH_GENERIC_H
  14. #define __MACH_GENERIC_H
  15. #include <linux/amba/pl08x.h>
  16. #include <linux/init.h>
  17. #include <linux/platform_device.h>
  18. #include <linux/amba/bus.h>
  19. #include <asm/mach/time.h>
  20. #include <asm/mach/map.h>
  21. #include <plat/padmux.h>
  22. /* Add spear3xx family device structure declarations here */
  23. extern struct sys_timer spear3xx_timer;
  24. extern struct pl022_ssp_controller pl022_plat_data;
  25. extern struct pl08x_platform_data pl080_plat_data;
  26. /* Add spear3xx family function declarations here */
  27. void __init spear_setup_timer(resource_size_t base, int irq);
  28. void __init spear3xx_map_io(void);
  29. void __init spear3xx_dt_init_irq(void);
  30. void spear_restart(char, const char *);
  31. /* pad mux declarations */
  32. #define PMX_FIRDA_MASK (1 << 14)
  33. #define PMX_I2C_MASK (1 << 13)
  34. #define PMX_SSP_CS_MASK (1 << 12)
  35. #define PMX_SSP_MASK (1 << 11)
  36. #define PMX_MII_MASK (1 << 10)
  37. #define PMX_GPIO_PIN0_MASK (1 << 9)
  38. #define PMX_GPIO_PIN1_MASK (1 << 8)
  39. #define PMX_GPIO_PIN2_MASK (1 << 7)
  40. #define PMX_GPIO_PIN3_MASK (1 << 6)
  41. #define PMX_GPIO_PIN4_MASK (1 << 5)
  42. #define PMX_GPIO_PIN5_MASK (1 << 4)
  43. #define PMX_UART0_MODEM_MASK (1 << 3)
  44. #define PMX_UART0_MASK (1 << 2)
  45. #define PMX_TIMER_3_4_MASK (1 << 1)
  46. #define PMX_TIMER_1_2_MASK (1 << 0)
  47. /* pad mux devices */
  48. extern struct pmx_dev spear3xx_pmx_firda;
  49. extern struct pmx_dev spear3xx_pmx_i2c;
  50. extern struct pmx_dev spear3xx_pmx_ssp_cs;
  51. extern struct pmx_dev spear3xx_pmx_ssp;
  52. extern struct pmx_dev spear3xx_pmx_mii;
  53. extern struct pmx_dev spear3xx_pmx_gpio_pin0;
  54. extern struct pmx_dev spear3xx_pmx_gpio_pin1;
  55. extern struct pmx_dev spear3xx_pmx_gpio_pin2;
  56. extern struct pmx_dev spear3xx_pmx_gpio_pin3;
  57. extern struct pmx_dev spear3xx_pmx_gpio_pin4;
  58. extern struct pmx_dev spear3xx_pmx_gpio_pin5;
  59. extern struct pmx_dev spear3xx_pmx_uart0_modem;
  60. extern struct pmx_dev spear3xx_pmx_uart0;
  61. extern struct pmx_dev spear3xx_pmx_timer_3_4;
  62. extern struct pmx_dev spear3xx_pmx_timer_1_2;
  63. #if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320)
  64. /* padmux plgpio devices */
  65. extern struct pmx_dev spear3xx_pmx_plgpio_0_1;
  66. extern struct pmx_dev spear3xx_pmx_plgpio_2_3;
  67. extern struct pmx_dev spear3xx_pmx_plgpio_4_5;
  68. extern struct pmx_dev spear3xx_pmx_plgpio_6_9;
  69. extern struct pmx_dev spear3xx_pmx_plgpio_10_27;
  70. extern struct pmx_dev spear3xx_pmx_plgpio_28;
  71. extern struct pmx_dev spear3xx_pmx_plgpio_29;
  72. extern struct pmx_dev spear3xx_pmx_plgpio_30;
  73. extern struct pmx_dev spear3xx_pmx_plgpio_31;
  74. extern struct pmx_dev spear3xx_pmx_plgpio_32;
  75. extern struct pmx_dev spear3xx_pmx_plgpio_33;
  76. extern struct pmx_dev spear3xx_pmx_plgpio_34_36;
  77. extern struct pmx_dev spear3xx_pmx_plgpio_37_42;
  78. extern struct pmx_dev spear3xx_pmx_plgpio_43_44_47_48;
  79. extern struct pmx_dev spear3xx_pmx_plgpio_45_46_49_50;
  80. #endif
  81. /* spear300 declarations */
  82. #ifdef CONFIG_MACH_SPEAR300
  83. /* pad mux modes */
  84. extern struct pmx_mode spear300_nand_mode;
  85. extern struct pmx_mode spear300_nor_mode;
  86. extern struct pmx_mode spear300_photo_frame_mode;
  87. extern struct pmx_mode spear300_lend_ip_phone_mode;
  88. extern struct pmx_mode spear300_hend_ip_phone_mode;
  89. extern struct pmx_mode spear300_lend_wifi_phone_mode;
  90. extern struct pmx_mode spear300_hend_wifi_phone_mode;
  91. extern struct pmx_mode spear300_ata_pabx_wi2s_mode;
  92. extern struct pmx_mode spear300_ata_pabx_i2s_mode;
  93. extern struct pmx_mode spear300_caml_lcdw_mode;
  94. extern struct pmx_mode spear300_camu_lcd_mode;
  95. extern struct pmx_mode spear300_camu_wlcd_mode;
  96. extern struct pmx_mode spear300_caml_lcd_mode;
  97. /* pad mux devices */
  98. extern struct pmx_dev spear300_pmx_fsmc_2_chips;
  99. extern struct pmx_dev spear300_pmx_fsmc_4_chips;
  100. extern struct pmx_dev spear300_pmx_keyboard;
  101. extern struct pmx_dev spear300_pmx_clcd;
  102. extern struct pmx_dev spear300_pmx_telecom_gpio;
  103. extern struct pmx_dev spear300_pmx_telecom_tdm;
  104. extern struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk;
  105. extern struct pmx_dev spear300_pmx_telecom_camera;
  106. extern struct pmx_dev spear300_pmx_telecom_dac;
  107. extern struct pmx_dev spear300_pmx_telecom_i2s;
  108. extern struct pmx_dev spear300_pmx_telecom_boot_pins;
  109. extern struct pmx_dev spear300_pmx_telecom_sdhci_4bit;
  110. extern struct pmx_dev spear300_pmx_telecom_sdhci_8bit;
  111. extern struct pmx_dev spear300_pmx_gpio1;
  112. /* Add spear300 machine declarations here */
  113. void __init spear300_clk_init(void);
  114. #endif /* CONFIG_MACH_SPEAR300 */
  115. /* spear310 declarations */
  116. #ifdef CONFIG_MACH_SPEAR310
  117. /* pad mux devices */
  118. extern struct pmx_dev spear310_pmx_emi_cs_0_1_4_5;
  119. extern struct pmx_dev spear310_pmx_emi_cs_2_3;
  120. extern struct pmx_dev spear310_pmx_uart1;
  121. extern struct pmx_dev spear310_pmx_uart2;
  122. extern struct pmx_dev spear310_pmx_uart3_4_5;
  123. extern struct pmx_dev spear310_pmx_fsmc;
  124. extern struct pmx_dev spear310_pmx_rs485_0_1;
  125. extern struct pmx_dev spear310_pmx_tdm0;
  126. /* Add spear310 machine declarations here */
  127. void __init spear310_clk_init(void);
  128. #endif /* CONFIG_MACH_SPEAR310 */
  129. /* spear320 declarations */
  130. #ifdef CONFIG_MACH_SPEAR320
  131. /* pad mux modes */
  132. extern struct pmx_mode spear320_auto_net_smii_mode;
  133. extern struct pmx_mode spear320_auto_net_mii_mode;
  134. extern struct pmx_mode spear320_auto_exp_mode;
  135. extern struct pmx_mode spear320_small_printers_mode;
  136. /* pad mux devices */
  137. extern struct pmx_dev spear320_pmx_clcd;
  138. extern struct pmx_dev spear320_pmx_emi;
  139. extern struct pmx_dev spear320_pmx_fsmc;
  140. extern struct pmx_dev spear320_pmx_spp;
  141. extern struct pmx_dev spear320_pmx_sdhci;
  142. extern struct pmx_dev spear320_pmx_i2s;
  143. extern struct pmx_dev spear320_pmx_uart1;
  144. extern struct pmx_dev spear320_pmx_uart1_modem;
  145. extern struct pmx_dev spear320_pmx_uart2;
  146. extern struct pmx_dev spear320_pmx_touchscreen;
  147. extern struct pmx_dev spear320_pmx_can;
  148. extern struct pmx_dev spear320_pmx_sdhci_led;
  149. extern struct pmx_dev spear320_pmx_pwm0;
  150. extern struct pmx_dev spear320_pmx_pwm1;
  151. extern struct pmx_dev spear320_pmx_pwm2;
  152. extern struct pmx_dev spear320_pmx_pwm3;
  153. extern struct pmx_dev spear320_pmx_ssp1;
  154. extern struct pmx_dev spear320_pmx_ssp2;
  155. extern struct pmx_dev spear320_pmx_mii1;
  156. extern struct pmx_dev spear320_pmx_smii0;
  157. extern struct pmx_dev spear320_pmx_smii1;
  158. extern struct pmx_dev spear320_pmx_i2c1;
  159. /* Add spear320 machine declarations here */
  160. void __init spear320_clk_init(void);
  161. #endif /* CONFIG_MACH_SPEAR320 */
  162. #endif /* __MACH_GENERIC_H */