2 quick notes below, I'll take a closer look when I get a chance. On Mon, Feb 24, 2014 at 11:19 PM, <xuelin.shi@xxxxxxxxxxxxx> wrote: > From: Xuelin Shi <xuelin.shi@xxxxxxxxxxxxx> > > The RaidEngine is a new FSL hardware used for Raid5/6 acceration. > > This patch enables the RaidEngine functionality and provides > hardware offloading capability for memcpy, xor and pq computation. > It works with async_tx. > > Signed-off-by: Harninder Rai <harninder.rai@xxxxxxxxxxxxx> > Signed-off-by: Naveen Burmi <naveenburmi@xxxxxxxxxxxxx> > Signed-off-by: Xuelin Shi <xuelin.shi@xxxxxxxxxxxxx> > --- > drivers/dma/Kconfig | 12 + > drivers/dma/Makefile | 1 + > drivers/dma/fsl_raid.c | 905 +++++++++++++++++++++++++++++++++++++++++++++++++ > drivers/dma/fsl_raid.h | 310 +++++++++++++++++ > 4 files changed, 1228 insertions(+) > create mode 100644 drivers/dma/fsl_raid.c > create mode 100644 drivers/dma/fsl_raid.h > > diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig > index 605b016..c15b10b 100644 > --- a/drivers/dma/Kconfig > +++ b/drivers/dma/Kconfig > @@ -100,6 +100,18 @@ config FSL_DMA > EloPlus is on mpc85xx and mpc86xx and Pxxx parts, and the Elo3 is on > some Txxx and Bxxx parts. > > +config FSL_RAID > + tristate "Freescale RAID engine Support" > + depends on FSL_SOC && !FSL_DMA > + select DMA_ENGINE > + select DMA_ENGINE_RAID > + select ASYNC_TX_ENABLE_CHANNEL_SWITCH Channel switching support is planned to be removed because it is incompatible with the dma mapping api. It's also unnecessary in this driver as it appears a given channel has all the raid capabilities. [..] > +/* Per job ring data structure */ > +struct re_jr { > + dma_cookie_t completed_cookie; > + spinlock_t desc_lock; /* queue lock */ > + struct list_head ack_q; /* wait to acked queue */ > + struct list_head active_q; /* already issued on hw, not completed */ > + struct list_head submit_q; > + struct list_head free_q; /* alloc available queue */ > + struct device *dev; > + struct re_drv_private *re_dev; > + struct dma_chan chan; > + struct jr_config_regs *jrregs; > + int irq; > + struct tasklet_struct irqtask; Please convert to threaded irqs. Tasklets are discouraged for new drivers. -- Dan -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html