mirror of
https://github.com/torvalds/linux.git
synced 2024-11-29 07:31:29 +00:00
DaVinci SoC updates for v3.12
----------------------------- This set of SoC updates contains changes to the way UART clock is handled to enabled DT-boot to obtain UART clock frequency instead of relying on DT-binding being supplied. Similarly handling of MDIO clock is fixed to make it easier to support MDIO in DT-boot. Finally there is patch to remove now unnecessary setting of wake-up capable flag for RTC. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iQIcBAABAgAGBQJSFRb7AAoJEGFBu2jqvgRNEqMP/A60R4Zuj5sW7WAnAqySMTzH nPFwkuDTelDP1s2TdXgHHN7X6IeIiG0LjH0s/qdoYQbFA9FIoZFxBJ10G/P7hXWe R6mFLQFFP/EpdHelw5EGDnsxCrG+7GG68taACqxKdw+gz7FgbLjfpBveCf0+cGD2 otpLBHa8ohqDwsWj+uxLm4rJaZhZMHZRUsp/omXnRxBLIO8IX1f80P31pM4wx1Mq 7V2oUs7cv2jMGb/kQ6+bRRKCcLNVBbJ2hRh7fFQ+WWt1nhwURljkNfuw4S31a20t IBF4ODVL+LBW3qLiikWcCTZAfHlFUzVAh9LV64ECsJQO+9p/GZYWNAYG6/ylylAU W3vpppeuDTEj5/UqVcp71uR4D0wD5L0sD8bYvP4sAoHZ+0peEJxs5oek1SAQ+QiF 1q+YbTJjWcvQsBEQpw9bXC/oc/fFwpY0TaUHX4GTFfTOV0yueOUnv9wQJQ6WUvfW 3FjVLLZFFrA0Cgbuk0P6alIED4shzX92vUdnuVGoydeBdBtYCYjAoTend1hGNVzk GR1gJUK2lPGSAAytxIkWRIe7zKYRZYfHQAQ0TriWt93JGVdEXASP5d1qI2m+a2Gb qWaFlfMVDzaKh35XfquwDE7nL6tHo8Pn9ft1avjeqTStb6ep/DzAg1EEfPtN3Ms3 X8660xNwOKSYgpJrYRIS =e6I8 -----END PGP SIGNATURE----- Merge tag 'davinci-for-v3.12/soc' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci into next/soc From Sekhar Nori: DaVinci SoC updates for v3.12 ----------------------------- This set of SoC updates contains changes to the way UART clock is handled to enabled DT-boot to obtain UART clock frequency instead of relying on DT-binding being supplied. Similarly handling of MDIO clock is fixed to make it easier to support MDIO in DT-boot. Finally there is patch to remove now unnecessary setting of wake-up capable flag for RTC. * tag 'davinci-for-v3.12/soc' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci: ARM: davinci: fix clock lookup for mdio device ARM: davinci: da8xx: remove hard coding of rtc device wakeup ARM: davinci: serial: remove davinci_serial_setup_clk() ARM: davinci: serial: get rid of davinci_uart_config ARM: davinci: da8xx: remove da8xx_uart_clk_enable ARM: davinci: uart: move to devid based clk_get Signed-off-by: Kevin Hilman <khilman@linaro.org>
This commit is contained in:
commit
cee7e8bbd6
@ -185,10 +185,6 @@ static __init void da830_evm_usb_init(void)
|
||||
__func__, ret);
|
||||
}
|
||||
|
||||
static struct davinci_uart_config da830_evm_uart_config __initdata = {
|
||||
.enabled_uarts = 0x7,
|
||||
};
|
||||
|
||||
static const short da830_evm_mcasp1_pins[] = {
|
||||
DA830_AHCLKX1, DA830_ACLKX1, DA830_AFSX1, DA830_AHCLKR1, DA830_AFSR1,
|
||||
DA830_AMUTE1, DA830_AXR1_0, DA830_AXR1_1, DA830_AXR1_2, DA830_AXR1_5,
|
||||
@ -630,7 +626,7 @@ static __init void da830_evm_init(void)
|
||||
pr_warning("da830_evm_init: watchdog registration failed: %d\n",
|
||||
ret);
|
||||
|
||||
davinci_serial_init(&da830_evm_uart_config);
|
||||
davinci_serial_init(da8xx_serial_device);
|
||||
i2c_register_board_info(1, da830_evm_i2c_devices,
|
||||
ARRAY_SIZE(da830_evm_i2c_devices));
|
||||
|
||||
|
@ -746,10 +746,6 @@ static struct davinci_i2c_platform_data da850_evm_i2c_0_pdata = {
|
||||
.bus_delay = 0, /* usec */
|
||||
};
|
||||
|
||||
static struct davinci_uart_config da850_evm_uart_config __initdata = {
|
||||
.enabled_uarts = 0x7,
|
||||
};
|
||||
|
||||
/* davinci da850 evm audio machine driver */
|
||||
static u8 da850_iis_serializer_direction[] = {
|
||||
INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
|
||||
@ -1494,7 +1490,7 @@ static __init void da850_evm_init(void)
|
||||
__func__, ret);
|
||||
}
|
||||
|
||||
davinci_serial_init(&da850_evm_uart_config);
|
||||
davinci_serial_init(da8xx_serial_device);
|
||||
|
||||
i2c_register_board_info(1, da850_evm_i2c_devices,
|
||||
ARRAY_SIZE(da850_evm_i2c_devices));
|
||||
|
@ -314,10 +314,6 @@ static struct platform_device *davinci_evm_devices[] __initdata = {
|
||||
&davinci_nand_device,
|
||||
};
|
||||
|
||||
static struct davinci_uart_config uart_config __initdata = {
|
||||
.enabled_uarts = (1 << 0),
|
||||
};
|
||||
|
||||
static void __init dm355_evm_map_io(void)
|
||||
{
|
||||
dm355_init();
|
||||
@ -393,7 +389,7 @@ static __init void dm355_evm_init(void)
|
||||
platform_add_devices(davinci_evm_devices,
|
||||
ARRAY_SIZE(davinci_evm_devices));
|
||||
evm_init_i2c();
|
||||
davinci_serial_init(&uart_config);
|
||||
davinci_serial_init(dm355_serial_device);
|
||||
|
||||
/* NOTE: NAND flash timings set by the UBL are slower than
|
||||
* needed by MT29F16G08FAA chips ... EMIF.A1CR is 0x40400204
|
||||
|
@ -172,10 +172,6 @@ static struct platform_device *davinci_leopard_devices[] __initdata = {
|
||||
&davinci_nand_device,
|
||||
};
|
||||
|
||||
static struct davinci_uart_config uart_config __initdata = {
|
||||
.enabled_uarts = (1 << 0),
|
||||
};
|
||||
|
||||
static void __init dm355_leopard_map_io(void)
|
||||
{
|
||||
dm355_init();
|
||||
@ -251,7 +247,7 @@ static __init void dm355_leopard_init(void)
|
||||
platform_add_devices(davinci_leopard_devices,
|
||||
ARRAY_SIZE(davinci_leopard_devices));
|
||||
leopard_init_i2c();
|
||||
davinci_serial_init(&uart_config);
|
||||
davinci_serial_init(dm355_serial_device);
|
||||
|
||||
/* NOTE: NAND flash timings set by the UBL are slower than
|
||||
* needed by MT29F16G08FAA chips ... EMIF.A1CR is 0x40400204
|
||||
|
@ -718,10 +718,6 @@ fail:
|
||||
/* REVISIT export switches: NTSC/PAL (SW5.6), EXTRA1 (SW5.2), etc */
|
||||
}
|
||||
|
||||
static struct davinci_uart_config uart_config __initdata = {
|
||||
.enabled_uarts = (1 << 0),
|
||||
};
|
||||
|
||||
static void __init dm365_evm_map_io(void)
|
||||
{
|
||||
dm365_init();
|
||||
@ -748,7 +744,7 @@ static struct spi_board_info dm365_evm_spi_info[] __initconst = {
|
||||
static __init void dm365_evm_init(void)
|
||||
{
|
||||
evm_init_i2c();
|
||||
davinci_serial_init(&uart_config);
|
||||
davinci_serial_init(dm365_serial_device);
|
||||
|
||||
dm365evm_emac_configure();
|
||||
dm365evm_mmc_configure();
|
||||
|
@ -726,10 +726,6 @@ static struct platform_device *davinci_evm_devices[] __initdata = {
|
||||
&rtc_dev,
|
||||
};
|
||||
|
||||
static struct davinci_uart_config uart_config __initdata = {
|
||||
.enabled_uarts = (1 << 0),
|
||||
};
|
||||
|
||||
static void __init
|
||||
davinci_evm_map_io(void)
|
||||
{
|
||||
@ -791,7 +787,7 @@ static __init void davinci_evm_init(void)
|
||||
davinci_setup_mmc(0, &dm6446evm_mmc_config);
|
||||
dm644x_init_video(&dm644xevm_capture_cfg, &dm644xevm_display_cfg);
|
||||
|
||||
davinci_serial_init(&uart_config);
|
||||
davinci_serial_init(dm644x_serial_device);
|
||||
dm644x_init_asp(&dm644x_evm_snd_data);
|
||||
|
||||
/* irlml6401 switches over 1A, in under 8 msec */
|
||||
|
@ -749,10 +749,6 @@ static void __init davinci_map_io(void)
|
||||
cdce_clk_init();
|
||||
}
|
||||
|
||||
static struct davinci_uart_config uart_config __initdata = {
|
||||
.enabled_uarts = (1 << 0),
|
||||
};
|
||||
|
||||
#define DM646X_EVM_PHY_ID "davinci_mdio-0:01"
|
||||
/*
|
||||
* The following EDMA channels/slots are not being used by drivers (for
|
||||
@ -792,7 +788,7 @@ static __init void evm_init(void)
|
||||
struct davinci_soc_info *soc_info = &davinci_soc_info;
|
||||
|
||||
evm_init_i2c();
|
||||
davinci_serial_init(&uart_config);
|
||||
davinci_serial_init(dm646x_serial_device);
|
||||
dm646x_init_mcasp0(&dm646x_evm_snd_data[0]);
|
||||
dm646x_init_mcasp1(&dm646x_evm_snd_data[1]);
|
||||
|
||||
|
@ -434,10 +434,6 @@ static void __init mityomapl138_setup_nand(void)
|
||||
ARRAY_SIZE(mityomapl138_devices));
|
||||
}
|
||||
|
||||
static struct davinci_uart_config mityomapl138_uart_config __initdata = {
|
||||
.enabled_uarts = 0x7,
|
||||
};
|
||||
|
||||
static const short mityomap_mii_pins[] = {
|
||||
DA850_MII_TXEN, DA850_MII_TXCLK, DA850_MII_COL, DA850_MII_TXD_3,
|
||||
DA850_MII_TXD_2, DA850_MII_TXD_1, DA850_MII_TXD_0, DA850_MII_RXER,
|
||||
@ -517,7 +513,7 @@ static void __init mityomapl138_init(void)
|
||||
if (ret)
|
||||
pr_warning("watchdog registration failed: %d\n", ret);
|
||||
|
||||
davinci_serial_init(&mityomapl138_uart_config);
|
||||
davinci_serial_init(da8xx_serial_device);
|
||||
|
||||
ret = da8xx_register_i2c(0, &mityomap_i2c_0_pdata);
|
||||
if (ret)
|
||||
|
@ -153,10 +153,6 @@ static struct platform_device *davinci_ntosd2_devices[] __initdata = {
|
||||
&ntosd2_leds_dev,
|
||||
};
|
||||
|
||||
static struct davinci_uart_config uart_config __initdata = {
|
||||
.enabled_uarts = (1 << 0),
|
||||
};
|
||||
|
||||
static void __init davinci_ntosd2_map_io(void)
|
||||
{
|
||||
dm644x_init();
|
||||
@ -197,7 +193,7 @@ static __init void davinci_ntosd2_init(void)
|
||||
platform_add_devices(davinci_ntosd2_devices,
|
||||
ARRAY_SIZE(davinci_ntosd2_devices));
|
||||
|
||||
davinci_serial_init(&uart_config);
|
||||
davinci_serial_init(dm644x_serial_device);
|
||||
dm644x_init_asp(&dm644x_ntosd2_snd_data);
|
||||
|
||||
soc_info->emac_pdata->phy_id = NEUROS_OSD2_PHY_ID;
|
||||
|
@ -286,15 +286,11 @@ usb11_setup_oc_fail:
|
||||
gpio_free(DA850_USB1_VBUS_PIN);
|
||||
}
|
||||
|
||||
static struct davinci_uart_config omapl138_hawk_uart_config __initdata = {
|
||||
.enabled_uarts = 0x7,
|
||||
};
|
||||
|
||||
static __init void omapl138_hawk_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
davinci_serial_init(&omapl138_hawk_uart_config);
|
||||
davinci_serial_init(da8xx_serial_device);
|
||||
|
||||
omapl138_hawk_config_emac();
|
||||
|
||||
|
@ -125,10 +125,6 @@ static struct platform_device *davinci_sffsdr_devices[] __initdata = {
|
||||
&davinci_sffsdr_nandflash_device,
|
||||
};
|
||||
|
||||
static struct davinci_uart_config uart_config __initdata = {
|
||||
.enabled_uarts = (1 << 0),
|
||||
};
|
||||
|
||||
static void __init davinci_sffsdr_map_io(void)
|
||||
{
|
||||
dm644x_init();
|
||||
@ -141,7 +137,7 @@ static __init void davinci_sffsdr_init(void)
|
||||
platform_add_devices(davinci_sffsdr_devices,
|
||||
ARRAY_SIZE(davinci_sffsdr_devices));
|
||||
sffsdr_init_i2c();
|
||||
davinci_serial_init(&uart_config);
|
||||
davinci_serial_init(dm644x_serial_device);
|
||||
soc_info->emac_pdata->phy_id = SFFSDR_PHY_ID;
|
||||
davinci_setup_usb(0, 0); /* We support only peripheral mode. */
|
||||
|
||||
|
@ -395,9 +395,9 @@ static struct clk_lookup da830_clks[] = {
|
||||
CLK(NULL, "tptc0", &tptc0_clk),
|
||||
CLK(NULL, "tptc1", &tptc1_clk),
|
||||
CLK("da830-mmc.0", NULL, &mmcsd_clk),
|
||||
CLK(NULL, "uart0", &uart0_clk),
|
||||
CLK(NULL, "uart1", &uart1_clk),
|
||||
CLK(NULL, "uart2", &uart2_clk),
|
||||
CLK("serial8250.0", NULL, &uart0_clk),
|
||||
CLK("serial8250.1", NULL, &uart1_clk),
|
||||
CLK("serial8250.2", NULL, &uart2_clk),
|
||||
CLK("spi_davinci.0", NULL, &spi0_clk),
|
||||
CLK("spi_davinci.1", NULL, &spi1_clk),
|
||||
CLK(NULL, "ecap0", &ecap0_clk),
|
||||
@ -417,6 +417,7 @@ static struct clk_lookup da830_clks[] = {
|
||||
CLK(NULL, "aintc", &aintc_clk),
|
||||
CLK(NULL, "secu_mgr", &secu_mgr_clk),
|
||||
CLK("davinci_emac.1", NULL, &emac_clk),
|
||||
CLK("davinci_mdio.0", "fck", &emac_clk),
|
||||
CLK(NULL, "gpio", &gpio_clk),
|
||||
CLK("i2c_davinci.2", NULL, &i2c1_clk),
|
||||
CLK(NULL, "usb11", &usb11_clk),
|
||||
@ -1199,7 +1200,6 @@ static struct davinci_soc_info davinci_soc_info_da830 = {
|
||||
.gpio_base = DA8XX_GPIO_BASE,
|
||||
.gpio_num = 128,
|
||||
.gpio_irq = IRQ_DA8XX_GPIO0,
|
||||
.serial_dev = &da8xx_serial_device,
|
||||
.emac_pdata = &da8xx_emac_pdata,
|
||||
};
|
||||
|
||||
|
@ -451,9 +451,9 @@ static struct clk_lookup da850_clks[] = {
|
||||
CLK(NULL, "tpcc1", &tpcc1_clk),
|
||||
CLK(NULL, "tptc2", &tptc2_clk),
|
||||
CLK("pruss_uio", "pruss", &pruss_clk),
|
||||
CLK(NULL, "uart0", &uart0_clk),
|
||||
CLK(NULL, "uart1", &uart1_clk),
|
||||
CLK(NULL, "uart2", &uart2_clk),
|
||||
CLK("serial8250.0", NULL, &uart0_clk),
|
||||
CLK("serial8250.1", NULL, &uart1_clk),
|
||||
CLK("serial8250.2", NULL, &uart2_clk),
|
||||
CLK(NULL, "aintc", &aintc_clk),
|
||||
CLK(NULL, "gpio", &gpio_clk),
|
||||
CLK("i2c_davinci.2", NULL, &i2c1_clk),
|
||||
@ -461,6 +461,7 @@ static struct clk_lookup da850_clks[] = {
|
||||
CLK(NULL, "arm", &arm_clk),
|
||||
CLK(NULL, "rmii", &rmii_clk),
|
||||
CLK("davinci_emac.1", NULL, &emac_clk),
|
||||
CLK("davinci_mdio.0", "fck", &emac_clk),
|
||||
CLK("davinci-mcasp.0", NULL, &mcasp_clk),
|
||||
CLK("da8xx_lcdc.0", "fck", &lcdc_clk),
|
||||
CLK("da830-mmc.0", NULL, &mmcsd0_clk),
|
||||
@ -1301,7 +1302,6 @@ static struct davinci_soc_info davinci_soc_info_da850 = {
|
||||
.gpio_base = DA8XX_GPIO_BASE,
|
||||
.gpio_num = 144,
|
||||
.gpio_irq = IRQ_DA8XX_GPIO0,
|
||||
.serial_dev = &da8xx_serial_device,
|
||||
.emac_pdata = &da8xx_emac_pdata,
|
||||
.sram_dma = DA8XX_SHARED_RAM_BASE,
|
||||
.sram_len = SZ_128K,
|
||||
|
@ -20,13 +20,6 @@
|
||||
|
||||
#define DA8XX_NUM_UARTS 3
|
||||
|
||||
static void __init da8xx_uart_clk_enable(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < DA8XX_NUM_UARTS; i++)
|
||||
davinci_serial_setup_clk(i, NULL);
|
||||
}
|
||||
|
||||
static struct of_device_id da8xx_irq_match[] __initdata = {
|
||||
{ .compatible = "ti,cp-intc", .data = cp_intc_of_init, },
|
||||
{ }
|
||||
@ -47,6 +40,9 @@ static struct of_dev_auxdata da850_auxdata_lookup[] __initdata = {
|
||||
OF_DEV_AUXDATA("ti,da850-ecap", 0x01f07000, "ecap", NULL),
|
||||
OF_DEV_AUXDATA("ti,da850-ecap", 0x01f08000, "ecap", NULL),
|
||||
OF_DEV_AUXDATA("ti,da830-spi", 0x01f0e000, "spi_davinci.1", NULL),
|
||||
OF_DEV_AUXDATA("ns16550a", 0x01c42000, "serial8250.0", NULL),
|
||||
OF_DEV_AUXDATA("ns16550a", 0x01d0c000, "serial8250.1", NULL),
|
||||
OF_DEV_AUXDATA("ns16550a", 0x01d0d000, "serial8250.2", NULL),
|
||||
{}
|
||||
};
|
||||
|
||||
@ -57,7 +53,6 @@ static void __init da850_init_machine(void)
|
||||
of_platform_populate(NULL, of_default_bus_match_table,
|
||||
da850_auxdata_lookup, NULL);
|
||||
|
||||
da8xx_uart_clk_enable();
|
||||
}
|
||||
|
||||
static const char *da850_boards_compat[] __initdata = {
|
||||
|
@ -106,4 +106,9 @@ int dm646x_init_edma(struct edma_rsv_info *rsv);
|
||||
void dm646x_video_init(void);
|
||||
void dm646x_setup_vpif(struct vpif_display_config *,
|
||||
struct vpif_capture_config *);
|
||||
|
||||
extern struct platform_device dm365_serial_device[];
|
||||
extern struct platform_device dm355_serial_device[];
|
||||
extern struct platform_device dm644x_serial_device[];
|
||||
extern struct platform_device dm646x_serial_device[];
|
||||
#endif /*__DAVINCI_H */
|
||||
|
@ -68,7 +68,7 @@
|
||||
void __iomem *da8xx_syscfg0_base;
|
||||
void __iomem *da8xx_syscfg1_base;
|
||||
|
||||
static struct plat_serial8250_port da8xx_serial_pdata[] = {
|
||||
static struct plat_serial8250_port da8xx_serial0_pdata[] = {
|
||||
{
|
||||
.mapbase = DA8XX_UART0_BASE,
|
||||
.irq = IRQ_DA8XX_UARTINT0,
|
||||
@ -77,6 +77,11 @@ static struct plat_serial8250_port da8xx_serial_pdata[] = {
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port da8xx_serial1_pdata[] = {
|
||||
{
|
||||
.mapbase = DA8XX_UART1_BASE,
|
||||
.irq = IRQ_DA8XX_UARTINT1,
|
||||
@ -85,6 +90,11 @@ static struct plat_serial8250_port da8xx_serial_pdata[] = {
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port da8xx_serial2_pdata[] = {
|
||||
{
|
||||
.mapbase = DA8XX_UART2_BASE,
|
||||
.irq = IRQ_DA8XX_UARTINT2,
|
||||
@ -95,15 +105,33 @@ static struct plat_serial8250_port da8xx_serial_pdata[] = {
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
struct platform_device da8xx_serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = da8xx_serial_pdata,
|
||||
struct platform_device da8xx_serial_device[] = {
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = da8xx_serial0_pdata,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM1,
|
||||
.dev = {
|
||||
.platform_data = da8xx_serial1_pdata,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM2,
|
||||
.dev = {
|
||||
.platform_data = da8xx_serial2_pdata,
|
||||
}
|
||||
},
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
static s8 da8xx_queue_tc_mapping[][2] = {
|
||||
@ -453,12 +481,8 @@ int __init da8xx_register_emac(void)
|
||||
ret = platform_device_register(&da8xx_mdio_device);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = platform_device_register(&da8xx_emac_device);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ret = clk_add_alias(NULL, dev_name(&da8xx_mdio_device.dev),
|
||||
NULL, &da8xx_emac_device.dev);
|
||||
return ret;
|
||||
|
||||
return platform_device_register(&da8xx_emac_device);
|
||||
}
|
||||
|
||||
static struct resource da830_mcasp1_resources[] = {
|
||||
@ -828,14 +852,7 @@ static struct platform_device da8xx_rtc_device = {
|
||||
|
||||
int da8xx_register_rtc(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = platform_device_register(&da8xx_rtc_device);
|
||||
if (!ret)
|
||||
/* Atleast on DA850, RTC is a wakeup source */
|
||||
device_init_wakeup(&da8xx_rtc_device.dev, true);
|
||||
|
||||
return ret;
|
||||
return platform_device_register(&da8xx_rtc_device);
|
||||
}
|
||||
|
||||
static void __iomem *da8xx_ddr2_ctlr_base;
|
||||
|
@ -126,7 +126,7 @@ static struct platform_device edma_device = {
|
||||
.dev.platform_data = tnetv107x_edma_info,
|
||||
};
|
||||
|
||||
static struct plat_serial8250_port serial_data[] = {
|
||||
static struct plat_serial8250_port serial0_platform_data[] = {
|
||||
{
|
||||
.mapbase = TNETV107X_UART0_BASE,
|
||||
.irq = IRQ_TNETV107X_UART0,
|
||||
@ -136,6 +136,11 @@ static struct plat_serial8250_port serial_data[] = {
|
||||
.iotype = UPIO_MEM32,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port serial1_platform_data[] = {
|
||||
{
|
||||
.mapbase = TNETV107X_UART1_BASE,
|
||||
.irq = IRQ_TNETV107X_UART1,
|
||||
@ -145,6 +150,11 @@ static struct plat_serial8250_port serial_data[] = {
|
||||
.iotype = UPIO_MEM32,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port serial2_platform_data[] = {
|
||||
{
|
||||
.mapbase = TNETV107X_UART2_BASE,
|
||||
.irq = IRQ_TNETV107X_UART2,
|
||||
@ -156,13 +166,28 @@ static struct plat_serial8250_port serial_data[] = {
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
struct platform_device tnetv107x_serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev.platform_data = serial_data,
|
||||
|
||||
struct platform_device tnetv107x_serial_device[] = {
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev.platform_data = serial0_platform_data,
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM1,
|
||||
.dev.platform_data = serial1_platform_data,
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM2,
|
||||
.dev.platform_data = serial2_platform_data,
|
||||
},
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
static struct resource mmc0_resources[] = {
|
||||
@ -385,7 +410,7 @@ void __init tnetv107x_devices_init(struct tnetv107x_device_info *info)
|
||||
platform_device_register(&tsc_device);
|
||||
|
||||
if (info->serial_config)
|
||||
davinci_serial_init(info->serial_config);
|
||||
davinci_serial_init(tnetv107x_serial_device);
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
if (info->mmc_config[i]) {
|
||||
|
@ -357,9 +357,9 @@ static struct clk_lookup dm355_clks[] = {
|
||||
CLK(NULL, "clkout3", &clkout3_clk),
|
||||
CLK(NULL, "arm", &arm_clk),
|
||||
CLK(NULL, "mjcp", &mjcp_clk),
|
||||
CLK(NULL, "uart0", &uart0_clk),
|
||||
CLK(NULL, "uart1", &uart1_clk),
|
||||
CLK(NULL, "uart2", &uart2_clk),
|
||||
CLK("serial8250.0", NULL, &uart0_clk),
|
||||
CLK("serial8250.1", NULL, &uart1_clk),
|
||||
CLK("serial8250.2", NULL, &uart2_clk),
|
||||
CLK("i2c_davinci.1", NULL, &i2c_clk),
|
||||
CLK("davinci-mcbsp.0", NULL, &asp0_clk),
|
||||
CLK("davinci-mcbsp.1", NULL, &asp1_clk),
|
||||
@ -922,7 +922,7 @@ static struct davinci_timer_info dm355_timer_info = {
|
||||
.clocksource_id = T0_TOP,
|
||||
};
|
||||
|
||||
static struct plat_serial8250_port dm355_serial_platform_data[] = {
|
||||
static struct plat_serial8250_port dm355_serial0_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART0_BASE,
|
||||
.irq = IRQ_UARTINT0,
|
||||
@ -931,6 +931,11 @@ static struct plat_serial8250_port dm355_serial_platform_data[] = {
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port dm355_serial1_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART1_BASE,
|
||||
.irq = IRQ_UARTINT1,
|
||||
@ -939,6 +944,11 @@ static struct plat_serial8250_port dm355_serial_platform_data[] = {
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port dm355_serial2_platform_data[] = {
|
||||
{
|
||||
.mapbase = DM355_UART2_BASE,
|
||||
.irq = IRQ_DM355_UARTINT2,
|
||||
@ -948,16 +958,34 @@ static struct plat_serial8250_port dm355_serial_platform_data[] = {
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0
|
||||
},
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device dm355_serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = dm355_serial_platform_data,
|
||||
struct platform_device dm355_serial_device[] = {
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = dm355_serial0_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM1,
|
||||
.dev = {
|
||||
.platform_data = dm355_serial1_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM2,
|
||||
.dev = {
|
||||
.platform_data = dm355_serial2_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
static struct davinci_soc_info davinci_soc_info_dm355 = {
|
||||
@ -981,7 +1009,6 @@ static struct davinci_soc_info davinci_soc_info_dm355 = {
|
||||
.gpio_base = DAVINCI_GPIO_BASE,
|
||||
.gpio_num = 104,
|
||||
.gpio_irq = IRQ_DM355_GPIOBNK0,
|
||||
.serial_dev = &dm355_serial_device,
|
||||
.sram_dma = 0x00010000,
|
||||
.sram_len = SZ_32K,
|
||||
};
|
||||
|
@ -455,8 +455,8 @@ static struct clk_lookup dm365_clks[] = {
|
||||
CLK("vpss", "master", &vpss_master_clk),
|
||||
CLK("vpss", "slave", &vpss_slave_clk),
|
||||
CLK(NULL, "arm", &arm_clk),
|
||||
CLK(NULL, "uart0", &uart0_clk),
|
||||
CLK(NULL, "uart1", &uart1_clk),
|
||||
CLK("serial8250.0", NULL, &uart0_clk),
|
||||
CLK("serial8250.1", NULL, &uart1_clk),
|
||||
CLK("i2c_davinci.1", NULL, &i2c_clk),
|
||||
CLK("da830-mmc.0", NULL, &mmcsd0_clk),
|
||||
CLK("da830-mmc.1", NULL, &mmcsd1_clk),
|
||||
@ -477,6 +477,7 @@ static struct clk_lookup dm365_clks[] = {
|
||||
CLK(NULL, "timer3", &timer3_clk),
|
||||
CLK(NULL, "usb", &usb_clk),
|
||||
CLK("davinci_emac.1", NULL, &emac_clk),
|
||||
CLK("davinci_mdio.0", "fck", &emac_clk),
|
||||
CLK("davinci_voicecodec", NULL, &voicecodec_clk),
|
||||
CLK("davinci-mcbsp", NULL, &asp0_clk),
|
||||
CLK(NULL, "rto", &rto_clk),
|
||||
@ -1041,7 +1042,7 @@ static struct davinci_timer_info dm365_timer_info = {
|
||||
|
||||
#define DM365_UART1_BASE (IO_PHYS + 0x106000)
|
||||
|
||||
static struct plat_serial8250_port dm365_serial_platform_data[] = {
|
||||
static struct plat_serial8250_port dm365_serial0_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART0_BASE,
|
||||
.irq = IRQ_UARTINT0,
|
||||
@ -1050,6 +1051,11 @@ static struct plat_serial8250_port dm365_serial_platform_data[] = {
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port dm365_serial1_platform_data[] = {
|
||||
{
|
||||
.mapbase = DM365_UART1_BASE,
|
||||
.irq = IRQ_UARTINT1,
|
||||
@ -1059,16 +1065,27 @@ static struct plat_serial8250_port dm365_serial_platform_data[] = {
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0
|
||||
},
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device dm365_serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = dm365_serial_platform_data,
|
||||
struct platform_device dm365_serial_device[] = {
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = dm365_serial0_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM1,
|
||||
.dev = {
|
||||
.platform_data = dm365_serial1_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
static struct davinci_soc_info davinci_soc_info_dm365 = {
|
||||
@ -1093,7 +1110,6 @@ static struct davinci_soc_info davinci_soc_info_dm365 = {
|
||||
.gpio_num = 104,
|
||||
.gpio_irq = IRQ_DM365_GPIO0,
|
||||
.gpio_unbanked = 8, /* really 16 ... skip muxed GPIOs */
|
||||
.serial_dev = &dm365_serial_device,
|
||||
.emac_pdata = &dm365_emac_pdata,
|
||||
.sram_dma = 0x00010000,
|
||||
.sram_len = SZ_32K,
|
||||
@ -1407,8 +1423,6 @@ static int __init dm365_init_devices(void)
|
||||
|
||||
platform_device_register(&dm365_mdio_device);
|
||||
platform_device_register(&dm365_emac_device);
|
||||
clk_add_alias(NULL, dev_name(&dm365_mdio_device.dev),
|
||||
NULL, &dm365_emac_device.dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -303,10 +303,11 @@ static struct clk_lookup dm644x_clks[] = {
|
||||
CLK("vpss", "master", &vpss_master_clk),
|
||||
CLK("vpss", "slave", &vpss_slave_clk),
|
||||
CLK(NULL, "arm", &arm_clk),
|
||||
CLK(NULL, "uart0", &uart0_clk),
|
||||
CLK(NULL, "uart1", &uart1_clk),
|
||||
CLK(NULL, "uart2", &uart2_clk),
|
||||
CLK("serial8250.0", NULL, &uart0_clk),
|
||||
CLK("serial8250.1", NULL, &uart1_clk),
|
||||
CLK("serial8250.2", NULL, &uart2_clk),
|
||||
CLK("davinci_emac.1", NULL, &emac_clk),
|
||||
CLK("davinci_mdio.0", "fck", &emac_clk),
|
||||
CLK("i2c_davinci.1", NULL, &i2c_clk),
|
||||
CLK("palm_bk3710", NULL, &ide_clk),
|
||||
CLK("davinci-mcbsp", NULL, &asp_clk),
|
||||
@ -813,7 +814,7 @@ static struct davinci_timer_info dm644x_timer_info = {
|
||||
.clocksource_id = T0_TOP,
|
||||
};
|
||||
|
||||
static struct plat_serial8250_port dm644x_serial_platform_data[] = {
|
||||
static struct plat_serial8250_port dm644x_serial0_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART0_BASE,
|
||||
.irq = IRQ_UARTINT0,
|
||||
@ -822,6 +823,11 @@ static struct plat_serial8250_port dm644x_serial_platform_data[] = {
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port dm644x_serial1_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART1_BASE,
|
||||
.irq = IRQ_UARTINT1,
|
||||
@ -830,6 +836,11 @@ static struct plat_serial8250_port dm644x_serial_platform_data[] = {
|
||||
.iotype = UPIO_MEM,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port dm644x_serial2_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART2_BASE,
|
||||
.irq = IRQ_UARTINT2,
|
||||
@ -839,16 +850,34 @@ static struct plat_serial8250_port dm644x_serial_platform_data[] = {
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0
|
||||
},
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device dm644x_serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = dm644x_serial_platform_data,
|
||||
struct platform_device dm644x_serial_device[] = {
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = dm644x_serial0_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM1,
|
||||
.dev = {
|
||||
.platform_data = dm644x_serial1_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM2,
|
||||
.dev = {
|
||||
.platform_data = dm644x_serial2_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
static struct davinci_soc_info davinci_soc_info_dm644x = {
|
||||
@ -872,7 +901,6 @@ static struct davinci_soc_info davinci_soc_info_dm644x = {
|
||||
.gpio_base = DAVINCI_GPIO_BASE,
|
||||
.gpio_num = 71,
|
||||
.gpio_irq = IRQ_GPIOBNK0,
|
||||
.serial_dev = &dm644x_serial_device,
|
||||
.emac_pdata = &dm644x_emac_pdata,
|
||||
.sram_dma = 0x00008000,
|
||||
.sram_len = SZ_16K,
|
||||
@ -923,8 +951,6 @@ static int __init dm644x_init_devices(void)
|
||||
|
||||
platform_device_register(&dm644x_mdio_device);
|
||||
platform_device_register(&dm644x_emac_device);
|
||||
clk_add_alias(NULL, dev_name(&dm644x_mdio_device.dev),
|
||||
NULL, &dm644x_emac_device.dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -342,15 +342,16 @@ static struct clk_lookup dm646x_clks[] = {
|
||||
CLK(NULL, "edma_tc1", &edma_tc1_clk),
|
||||
CLK(NULL, "edma_tc2", &edma_tc2_clk),
|
||||
CLK(NULL, "edma_tc3", &edma_tc3_clk),
|
||||
CLK(NULL, "uart0", &uart0_clk),
|
||||
CLK(NULL, "uart1", &uart1_clk),
|
||||
CLK(NULL, "uart2", &uart2_clk),
|
||||
CLK("serial8250.0", NULL, &uart0_clk),
|
||||
CLK("serial8250.1", NULL, &uart1_clk),
|
||||
CLK("serial8250.2", NULL, &uart2_clk),
|
||||
CLK("i2c_davinci.1", NULL, &i2c_clk),
|
||||
CLK(NULL, "gpio", &gpio_clk),
|
||||
CLK("davinci-mcasp.0", NULL, &mcasp0_clk),
|
||||
CLK("davinci-mcasp.1", NULL, &mcasp1_clk),
|
||||
CLK(NULL, "aemif", &aemif_clk),
|
||||
CLK("davinci_emac.1", NULL, &emac_clk),
|
||||
CLK("davinci_mdio.0", "fck", &emac_clk),
|
||||
CLK(NULL, "pwm0", &pwm0_clk),
|
||||
CLK(NULL, "pwm1", &pwm1_clk),
|
||||
CLK(NULL, "timer0", &timer0_clk),
|
||||
@ -790,7 +791,7 @@ static struct davinci_timer_info dm646x_timer_info = {
|
||||
.clocksource_id = T0_TOP,
|
||||
};
|
||||
|
||||
static struct plat_serial8250_port dm646x_serial_platform_data[] = {
|
||||
static struct plat_serial8250_port dm646x_serial0_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART0_BASE,
|
||||
.irq = IRQ_UARTINT0,
|
||||
@ -799,6 +800,11 @@ static struct plat_serial8250_port dm646x_serial_platform_data[] = {
|
||||
.iotype = UPIO_MEM32,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port dm646x_serial1_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART1_BASE,
|
||||
.irq = IRQ_UARTINT1,
|
||||
@ -807,6 +813,11 @@ static struct plat_serial8250_port dm646x_serial_platform_data[] = {
|
||||
.iotype = UPIO_MEM32,
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
static struct plat_serial8250_port dm646x_serial2_platform_data[] = {
|
||||
{
|
||||
.mapbase = DAVINCI_UART2_BASE,
|
||||
.irq = IRQ_DM646X_UARTINT2,
|
||||
@ -816,16 +827,34 @@ static struct plat_serial8250_port dm646x_serial_platform_data[] = {
|
||||
.regshift = 2,
|
||||
},
|
||||
{
|
||||
.flags = 0
|
||||
},
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device dm646x_serial_device = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = dm646x_serial_platform_data,
|
||||
struct platform_device dm646x_serial_device[] = {
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev = {
|
||||
.platform_data = dm646x_serial0_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM1,
|
||||
.dev = {
|
||||
.platform_data = dm646x_serial1_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM2,
|
||||
.dev = {
|
||||
.platform_data = dm646x_serial2_platform_data,
|
||||
}
|
||||
},
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
static struct davinci_soc_info davinci_soc_info_dm646x = {
|
||||
@ -849,7 +878,6 @@ static struct davinci_soc_info davinci_soc_info_dm646x = {
|
||||
.gpio_base = DAVINCI_GPIO_BASE,
|
||||
.gpio_num = 43, /* Only 33 usable */
|
||||
.gpio_irq = IRQ_DM646X_GPIOBNK0,
|
||||
.serial_dev = &dm646x_serial_device,
|
||||
.emac_pdata = &dm646x_emac_pdata,
|
||||
.sram_dma = 0x10010000,
|
||||
.sram_len = SZ_32K,
|
||||
@ -913,8 +941,6 @@ static int __init dm646x_init_devices(void)
|
||||
|
||||
platform_device_register(&dm646x_mdio_device);
|
||||
platform_device_register(&dm646x_emac_device);
|
||||
clk_add_alias(NULL, dev_name(&dm646x_mdio_device.dev),
|
||||
NULL, &dm646x_emac_device.dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -72,7 +72,6 @@ struct davinci_soc_info {
|
||||
unsigned gpio_unbanked;
|
||||
struct davinci_gpio_controller *gpio_ctlrs;
|
||||
int gpio_ctlrs_num;
|
||||
struct platform_device *serial_dev;
|
||||
struct emac_platform_data *emac_pdata;
|
||||
dma_addr_t sram_dma;
|
||||
unsigned sram_len;
|
||||
|
@ -111,7 +111,7 @@ void da8xx_restart(enum reboot_mode mode, const char *cmd);
|
||||
void da8xx_rproc_reserve_cma(void);
|
||||
int da8xx_register_rproc(void);
|
||||
|
||||
extern struct platform_device da8xx_serial_device;
|
||||
extern struct platform_device da8xx_serial_device[];
|
||||
extern struct emac_platform_data da8xx_emac_pdata;
|
||||
extern struct da8xx_lcdc_platform_data sharp_lcd035q3dg01_pdata;
|
||||
extern struct da8xx_lcdc_platform_data sharp_lk043t1dg01_pdata;
|
||||
|
@ -15,6 +15,8 @@
|
||||
|
||||
#include <mach/hardware.h>
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#define DAVINCI_UART0_BASE (IO_PHYS + 0x20000)
|
||||
#define DAVINCI_UART1_BASE (IO_PHYS + 0x20400)
|
||||
#define DAVINCI_UART2_BASE (IO_PHYS + 0x20800)
|
||||
@ -37,13 +39,7 @@
|
||||
#define UART_DM646X_SCR_TX_WATERMARK 0x08
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
struct davinci_uart_config {
|
||||
/* Bit field of UARTs present; bit 0 --> UART0 */
|
||||
unsigned int enabled_uarts;
|
||||
};
|
||||
|
||||
extern int davinci_serial_init(struct davinci_uart_config *);
|
||||
extern int davinci_serial_setup_clk(unsigned instance, unsigned int *rate);
|
||||
extern int davinci_serial_init(struct platform_device *);
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_ARCH_SERIAL_H */
|
||||
|
@ -42,7 +42,6 @@
|
||||
#include <mach/serial.h>
|
||||
|
||||
struct tnetv107x_device_info {
|
||||
struct davinci_uart_config *serial_config;
|
||||
struct davinci_mmc_config *mmc_config[2]; /* 2 controllers */
|
||||
struct davinci_nand_pdata *nand_config[4]; /* 4 chipsels */
|
||||
struct matrix_keypad_platform_data *keypad_config;
|
||||
@ -50,7 +49,7 @@ struct tnetv107x_device_info {
|
||||
};
|
||||
|
||||
extern struct platform_device tnetv107x_wdt_device;
|
||||
extern struct platform_device tnetv107x_serial_device;
|
||||
extern struct platform_device tnetv107x_serial_device[];
|
||||
|
||||
extern void tnetv107x_init(void);
|
||||
extern void tnetv107x_devices_init(struct tnetv107x_device_info *);
|
||||
|
@ -70,49 +70,36 @@ static void __init davinci_serial_reset(struct plat_serial8250_port *p)
|
||||
UART_DM646X_SCR_TX_WATERMARK);
|
||||
}
|
||||
|
||||
/* Enable UART clock and obtain its rate */
|
||||
int __init davinci_serial_setup_clk(unsigned instance, unsigned int *rate)
|
||||
int __init davinci_serial_init(struct platform_device *serial_dev)
|
||||
{
|
||||
char name[16];
|
||||
int i, ret = 0;
|
||||
struct device *dev;
|
||||
struct plat_serial8250_port *p;
|
||||
struct clk *clk;
|
||||
struct davinci_soc_info *soc_info = &davinci_soc_info;
|
||||
struct device *dev = &soc_info->serial_dev->dev;
|
||||
|
||||
sprintf(name, "uart%d", instance);
|
||||
clk = clk_get(dev, name);
|
||||
if (IS_ERR(clk)) {
|
||||
pr_err("%s:%d: failed to get UART%d clock\n",
|
||||
__func__, __LINE__, instance);
|
||||
return PTR_ERR(clk);
|
||||
}
|
||||
|
||||
clk_prepare_enable(clk);
|
||||
|
||||
if (rate)
|
||||
*rate = clk_get_rate(clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int __init davinci_serial_init(struct davinci_uart_config *info)
|
||||
{
|
||||
int i, ret;
|
||||
struct davinci_soc_info *soc_info = &davinci_soc_info;
|
||||
struct device *dev = &soc_info->serial_dev->dev;
|
||||
struct plat_serial8250_port *p = dev->platform_data;
|
||||
|
||||
/*
|
||||
* Make sure the serial ports are muxed on at this point.
|
||||
* You have to mux them off in device drivers later on if not needed.
|
||||
*/
|
||||
for (i = 0; p->flags; i++, p++) {
|
||||
if (!(info->enabled_uarts & (1 << i)))
|
||||
continue;
|
||||
for (i = 0; serial_dev[i].dev.platform_data != NULL; i++) {
|
||||
dev = &serial_dev[i].dev;
|
||||
p = dev->platform_data;
|
||||
|
||||
ret = davinci_serial_setup_clk(i, &p->uartclk);
|
||||
ret = platform_device_register(&serial_dev[i]);
|
||||
if (ret)
|
||||
continue;
|
||||
|
||||
clk = clk_get(dev, NULL);
|
||||
if (IS_ERR(clk)) {
|
||||
pr_err("%s:%d: failed to get UART%d clock\n",
|
||||
__func__, __LINE__, i);
|
||||
continue;
|
||||
}
|
||||
|
||||
clk_prepare_enable(clk);
|
||||
|
||||
p->uartclk = clk_get_rate(clk);
|
||||
|
||||
if (!p->membase && p->mapbase) {
|
||||
p->membase = ioremap(p->mapbase, SZ_4K);
|
||||
|
||||
@ -125,6 +112,5 @@ int __init davinci_serial_init(struct davinci_uart_config *info)
|
||||
if (p->membase && p->type != PORT_AR7)
|
||||
davinci_serial_reset(p);
|
||||
}
|
||||
|
||||
return platform_device_register(soc_info->serial_dev);
|
||||
return ret;
|
||||
}
|
||||
|
@ -264,7 +264,7 @@ static struct clk_lookup clks[] = {
|
||||
CLK(NULL, "clk_chipcfg", &clk_chipcfg),
|
||||
CLK("tnetv107x-ts.0", NULL, &clk_tsc),
|
||||
CLK(NULL, "clk_rom", &clk_rom),
|
||||
CLK(NULL, "uart2", &clk_uart2),
|
||||
CLK("serial8250.2", NULL, &clk_uart2),
|
||||
CLK(NULL, "clk_pktsec", &clk_pktsec),
|
||||
CLK("tnetv107x-rng.0", NULL, &clk_rng),
|
||||
CLK("tnetv107x-pka.0", NULL, &clk_pka),
|
||||
@ -274,8 +274,8 @@ static struct clk_lookup clks[] = {
|
||||
CLK(NULL, "clk_gpio", &clk_gpio),
|
||||
CLK(NULL, "clk_mdio", &clk_mdio),
|
||||
CLK("dm6441-mmc.0", NULL, &clk_sdio0),
|
||||
CLK(NULL, "uart0", &clk_uart0),
|
||||
CLK(NULL, "uart1", &clk_uart1),
|
||||
CLK("serial8250.0", NULL, &clk_uart0),
|
||||
CLK("serial8250.1", NULL, &clk_uart1),
|
||||
CLK(NULL, "timer0", &clk_timer0),
|
||||
CLK(NULL, "timer1", &clk_timer1),
|
||||
CLK("tnetv107x_wdt.0", NULL, &clk_wdt_arm),
|
||||
@ -757,7 +757,7 @@ static struct davinci_soc_info tnetv107x_soc_info = {
|
||||
.gpio_type = GPIO_TYPE_TNETV107X,
|
||||
.gpio_num = TNETV107X_N_GPIO,
|
||||
.timer_info = &timer_info,
|
||||
.serial_dev = &tnetv107x_serial_device,
|
||||
.serial_dev = tnetv107x_serial_device,
|
||||
};
|
||||
|
||||
void __init tnetv107x_init(void)
|
||||
|
Loading…
Reference in New Issue
Block a user