/* Add spear3xx family function declarations here */
void __init spear_setup_timer(void);
+void __init spear3xx_clk_init(void);
void __init spear3xx_map_io(void);
- void __init spear3xx_init_irq(void);
- void __init spear3xx_init(void);
+ void __init spear3xx_dt_init_irq(void);
void spear_restart(char, const char *);
- /* pad mux declarations */
- #define PMX_FIRDA_MASK (1 << 14)
- #define PMX_I2C_MASK (1 << 13)
- #define PMX_SSP_CS_MASK (1 << 12)
- #define PMX_SSP_MASK (1 << 11)
- #define PMX_MII_MASK (1 << 10)
- #define PMX_GPIO_PIN0_MASK (1 << 9)
- #define PMX_GPIO_PIN1_MASK (1 << 8)
- #define PMX_GPIO_PIN2_MASK (1 << 7)
- #define PMX_GPIO_PIN3_MASK (1 << 6)
- #define PMX_GPIO_PIN4_MASK (1 << 5)
- #define PMX_GPIO_PIN5_MASK (1 << 4)
- #define PMX_UART0_MODEM_MASK (1 << 3)
- #define PMX_UART0_MASK (1 << 2)
- #define PMX_TIMER_3_4_MASK (1 << 1)
- #define PMX_TIMER_1_2_MASK (1 << 0)
-
- /* pad mux devices */
- extern struct pmx_dev spear3xx_pmx_firda;
- extern struct pmx_dev spear3xx_pmx_i2c;
- extern struct pmx_dev spear3xx_pmx_ssp_cs;
- extern struct pmx_dev spear3xx_pmx_ssp;
- extern struct pmx_dev spear3xx_pmx_mii;
- extern struct pmx_dev spear3xx_pmx_gpio_pin0;
- extern struct pmx_dev spear3xx_pmx_gpio_pin1;
- extern struct pmx_dev spear3xx_pmx_gpio_pin2;
- extern struct pmx_dev spear3xx_pmx_gpio_pin3;
- extern struct pmx_dev spear3xx_pmx_gpio_pin4;
- extern struct pmx_dev spear3xx_pmx_gpio_pin5;
- extern struct pmx_dev spear3xx_pmx_uart0_modem;
- extern struct pmx_dev spear3xx_pmx_uart0;
- extern struct pmx_dev spear3xx_pmx_timer_3_4;
- extern struct pmx_dev spear3xx_pmx_timer_1_2;
-
- #if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320)
- /* padmux plgpio devices */
- extern struct pmx_dev spear3xx_pmx_plgpio_0_1;
- extern struct pmx_dev spear3xx_pmx_plgpio_2_3;
- extern struct pmx_dev spear3xx_pmx_plgpio_4_5;
- extern struct pmx_dev spear3xx_pmx_plgpio_6_9;
- extern struct pmx_dev spear3xx_pmx_plgpio_10_27;
- extern struct pmx_dev spear3xx_pmx_plgpio_28;
- extern struct pmx_dev spear3xx_pmx_plgpio_29;
- extern struct pmx_dev spear3xx_pmx_plgpio_30;
- extern struct pmx_dev spear3xx_pmx_plgpio_31;
- extern struct pmx_dev spear3xx_pmx_plgpio_32;
- extern struct pmx_dev spear3xx_pmx_plgpio_33;
- extern struct pmx_dev spear3xx_pmx_plgpio_34_36;
- extern struct pmx_dev spear3xx_pmx_plgpio_37_42;
- extern struct pmx_dev spear3xx_pmx_plgpio_43_44_47_48;
- extern struct pmx_dev spear3xx_pmx_plgpio_45_46_49_50;
- #endif
-
--/* spear300 declarations */
--#ifdef CONFIG_MACH_SPEAR300
- /* Add spear300 machine device structure declarations here */
- extern struct amba_device spear300_gpio1_device;
-
- /* pad mux modes */
- extern struct pmx_mode spear300_nand_mode;
- extern struct pmx_mode spear300_nor_mode;
- extern struct pmx_mode spear300_photo_frame_mode;
- extern struct pmx_mode spear300_lend_ip_phone_mode;
- extern struct pmx_mode spear300_hend_ip_phone_mode;
- extern struct pmx_mode spear300_lend_wifi_phone_mode;
- extern struct pmx_mode spear300_hend_wifi_phone_mode;
- extern struct pmx_mode spear300_ata_pabx_wi2s_mode;
- extern struct pmx_mode spear300_ata_pabx_i2s_mode;
- extern struct pmx_mode spear300_caml_lcdw_mode;
- extern struct pmx_mode spear300_camu_lcd_mode;
- extern struct pmx_mode spear300_camu_wlcd_mode;
- extern struct pmx_mode spear300_caml_lcd_mode;
-
- /* pad mux devices */
- extern struct pmx_dev spear300_pmx_fsmc_2_chips;
- extern struct pmx_dev spear300_pmx_fsmc_4_chips;
- extern struct pmx_dev spear300_pmx_keyboard;
- extern struct pmx_dev spear300_pmx_clcd;
- extern struct pmx_dev spear300_pmx_telecom_gpio;
- extern struct pmx_dev spear300_pmx_telecom_tdm;
- extern struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk;
- extern struct pmx_dev spear300_pmx_telecom_camera;
- extern struct pmx_dev spear300_pmx_telecom_dac;
- extern struct pmx_dev spear300_pmx_telecom_i2s;
- extern struct pmx_dev spear300_pmx_telecom_boot_pins;
- extern struct pmx_dev spear300_pmx_telecom_sdhci_4bit;
- extern struct pmx_dev spear300_pmx_telecom_sdhci_8bit;
- extern struct pmx_dev spear300_pmx_gpio1;
-
- /* Add spear300 machine function declarations here */
- void __init spear300_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,
- u8 pmx_dev_count);
-void __init spear300_clk_init(void);
--
--#endif /* CONFIG_MACH_SPEAR300 */
--
--/* spear310 declarations */
--#ifdef CONFIG_MACH_SPEAR310
- /* Add spear310 machine device structure declarations here */
-
- /* pad mux devices */
- extern struct pmx_dev spear310_pmx_emi_cs_0_1_4_5;
- extern struct pmx_dev spear310_pmx_emi_cs_2_3;
- extern struct pmx_dev spear310_pmx_uart1;
- extern struct pmx_dev spear310_pmx_uart2;
- extern struct pmx_dev spear310_pmx_uart3_4_5;
- extern struct pmx_dev spear310_pmx_fsmc;
- extern struct pmx_dev spear310_pmx_rs485_0_1;
- extern struct pmx_dev spear310_pmx_tdm0;
-void __init spear310_clk_init(void);
--
- /* Add spear310 machine function declarations here */
- void __init spear310_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,
- u8 pmx_dev_count);
--#endif /* CONFIG_MACH_SPEAR310 */
--
--/* spear320 declarations */
--#ifdef CONFIG_MACH_SPEAR320
- /* Add spear320 machine device structure declarations here */
-
- /* pad mux modes */
- extern struct pmx_mode spear320_auto_net_smii_mode;
- extern struct pmx_mode spear320_auto_net_mii_mode;
- extern struct pmx_mode spear320_auto_exp_mode;
- extern struct pmx_mode spear320_small_printers_mode;
-
- /* pad mux devices */
- extern struct pmx_dev spear320_pmx_clcd;
- extern struct pmx_dev spear320_pmx_emi;
- extern struct pmx_dev spear320_pmx_fsmc;
- extern struct pmx_dev spear320_pmx_spp;
- extern struct pmx_dev spear320_pmx_sdhci;
- extern struct pmx_dev spear320_pmx_i2s;
- extern struct pmx_dev spear320_pmx_uart1;
- extern struct pmx_dev spear320_pmx_uart1_modem;
- extern struct pmx_dev spear320_pmx_uart2;
- extern struct pmx_dev spear320_pmx_touchscreen;
- extern struct pmx_dev spear320_pmx_can;
- extern struct pmx_dev spear320_pmx_sdhci_led;
- extern struct pmx_dev spear320_pmx_pwm0;
- extern struct pmx_dev spear320_pmx_pwm1;
- extern struct pmx_dev spear320_pmx_pwm2;
- extern struct pmx_dev spear320_pmx_pwm3;
- extern struct pmx_dev spear320_pmx_ssp1;
- extern struct pmx_dev spear320_pmx_ssp2;
- extern struct pmx_dev spear320_pmx_mii1;
- extern struct pmx_dev spear320_pmx_smii0;
- extern struct pmx_dev spear320_pmx_smii1;
- extern struct pmx_dev spear320_pmx_i2c1;
-
- /* Add spear320 machine function declarations here */
- void __init spear320_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,
- u8 pmx_dev_count);
-void __init spear320_clk_init(void);
--
--#endif /* CONFIG_MACH_SPEAR320 */
--
#endif /* __MACH_GENERIC_H */
#include <plat/shirq.h>
#include <mach/generic.h>
#include <mach/hardware.h>
+#include <mach/spear.h>
- /* pad multiplexing support */
- /* muxing registers */
- #define PAD_MUX_CONFIG_REG 0x0C
- #define MODE_CONFIG_REG 0x10
-
- /* modes */
- #define AUTO_NET_SMII_MODE (1 << 0)
- #define AUTO_NET_MII_MODE (1 << 1)
- #define AUTO_EXP_MODE (1 << 2)
- #define SMALL_PRINTERS_MODE (1 << 3)
- #define ALL_MODES 0xF
-
- struct pmx_mode spear320_auto_net_smii_mode = {
- .id = AUTO_NET_SMII_MODE,
- .name = "Automation Networking SMII Mode",
- .mask = 0x00,
- };
-
- struct pmx_mode spear320_auto_net_mii_mode = {
- .id = AUTO_NET_MII_MODE,
- .name = "Automation Networking MII Mode",
- .mask = 0x01,
- };
-
- struct pmx_mode spear320_auto_exp_mode = {
- .id = AUTO_EXP_MODE,
- .name = "Automation Expanded Mode",
- .mask = 0x02,
- };
-
- struct pmx_mode spear320_small_printers_mode = {
- .id = SMALL_PRINTERS_MODE,
- .name = "Small Printers Mode",
- .mask = 0x03,
- };
-
- /* devices */
- static struct pmx_dev_mode pmx_clcd_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE,
- .mask = 0x0,
- },
- };
-
- struct pmx_dev spear320_pmx_clcd = {
- .name = "clcd",
- .modes = pmx_clcd_modes,
- .mode_count = ARRAY_SIZE(pmx_clcd_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_emi_modes[] = {
- {
- .ids = AUTO_EXP_MODE,
- .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_emi = {
- .name = "emi",
- .modes = pmx_emi_modes,
- .mode_count = ARRAY_SIZE(pmx_emi_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_fsmc_modes[] = {
- {
- .ids = ALL_MODES,
- .mask = 0x0,
- },
- };
-
- struct pmx_dev spear320_pmx_fsmc = {
- .name = "fsmc",
- .modes = pmx_fsmc_modes,
- .mode_count = ARRAY_SIZE(pmx_fsmc_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_spp_modes[] = {
- {
- .ids = SMALL_PRINTERS_MODE,
- .mask = 0x0,
- },
- };
-
- struct pmx_dev spear320_pmx_spp = {
- .name = "spp",
- .modes = pmx_spp_modes,
- .mode_count = ARRAY_SIZE(pmx_spp_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_sdhci_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE |
- SMALL_PRINTERS_MODE,
- .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_sdhci = {
- .name = "sdhci",
- .modes = pmx_sdhci_modes,
- .mode_count = ARRAY_SIZE(pmx_sdhci_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_i2s_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
- .mask = PMX_UART0_MODEM_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_i2s = {
- .name = "i2s",
- .modes = pmx_i2s_modes,
- .mode_count = ARRAY_SIZE(pmx_i2s_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_uart1_modes[] = {
- {
- .ids = ALL_MODES,
- .mask = PMX_GPIO_PIN0_MASK | PMX_GPIO_PIN1_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_uart1 = {
- .name = "uart1",
- .modes = pmx_uart1_modes,
- .mode_count = ARRAY_SIZE(pmx_uart1_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_uart1_modem_modes[] = {
- {
- .ids = AUTO_EXP_MODE,
- .mask = PMX_TIMER_1_2_MASK | PMX_TIMER_3_4_MASK |
- PMX_SSP_CS_MASK,
- }, {
- .ids = SMALL_PRINTERS_MODE,
- .mask = PMX_GPIO_PIN3_MASK | PMX_GPIO_PIN4_MASK |
- PMX_GPIO_PIN5_MASK | PMX_SSP_CS_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_uart1_modem = {
- .name = "uart1_modem",
- .modes = pmx_uart1_modem_modes,
- .mode_count = ARRAY_SIZE(pmx_uart1_modem_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_uart2_modes[] = {
- {
- .ids = ALL_MODES,
- .mask = PMX_FIRDA_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_uart2 = {
- .name = "uart2",
- .modes = pmx_uart2_modes,
- .mode_count = ARRAY_SIZE(pmx_uart2_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_touchscreen_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE,
- .mask = PMX_SSP_CS_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_touchscreen = {
- .name = "touchscreen",
- .modes = pmx_touchscreen_modes,
- .mode_count = ARRAY_SIZE(pmx_touchscreen_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_can_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE | AUTO_EXP_MODE,
- .mask = PMX_GPIO_PIN2_MASK | PMX_GPIO_PIN3_MASK |
- PMX_GPIO_PIN4_MASK | PMX_GPIO_PIN5_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_can = {
- .name = "can",
- .modes = pmx_can_modes,
- .mode_count = ARRAY_SIZE(pmx_can_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_sdhci_led_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
- .mask = PMX_SSP_CS_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_sdhci_led = {
- .name = "sdhci_led",
- .modes = pmx_sdhci_led_modes,
- .mode_count = ARRAY_SIZE(pmx_sdhci_led_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_pwm0_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
- .mask = PMX_UART0_MODEM_MASK,
- }, {
- .ids = AUTO_EXP_MODE | SMALL_PRINTERS_MODE,
- .mask = PMX_MII_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_pwm0 = {
- .name = "pwm0",
- .modes = pmx_pwm0_modes,
- .mode_count = ARRAY_SIZE(pmx_pwm0_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_pwm1_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
- .mask = PMX_UART0_MODEM_MASK,
- }, {
- .ids = AUTO_EXP_MODE | SMALL_PRINTERS_MODE,
- .mask = PMX_MII_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_pwm1 = {
- .name = "pwm1",
- .modes = pmx_pwm1_modes,
- .mode_count = ARRAY_SIZE(pmx_pwm1_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_pwm2_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE,
- .mask = PMX_SSP_CS_MASK,
- }, {
- .ids = AUTO_EXP_MODE | SMALL_PRINTERS_MODE,
- .mask = PMX_MII_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_pwm2 = {
- .name = "pwm2",
- .modes = pmx_pwm2_modes,
- .mode_count = ARRAY_SIZE(pmx_pwm2_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_pwm3_modes[] = {
- {
- .ids = AUTO_EXP_MODE | SMALL_PRINTERS_MODE | AUTO_NET_SMII_MODE,
- .mask = PMX_MII_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_pwm3 = {
- .name = "pwm3",
- .modes = pmx_pwm3_modes,
- .mode_count = ARRAY_SIZE(pmx_pwm3_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_ssp1_modes[] = {
- {
- .ids = SMALL_PRINTERS_MODE | AUTO_NET_SMII_MODE,
- .mask = PMX_MII_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_ssp1 = {
- .name = "ssp1",
- .modes = pmx_ssp1_modes,
- .mode_count = ARRAY_SIZE(pmx_ssp1_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_ssp2_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE,
- .mask = PMX_MII_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_ssp2 = {
- .name = "ssp2",
- .modes = pmx_ssp2_modes,
- .mode_count = ARRAY_SIZE(pmx_ssp2_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_mii1_modes[] = {
- {
- .ids = AUTO_NET_MII_MODE,
- .mask = 0x0,
- },
- };
-
- struct pmx_dev spear320_pmx_mii1 = {
- .name = "mii1",
- .modes = pmx_mii1_modes,
- .mode_count = ARRAY_SIZE(pmx_mii1_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_smii0_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | AUTO_EXP_MODE | SMALL_PRINTERS_MODE,
- .mask = PMX_MII_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_smii0 = {
- .name = "smii0",
- .modes = pmx_smii0_modes,
- .mode_count = ARRAY_SIZE(pmx_smii0_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_smii1_modes[] = {
- {
- .ids = AUTO_NET_SMII_MODE | SMALL_PRINTERS_MODE,
- .mask = PMX_MII_MASK,
- },
- };
-
- struct pmx_dev spear320_pmx_smii1 = {
- .name = "smii1",
- .modes = pmx_smii1_modes,
- .mode_count = ARRAY_SIZE(pmx_smii1_modes),
- .enb_on_reset = 1,
- };
-
- static struct pmx_dev_mode pmx_i2c1_modes[] = {
- {
- .ids = AUTO_EXP_MODE,
- .mask = 0x0,
- },
- };
-
- struct pmx_dev spear320_pmx_i2c1 = {
- .name = "i2c1",
- .modes = pmx_i2c1_modes,
- .mode_count = ARRAY_SIZE(pmx_i2c1_modes),
- .enb_on_reset = 1,
- };
-
- /* pmx driver structure */
- static struct pmx_driver pmx_driver = {
- .mode_reg = {.offset = MODE_CONFIG_REG, .mask = 0x00000007},
- .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff},
- };
-
/* spear3xx shared irq */
static struct shirq_dev_config shirq_ras1_config[] = {
{