]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - arch/arm/mach-spear3xx/include/mach/generic.h
ARM: SPEAr3xx: Add device-tree support to SPEAr3xx architecture
[mirror_ubuntu-jammy-kernel.git] / arch / arm / mach-spear3xx / include / mach / generic.h
CommitLineData
a7e9c452
VK
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
14#ifndef __MACH_GENERIC_H
15#define __MACH_GENERIC_H
16
a7e9c452
VK
17#include <linux/init.h>
18#include <linux/platform_device.h>
19#include <linux/amba/bus.h>
410782be
VK
20#include <asm/mach/time.h>
21#include <asm/mach/map.h>
70f4c0bf 22#include <plat/padmux.h>
a7e9c452 23
70f4c0bf 24/* spear3xx declarations */
a7e9c452
VK
25/*
26 * Each GPT has 2 timer channels
27 * Following GPT channels will be used as clock source and clockevent
28 */
29#define SPEAR_GPT0_BASE SPEAR3XX_ML1_TMR_BASE
61e72bca
RM
30#define SPEAR_GPT0_CHAN0_IRQ SPEAR3XX_IRQ_CPU_GPT1_1
31#define SPEAR_GPT0_CHAN1_IRQ SPEAR3XX_IRQ_CPU_GPT1_2
a7e9c452
VK
32
33/* Add spear3xx family device structure declarations here */
5c881d9a 34extern struct sys_timer spear3xx_timer;
c5fa4fdc 35extern struct pl022_ssp_controller pl022_plat_data;
a7e9c452
VK
36
37/* Add spear3xx family function declarations here */
5c881d9a 38void __init spear_setup_timer(void);
a7e9c452 39void __init spear3xx_map_io(void);
c5fa4fdc 40void __init spear3xx_dt_init_irq(void);
a7e9c452 41
dd1661e2
RK
42void spear_restart(char, const char *);
43
70f4c0bf
VK
44/* pad mux declarations */
45#define PMX_FIRDA_MASK (1 << 14)
46#define PMX_I2C_MASK (1 << 13)
47#define PMX_SSP_CS_MASK (1 << 12)
48#define PMX_SSP_MASK (1 << 11)
49#define PMX_MII_MASK (1 << 10)
50#define PMX_GPIO_PIN0_MASK (1 << 9)
51#define PMX_GPIO_PIN1_MASK (1 << 8)
52#define PMX_GPIO_PIN2_MASK (1 << 7)
53#define PMX_GPIO_PIN3_MASK (1 << 6)
54#define PMX_GPIO_PIN4_MASK (1 << 5)
55#define PMX_GPIO_PIN5_MASK (1 << 4)
56#define PMX_UART0_MODEM_MASK (1 << 3)
57#define PMX_UART0_MASK (1 << 2)
58#define PMX_TIMER_3_4_MASK (1 << 1)
59#define PMX_TIMER_1_2_MASK (1 << 0)
60
61/* pad mux devices */
6618c3ad
RM
62extern struct pmx_dev spear3xx_pmx_firda;
63extern struct pmx_dev spear3xx_pmx_i2c;
64extern struct pmx_dev spear3xx_pmx_ssp_cs;
65extern struct pmx_dev spear3xx_pmx_ssp;
66extern struct pmx_dev spear3xx_pmx_mii;
67extern struct pmx_dev spear3xx_pmx_gpio_pin0;
68extern struct pmx_dev spear3xx_pmx_gpio_pin1;
69extern struct pmx_dev spear3xx_pmx_gpio_pin2;
70extern struct pmx_dev spear3xx_pmx_gpio_pin3;
71extern struct pmx_dev spear3xx_pmx_gpio_pin4;
72extern struct pmx_dev spear3xx_pmx_gpio_pin5;
73extern struct pmx_dev spear3xx_pmx_uart0_modem;
74extern struct pmx_dev spear3xx_pmx_uart0;
75extern struct pmx_dev spear3xx_pmx_timer_3_4;
76extern struct pmx_dev spear3xx_pmx_timer_1_2;
70f4c0bf
VK
77
78#if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320)
79/* padmux plgpio devices */
6618c3ad
RM
80extern struct pmx_dev spear3xx_pmx_plgpio_0_1;
81extern struct pmx_dev spear3xx_pmx_plgpio_2_3;
82extern struct pmx_dev spear3xx_pmx_plgpio_4_5;
83extern struct pmx_dev spear3xx_pmx_plgpio_6_9;
84extern struct pmx_dev spear3xx_pmx_plgpio_10_27;
85extern struct pmx_dev spear3xx_pmx_plgpio_28;
86extern struct pmx_dev spear3xx_pmx_plgpio_29;
87extern struct pmx_dev spear3xx_pmx_plgpio_30;
88extern struct pmx_dev spear3xx_pmx_plgpio_31;
89extern struct pmx_dev spear3xx_pmx_plgpio_32;
90extern struct pmx_dev spear3xx_pmx_plgpio_33;
91extern struct pmx_dev spear3xx_pmx_plgpio_34_36;
92extern struct pmx_dev spear3xx_pmx_plgpio_37_42;
93extern struct pmx_dev spear3xx_pmx_plgpio_43_44_47_48;
94extern struct pmx_dev spear3xx_pmx_plgpio_45_46_49_50;
70f4c0bf
VK
95#endif
96
70f4c0bf 97/* spear300 declarations */
a7e9c452 98#ifdef CONFIG_MACH_SPEAR300
70f4c0bf 99/* pad mux modes */
6618c3ad
RM
100extern struct pmx_mode spear300_nand_mode;
101extern struct pmx_mode spear300_nor_mode;
102extern struct pmx_mode spear300_photo_frame_mode;
103extern struct pmx_mode spear300_lend_ip_phone_mode;
104extern struct pmx_mode spear300_hend_ip_phone_mode;
105extern struct pmx_mode spear300_lend_wifi_phone_mode;
106extern struct pmx_mode spear300_hend_wifi_phone_mode;
107extern struct pmx_mode spear300_ata_pabx_wi2s_mode;
108extern struct pmx_mode spear300_ata_pabx_i2s_mode;
109extern struct pmx_mode spear300_caml_lcdw_mode;
110extern struct pmx_mode spear300_camu_lcd_mode;
111extern struct pmx_mode spear300_camu_wlcd_mode;
112extern struct pmx_mode spear300_caml_lcd_mode;
70f4c0bf
VK
113
114/* pad mux devices */
6618c3ad
RM
115extern struct pmx_dev spear300_pmx_fsmc_2_chips;
116extern struct pmx_dev spear300_pmx_fsmc_4_chips;
117extern struct pmx_dev spear300_pmx_keyboard;
118extern struct pmx_dev spear300_pmx_clcd;
119extern struct pmx_dev spear300_pmx_telecom_gpio;
120extern struct pmx_dev spear300_pmx_telecom_tdm;
121extern struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk;
122extern struct pmx_dev spear300_pmx_telecom_camera;
123extern struct pmx_dev spear300_pmx_telecom_dac;
124extern struct pmx_dev spear300_pmx_telecom_i2s;
125extern struct pmx_dev spear300_pmx_telecom_boot_pins;
126extern struct pmx_dev spear300_pmx_telecom_sdhci_4bit;
127extern struct pmx_dev spear300_pmx_telecom_sdhci_8bit;
128extern struct pmx_dev spear300_pmx_gpio1;
70f4c0bf 129
c5fa4fdc
VK
130/* Add spear300 machine declarations here */
131void __init spear300_clk_init(void);
70f4c0bf 132
a7e9c452
VK
133#endif /* CONFIG_MACH_SPEAR300 */
134
70f4c0bf 135/* spear310 declarations */
a7e9c452 136#ifdef CONFIG_MACH_SPEAR310
70f4c0bf 137/* pad mux devices */
6618c3ad
RM
138extern struct pmx_dev spear310_pmx_emi_cs_0_1_4_5;
139extern struct pmx_dev spear310_pmx_emi_cs_2_3;
140extern struct pmx_dev spear310_pmx_uart1;
141extern struct pmx_dev spear310_pmx_uart2;
142extern struct pmx_dev spear310_pmx_uart3_4_5;
143extern struct pmx_dev spear310_pmx_fsmc;
144extern struct pmx_dev spear310_pmx_rs485_0_1;
145extern struct pmx_dev spear310_pmx_tdm0;
70f4c0bf 146
c5fa4fdc
VK
147/* Add spear310 machine declarations here */
148void __init spear310_clk_init(void);
70f4c0bf 149
a7e9c452
VK
150#endif /* CONFIG_MACH_SPEAR310 */
151
70f4c0bf 152/* spear320 declarations */
a7e9c452 153#ifdef CONFIG_MACH_SPEAR320
70f4c0bf 154/* pad mux modes */
6618c3ad
RM
155extern struct pmx_mode spear320_auto_net_smii_mode;
156extern struct pmx_mode spear320_auto_net_mii_mode;
157extern struct pmx_mode spear320_auto_exp_mode;
158extern struct pmx_mode spear320_small_printers_mode;
70f4c0bf
VK
159
160/* pad mux devices */
6618c3ad
RM
161extern struct pmx_dev spear320_pmx_clcd;
162extern struct pmx_dev spear320_pmx_emi;
163extern struct pmx_dev spear320_pmx_fsmc;
164extern struct pmx_dev spear320_pmx_spp;
165extern struct pmx_dev spear320_pmx_sdhci;
166extern struct pmx_dev spear320_pmx_i2s;
167extern struct pmx_dev spear320_pmx_uart1;
168extern struct pmx_dev spear320_pmx_uart1_modem;
169extern struct pmx_dev spear320_pmx_uart2;
170extern struct pmx_dev spear320_pmx_touchscreen;
171extern struct pmx_dev spear320_pmx_can;
172extern struct pmx_dev spear320_pmx_sdhci_led;
173extern struct pmx_dev spear320_pmx_pwm0;
174extern struct pmx_dev spear320_pmx_pwm1;
175extern struct pmx_dev spear320_pmx_pwm2;
176extern struct pmx_dev spear320_pmx_pwm3;
177extern struct pmx_dev spear320_pmx_ssp1;
178extern struct pmx_dev spear320_pmx_ssp2;
179extern struct pmx_dev spear320_pmx_mii1;
180extern struct pmx_dev spear320_pmx_smii0;
181extern struct pmx_dev spear320_pmx_smii1;
182extern struct pmx_dev spear320_pmx_i2c1;
70f4c0bf 183
c5fa4fdc
VK
184/* Add spear320 machine declarations here */
185void __init spear320_clk_init(void);
70f4c0bf 186
a7e9c452
VK
187#endif /* CONFIG_MACH_SPEAR320 */
188
189#endif /* __MACH_GENERIC_H */