lkml.org 
[lkml]   [2011]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v3 2/4] dmaengine: at_hdmac: add device tree support
    On 10/13/2011 02:34 AM, Grant Likely :
    > On Wed, Oct 12, 2011 at 06:57:12PM +0200, Nicolas Ferre wrote:
    >> Add device tree probe support for atmel at_hdmac DMA driver.
    >> Bindings are added to specify DMA controller configuration.
    >>
    >> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    >> ---
    >> .../devicetree/bindings/dma/atmel-dma.txt | 14 +++++++++
    >> drivers/dma/at_hdmac.c | 30 +++++++++++++++++++-
    >> 2 files changed, 43 insertions(+), 1 deletions(-)
    >> create mode 100644 Documentation/devicetree/bindings/dma/atmel-dma.txt
    >>
    >> diff --git a/Documentation/devicetree/bindings/dma/atmel-dma.txt b/Documentation/devicetree/bindings/dma/atmel-dma.txt
    >> new file mode 100644
    >> index 0000000..3c046ee
    >> --- /dev/null
    >> +++ b/Documentation/devicetree/bindings/dma/atmel-dma.txt
    >> @@ -0,0 +1,14 @@
    >> +* Atmel Direct Memory Access Controller (DMA)
    >> +
    >> +Required properties:
    >> +- compatible: Should be "atmel,<chip>-dma"
    >> +- reg: Should contain DMA registers location and length
    >> +- interrupts: Should contain DMA interrupt
    >> +
    >> +Examples:
    >> +
    >> +dma@ffffec00 {
    >> + compatible = "atmel,at91sam9g45-dma";
    >> + reg = <0xffffec00 0x200>;
    >> + interrupts = <21>;
    >> +};
    >> diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
    >> index d1869c5..42bd64c 100644
    >> --- a/drivers/dma/at_hdmac.c
    >> +++ b/drivers/dma/at_hdmac.c
    >> @@ -23,6 +23,8 @@
    >> #include <linux/module.h>
    >> #include <linux/platform_device.h>
    >> #include <linux/slab.h>
    >> +#include <linux/of.h>
    >> +#include <linux/of_device.h>
    >>
    >> #include "at_hdmac_regs.h"
    >>
    >> @@ -1175,6 +1177,20 @@ static void atc_free_chan_resources(struct dma_chan *chan)
    >>
    >> /*-- Module Management -----------------------------------------------*/
    >>
    >> +#if defined(CONFIG_OF)
    >> +static const struct of_device_id atmel_dma_dt_ids[] = {
    >> + {
    >> + .compatible = "atmel,at91sam9rl-dma",
    >> + .data = (void *)ATDMA_DEVTYPE_SAM9RL
    >> + }, {
    >> + .compatible = "atmel,at91sam9g45-dma",
    >> + .data = (void *)ATDMA_DEVTYPE_SAM9G45
    >> + }, { /* sentinel */ }
    >> +};
    >> +
    >> +MODULE_DEVICE_TABLE(of, atmel_dma_dt_ids);
    >> +#endif
    >> +
    >> static struct platform_device_id atdma_devtypes[] = {
    >> {
    >> .name = "at91sam9rl_dma",
    >> @@ -1187,6 +1203,17 @@ static struct platform_device_id atdma_devtypes[] = {
    >> }
    >> };
    >>
    >> +static inline enum atdma_devtype __init at_dma_get_driver_data(
    >> + struct platform_device *pdev)
    >> +{
    >> + if (pdev->dev.of_node) {
    >> + const struct of_device_id *match;
    >> + match = of_match_node(atmel_dma_dt_ids, pdev->dev.of_node);
    >
    > You'll need to check the return value. It is possible (though
    > unlikely) to have a device with an of_node but still happens to get
    > bound via the platform_driver id_table. In which case match would be
    > NULL here.

    Ok, I add:

    if (match == NULL)
    return ATDMA_DEVTYPE_UNDEFINED;

    Which will take care about this case.


    > Otherwise, you can add my a-b after fixing that bug.
    >
    > Acked-by: Grant Likely <grant.likely@secretlab.ca>

    Thanks a lot for your reviews Grant,

    Bye,
    --
    Nicolas Ferre


    \
     
     \ /
      Last update: 2011-10-13 13:57    [W:0.028 / U:0.120 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site