You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
[ARM] pxa: allow platforms to control which uarts are registered
For some platforms, it is inappropriate to register all PXA UARTs. In some cases, the UARTs may not be used, and in others we may want to avoid registering the UARTs to allow other drivers (eg, FICP) to make use of the UART. In addition, a while back there was a request to be able to pass platform data to the UART driver. This patch enables all of this by providing functions platforms can call to register each individual UART. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Mike Rapoport <mike@compulab.co.il> Acked-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
This commit is contained in:
@@ -306,6 +306,10 @@ static void __init balloon3_init(void)
|
||||
*/
|
||||
ARB_CNTRL = ARB_CORE_PARK | 0x234;
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
pxa_set_i2c_info(NULL);
|
||||
if (balloon3_has(BALLOON3_FEATURE_AUDIO))
|
||||
pxa_set_ac97_info(NULL);
|
||||
|
||||
@@ -453,6 +453,10 @@ static inline void cmx2xx_init_ac97(void) {}
|
||||
|
||||
static void __init cmx2xx_init(void)
|
||||
{
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
cmx2xx_pm_init();
|
||||
|
||||
if (cpu_is_pxa25x())
|
||||
|
||||
@@ -438,6 +438,10 @@ static void __init cm_x300_init(void)
|
||||
/* board-processor specific GPIO initialization */
|
||||
pxa3xx_mfp_config(ARRAY_AND_SIZE(cm_x300_mfp_cfg));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
cm_x300_init_dm9000();
|
||||
cm_x300_init_lcd();
|
||||
cm_x300_init_ohci();
|
||||
|
||||
@@ -130,6 +130,9 @@ static struct platform_device *colibri_pxa270_devices[] __initdata = {
|
||||
static void __init colibri_pxa270_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(colibri_pxa270_pin_config));
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
platform_add_devices(ARRAY_AND_SIZE(colibri_pxa270_devices));
|
||||
}
|
||||
|
||||
|
||||
@@ -170,6 +170,10 @@ static inline void colibri_pxa310_init_ac97(void) {}
|
||||
|
||||
void __init colibri_pxa300_init(void)
|
||||
{
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
colibri_pxa300_init_eth();
|
||||
colibri_pxa300_init_ohci();
|
||||
colibri_pxa3xx_init_nand();
|
||||
|
||||
@@ -199,6 +199,10 @@ static void __init colibri_pxa320_init_uart(void)
|
||||
|
||||
void __init colibri_pxa320_init(void)
|
||||
{
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
colibri_pxa320_init_eth();
|
||||
colibri_pxa320_init_ohci();
|
||||
colibri_pxa3xx_init_nand();
|
||||
|
||||
@@ -671,6 +671,10 @@ static void __init corgi_init(void)
|
||||
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(corgi_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
corgi_init_spi();
|
||||
|
||||
pxa_set_udc_info(&udc_info);
|
||||
|
||||
@@ -268,6 +268,9 @@ static void __init csb726_init(void)
|
||||
/* MSC2 = 0x06697ff4; *//* none/SM501 */
|
||||
MSC2 = (MSC2 & ~0xffff) | 0x7ff4; /* SM501 */
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
pxa_set_i2c_info(NULL);
|
||||
pxa27x_set_i2c_power_info(NULL);
|
||||
pxa_set_mci_info(&csb726_mci);
|
||||
|
||||
@@ -167,13 +167,18 @@ static struct resource pxa_resource_ffuart[] = {
|
||||
}
|
||||
};
|
||||
|
||||
struct platform_device pxa_device_ffuart= {
|
||||
struct platform_device pxa_device_ffuart = {
|
||||
.name = "pxa2xx-uart",
|
||||
.id = 0,
|
||||
.resource = pxa_resource_ffuart,
|
||||
.num_resources = ARRAY_SIZE(pxa_resource_ffuart),
|
||||
};
|
||||
|
||||
void __init pxa_set_ffuart_info(void *info)
|
||||
{
|
||||
pxa_register_device(&pxa_device_ffuart, info);
|
||||
}
|
||||
|
||||
static struct resource pxa_resource_btuart[] = {
|
||||
{
|
||||
.start = 0x40200000,
|
||||
@@ -193,6 +198,11 @@ struct platform_device pxa_device_btuart = {
|
||||
.num_resources = ARRAY_SIZE(pxa_resource_btuart),
|
||||
};
|
||||
|
||||
void __init pxa_set_btuart_info(void *info)
|
||||
{
|
||||
pxa_register_device(&pxa_device_btuart, info);
|
||||
}
|
||||
|
||||
static struct resource pxa_resource_stuart[] = {
|
||||
{
|
||||
.start = 0x40700000,
|
||||
@@ -212,6 +222,11 @@ struct platform_device pxa_device_stuart = {
|
||||
.num_resources = ARRAY_SIZE(pxa_resource_stuart),
|
||||
};
|
||||
|
||||
void __init pxa_set_stuart_info(void *info)
|
||||
{
|
||||
pxa_register_device(&pxa_device_stuart, info);
|
||||
}
|
||||
|
||||
static struct resource pxa_resource_hwuart[] = {
|
||||
{
|
||||
.start = 0x41600000,
|
||||
@@ -231,6 +246,14 @@ struct platform_device pxa_device_hwuart = {
|
||||
.num_resources = ARRAY_SIZE(pxa_resource_hwuart),
|
||||
};
|
||||
|
||||
void __init pxa_set_hwuart_info(void *info)
|
||||
{
|
||||
if (cpu_is_pxa255())
|
||||
pxa_register_device(&pxa_device_hwuart, info);
|
||||
else
|
||||
pr_info("UART: Ignoring attempt to register HWUART on non-PXA255 hardware");
|
||||
}
|
||||
|
||||
static struct resource pxai2c_resources[] = {
|
||||
{
|
||||
.start = 0x40301680,
|
||||
|
||||
@@ -55,6 +55,9 @@ static struct platform_device *devices[] __initdata = {
|
||||
|
||||
static void __init e330_init(void)
|
||||
{
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
eseries_register_clks();
|
||||
eseries_get_tmio_gpios();
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
|
||||
@@ -56,6 +56,9 @@ static struct platform_device *devices[] __initdata = {
|
||||
|
||||
static void __init e350_init(void)
|
||||
{
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
eseries_register_clks();
|
||||
eseries_get_tmio_gpios();
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
|
||||
@@ -130,6 +130,9 @@ static struct platform_device *devices[] __initdata = {
|
||||
static void __init e400_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(e400_pin_config));
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
/* Fixme - e400 may have a switched clock */
|
||||
eseries_register_clks();
|
||||
eseries_get_tmio_gpios();
|
||||
|
||||
@@ -192,6 +192,9 @@ static struct platform_device *devices[] __initdata = {
|
||||
static void __init e740_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(e740_pin_config));
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
eseries_register_clks();
|
||||
clk_add_alias("CLK_CK48M", e740_t7l66xb_device.name,
|
||||
"UDCCLK", &pxa25x_device_udc.dev),
|
||||
|
||||
@@ -194,6 +194,9 @@ static struct platform_device *devices[] __initdata = {
|
||||
static void __init e750_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(e750_pin_config));
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
clk_add_alias("CLK_CK3P6MI", e750_tc6393xb_device.name,
|
||||
"GPIO11_CLK", NULL),
|
||||
eseries_get_tmio_gpios();
|
||||
|
||||
@@ -195,6 +195,9 @@ static struct platform_device *devices[] __initdata = {
|
||||
|
||||
static void __init e800_init(void)
|
||||
{
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
clk_add_alias("CLK_CK3P6MI", e800_tc6393xb_device.name,
|
||||
"GPIO11_CLK", NULL),
|
||||
eseries_get_tmio_gpios();
|
||||
|
||||
@@ -1286,6 +1286,10 @@ static void __init em_x270_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(common_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
pxa27x_set_pwrmode(PWRMODE_DEEPSLEEP);
|
||||
#endif
|
||||
|
||||
@@ -693,6 +693,10 @@ static void __init a780_init(void)
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config));
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(a780_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
pxa_set_i2c_info(NULL);
|
||||
|
||||
set_pxa_fb_info(&ezx_fb_info_1);
|
||||
@@ -754,6 +758,10 @@ static void __init e680_init(void)
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(gen1_pin_config));
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(e680_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
pxa_set_i2c_info(NULL);
|
||||
i2c_register_board_info(0, ARRAY_AND_SIZE(e680_i2c_board_info));
|
||||
|
||||
@@ -816,6 +824,10 @@ static void __init a1200_init(void)
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(a1200_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
pxa_set_i2c_info(NULL);
|
||||
i2c_register_board_info(0, ARRAY_AND_SIZE(a1200_i2c_board_info));
|
||||
|
||||
@@ -874,6 +886,10 @@ static void __init a910_init(void)
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(a910_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
pxa_set_i2c_info(NULL);
|
||||
|
||||
set_pxa_fb_info(&ezx_fb_info_2);
|
||||
@@ -935,6 +951,10 @@ static void __init e6_init(void)
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(e6_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
pxa_set_i2c_info(NULL);
|
||||
i2c_register_board_info(0, ARRAY_AND_SIZE(e6_i2c_board_info));
|
||||
|
||||
@@ -971,6 +991,10 @@ static void __init e2_init(void)
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(gen2_pin_config));
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(e2_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
|
||||
pxa_set_i2c_info(NULL);
|
||||
i2c_register_board_info(0, ARRAY_AND_SIZE(e2_i2c_board_info));
|
||||
|
||||
|
||||
@@ -67,3 +67,8 @@ extern struct sysdev_class pxa_irq_sysclass;
|
||||
extern struct sysdev_class pxa_gpio_sysclass;
|
||||
extern struct sysdev_class pxa2xx_mfp_sysclass;
|
||||
extern struct sysdev_class pxa3xx_mfp_sysclass;
|
||||
|
||||
void __init pxa_set_ffuart_info(void *info);
|
||||
void __init pxa_set_btuart_info(void *info);
|
||||
void __init pxa_set_stuart_info(void *info);
|
||||
void __init pxa_set_hwuart_info(void *info);
|
||||
|
||||
@@ -211,6 +211,11 @@ static void __init gumstix_init(void)
|
||||
{
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(gumstix_pin_config));
|
||||
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
pxa_set_hwuart_info(NULL);
|
||||
|
||||
gumstix_bluetooth_init();
|
||||
gumstix_udc_init();
|
||||
gumstix_mmc_init();
|
||||
|
||||
@@ -193,6 +193,9 @@ static void __init h5000_init(void)
|
||||
fix_msc();
|
||||
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(h5000_pin_config));
|
||||
pxa_set_ffuart_info(NULL);
|
||||
pxa_set_btuart_info(NULL);
|
||||
pxa_set_stuart_info(NULL);
|
||||
pxa_set_udc_info(&h5000_udc_mach_info);
|
||||
platform_add_devices(ARRAY_AND_SIZE(devices));
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user