Hello.

Kevin Hilman wrote:

Add the function to initialize the CPPI 4.1 subsystem along with the data
describing CPPI 4.1 queue manager and DMA block found in DA8xx chips.

Modify USB 2.0 clock entry to have the clock enabled early if we have
CPPI 4.1 subsystem enabled.

Signed-off-by: Sergei Shtylyov <[email protected]>

---
The patch is against the recent DaVinci tree.

arch/arm/mach-davinci/da830.c              |    4 +
arch/arm/mach-davinci/devices-da8xx.c      |   95 +++++++++++++++++++++++++++++
arch/arm/mach-davinci/include/mach/da8xx.h |    6 +
3 files changed, 105 insertions(+)

Index: linux-davinci/arch/arm/mach-davinci/da830.c
===================================================================
--- linux-davinci.orig/arch/arm/mach-davinci/da830.c
+++ linux-davinci/arch/arm/mach-davinci/da830.c
@@ -305,6 +305,10 @@ static struct clk usb20_clk = {
        .parent         = &pll0_sysclk2,
        .lpsc           = DA8XX_LPSC1_USB20,
        .psc_ctlr       = 1,
+#ifdef CONFIG_CPPI41
+       /* CPPI 4.1 is clocked by USB 2.0 clock */
+       .flags          = ALWAYS_ENABLED,
+#endif

Don't like this.  If CPP4.1 is clocked by USB2.0 clock,

   It's a just part of the USB 2.0 module in this case.

it should do a

   Like it or not -- I'm doing essentially the same as what EDMA does. :-)

clk_get()/clk_enable() on it.  If you can't use clk_enable() there
should be detailed description as to why.

   I think I can -- the same as EDMA could. :-)

Index: linux-davinci/arch/arm/mach-davinci/devices-da8xx.c
===================================================================
--- linux-davinci.orig/arch/arm/mach-davinci/devices-da8xx.c
+++ linux-davinci/arch/arm/mach-davinci/devices-da8xx.c

[...]

+int __init da8xx_cppi41_init(void)
+{
+       int ret;
+
+       ret = cppi41_queue_mgr_init(0, 0, 0);
+       if (ret) {
+               pr_warning("%s: queue manager initialization failed: %d\n",
+                          __func__, ret);
+               return ret;
+       }
+
+       ret = cppi41_dma_ctrlr_init(0, 0, 5);
+       if (ret) {
+               pr_warning("%s: DMA controller initialization failed: %d\n",
+                          __func__, ret);
+               return ret;
+       }
+
+       ret = cppi41_dma_sched_init(0, dma_sched_table,
+                                   sizeof(dma_sched_table));
+       if (ret)
+               printk("%s: DMA scheduler initialization failed: %d\n",
+                      __func__, ret);

checkpatch: WARNING: printk() should include KERN_ facility level

I assume you wanted pr_warning() here too.

   Sure, just managed to overlook this... :-/

Index: linux-davinci/arch/arm/mach-davinci/include/mach/da8xx.h
===================================================================
--- linux-davinci.orig/arch/arm/mach-davinci/include/mach/da8xx.h
+++ linux-davinci/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -68,6 +68,12 @@
void __init da830_init(void);
void __init da850_init(void);

+#ifdef CONFIG_CPPI41
+int da8xx_cppi41_init(void);
+#else
+static int da8xx_cppi41_init(void) { return 0; }
+#endif
+

Minor nit, but I'd rather these kinds of init function #ifdefs in the
C-code and not the header.

   OK...

int da8xx_register_edma(void);
int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata);
int da8xx_register_watchdog(void);

Kevin

WBR, Sergei

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to