[PATCH v2 11/13] da850: pruss SUART board specific additions.
From: Subhasish Ghosh <hidden>
Date: 2011-02-18 07:12:31
Also in:
lkml
-------------------------------------------------- From: "Michael Williamson" <redacted> Sent: Friday, February 11, 2011 8:56 PM To: "Subhasish Ghosh" <redacted> Cc: <redacted>; [off-list ref]; "Russell King" [off-list ref]; "Kevin Hilman" [off-list ref]; "open list" [off-list ref]; [off-list ref]; [off-list ref] Subject: Re: [PATCH v2 11/13] da850: pruss SUART board specific additions.
Hi Subhasish, On 2/11/2011 9:51 AM, Subhasish Ghosh wrote:quoted
This patch adds the pruss SUART pin mux and registers the device with the pruss mfd driver. Signed-off-by: Subhasish Ghosh <redacted> --- arch/arm/mach-davinci/board-da850-evm.c | 36 +++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-)diff --git a/arch/arm/mach-davinci/board-da850-evm.cb/arch/arm/mach-davinci/board-da850-evm.c index f9c38f8..3858516 100644--- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c@@ -1060,6 +1060,25 @@ const short da850_evm_pruss_can_pins[] = { -1 }; +const short da850_evm_pruss_suart_pins[] = { + DA850_AHCLKX, DA850_ACLKX, DA850_AFSX, + DA850_AHCLKR, DA850_ACLKR, DA850_AFSR, + DA850_AXR_13, DA850_AXR_9, DA850_AXR_7, + DA850_AXR_14, DA850_AXR_10, DA850_AXR_8, + -1 +}; +Shouldn't this pins select PRU[0,1]_XXX type functions and not McASP functions? E.G.: PRU0_R31[17] instead of AHCLKX, PRU0_R31[18] instead of AHCLKR, etc.
SG - The Soft-UART implementation uses the McASP as shift registers to push
out the data sequentially.
Hence, we configure the McASP PINS and not the PRU PINS.
quoted
+static int __init da850_evm_setup_pruss_suart(void) +{ + int ret; + + ret = davinci_cfg_reg_list(da850_evm_pruss_suart_pins); + if (ret) + pr_warning("%s: da850_evm_pruss_suart_pins " + "mux setup failed: %d\n", __func__, ret); + return ret; +} + static int __init da850_evm_setup_pruss_can(void) { int ret, val = 0;@@ -1085,6 +1104,17 @@ static int __init da850_evm_setup_pruss_can(void) return ret; } +static struct da850_evm_pruss_suart_data suart_data = { + .version = 1, + .resource = { + .name = "da8xx_mcasp0_iomem", + .start = DAVINCI_DA8XX_MCASP0_REG_BASE, + .end = DAVINCI_DA8XX_MCASP0_REG_BASE + + (SZ_1K * 12) - 1, + .flags = IORESOURCE_MEM, + }, +}; + static struct da8xx_pruss_can_data can_data = { .version = 1, };@@ -1094,6 +1124,12 @@ static struct da8xx_pruss_devices pruss_devices[]= { .dev_name = "da8xx_pruss_can", .pdata = &can_data, .pdata_size = sizeof(can_data), + .setup = da850_evm_setup_pruss_suart,Should this be da850_evm_setup_pruss_can instead?
SG - This just the way the patch is displayed. In the code the order is correct.
quoted
+ }, + { + .dev_name = "da8xx_pruss_uart", + .pdata = &suart_data, + .pdata_size = sizeof(suart_data), .setup = da850_evm_setup_pruss_can,Should this be da850_evm_setup_pruss_suart instead?
SG - Ditto
quoted
}, {-Mike