xilinx_dma: Add external reset control
Subsystems (3)
v2 cover xilinx_dma: Add external reset control
This patchset adds support for controlling an external reset line. Since this reset line is optional it won't break compatibility.
v2:
- Re-order headers
- Remove deprecated function
- Remove reset naming
Ramiro Oliveira (2):
dma: xilinx: Edit device tree bindings documentation
dma: xilinx: Add reset support
.../devicetree/bindings/dma/xilinx/xilinx_dma.txt | 2 ++ drivers/dma/xilinx/xilinx_dma.c | 24 ++++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-)
Signature · 1 line
2.11.0
PATCH v2 1/2 dma: xilinx: Edit device tree bindings documentation
Add reset property documentation for Xilinx DMA
--- Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt +2 -0
@@ -40,6 +40,7 @@ Required properties for VDMA: Optional properties: - xlnx,include-sg: Tells configured for Scatter-mode in the hardware. +- resets : External reset specifier. See ../../reset/reset.txt for details. Optional properties for AXI DMA: - xlnx,mcdma: Tells whether configured for multi-channel mode in the hardware. Optional properties for VDMA:
@@ -83,6 +84,7 @@ axi_vdma_0: axivdma at 40030000 { clocks = <&clk 0>, <&clk 1>, <&clk 2>, <&clk 3>, <&clk 4>; clock-names = "s_axi_lite_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk", "m_axis_mm2s_aclk", "s_axis_s2mm_aclk"; + resets = <&rst 2>; dma-channel at 40030000 { compatible = "xlnx,axi-vdma-mm2s-channel"; interrupts = < 0 54 4 >;
Signature · 1 line
2.11.0
Re: [PATCH v2 1/2] dma: xilinx: Edit device tree bindings documentation
Quoted 6 lines · Ramiro Oliveira
Add reset property documentation for Xilinx DMA
Signed-off-by Ramiro Oliveira <[email protected]>--- Documentation/devicetree/bindings/dma/xilinx/xilinx_dma.txt | 2 ++ 1 file changed, 2 insertions(+)
PATCH v2 2/2 dma: xilinx: Add reset support
In reply to Ramiro OliveiraAdd a DT property to control an optional external reset line
--- drivers/dma/xilinx/xilinx_dma.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-)
drivers/dma/xilinx/xilinx_dma.c +20 -4
@@ -32,20 +32,21 @@*/ #include <linux/bitops.h> -#include <linux/dmapool.h> +#include <linux/clk.h> #include <linux/dma/xilinx_dma.h> +#include <linux/dmapool.h> #include <linux/init.h> #include <linux/interrupt.h> +#include <linux/io-64-nonatomic-lo-hi.h> #include <linux/io.h> #include <linux/iopoll.h> #include <linux/module.h> #include <linux/of_address.h> #include <linux/of_dma.h> -#include <linux/of_platform.h> #include <linux/of_irq.h> +#include <linux/of_platform.h> +#include <linux/reset.h> #include <linux/slab.h> -#include <linux/clk.h> -#include <linux/io-64-nonatomic-lo-hi.h> #include "../dmaengine.h"
@@ -409,6 +410,7 @@ struct xilinx_dma_device {struct clk *rxs_clk;u32 nr_channels;u32 chan_id; +struct reset_control *rst; };/* Macros */
@@ -2543,6 +2545,20 @@ static int xilinx_dma_probe(struct platform_device *pdev)if (IS_ERR (xdev->regs))return PTR_ERR (xdev->regs); + xdev->rst =devm_reset_control_get_optional_shared (&pdev->dev,NULL ); +if (IS_ERR (xdev->rst)) { + err =PTR_ERR (xdev->rst); +if (err == -EPROBE_DEFER ) +return err; + xdev->rst =NULL ; + }else { + err =reset_control_deassert (xdev->rst); +if (err) { +dev_err (xdev->dev,"error deasserting reset %d\n" , err); +return err; + } + } +/* Retrieve the DMA engine properties from the device tree */ xdev->has_sg =of_property_read_bool (node,"xlnx,include-sg" );if (xdev->dma_config->dmatype ==XDMA_TYPE_AXIDMA )
Signature · 1 line
2.11.0
Re: [PATCH v2 2/2] dma: xilinx: Add reset support
Quoted 24 lines · Ramiro Oliveira
Add a DT property to control an optional external reset line
Signed-off-by Ramiro Oliveira <[email protected]>--- drivers/dma/xilinx/xilinx_dma.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-)drivers/dma/xilinx/xilinx_dma.c +3
-1@@ -32,20 +32,21 @@*/ #include <linux/bitops.h> -#include <linux/dmapool.h> +#include <linux/clk.h> #include <linux/dma/xilinx_dma.h> +#include <linux/dmapool.h> #include <linux/init.h> #include <linux/interrupt.h> +#include <linux/io-64-nonatomic-lo-hi.h> #include <linux/io.h> #include <linux/iopoll.h>
drivers/dma/xilinx/xilinx_dma.c line 48
Quoted 10 lines
drivers/dma/xilinx/xilinx_dma.c +2
-3#include <linux/module.h> #include <linux/of_address.h> #include <linux/of_dma.h> -#include <linux/of_platform.h> #include <linux/of_irq.h> +#include <linux/of_platform.h> +#include <linux/reset.h> #include <linux/slab.h> -#include <linux/clk.h> -#include <linux/io-64-nonatomic-lo-hi.h>
this is noise in the patch, if you want to change the order feel free to send a separate patch
Quoted 12 lines
drivers/dma/xilinx/xilinx_dma.c +1
-0#include "../dmaengine.h" @@ -409,6 +410,7 @@ struct xilinx_dma_device {struct clk *rxs_clk;u32 nr_channels;u32 chan_id; +struct reset_control *rst; };/* Macros */
drivers/dma/xilinx/xilinx_dma.c static int xilinx_dma_probe(struct platform_device *pdev) · line 2553
Quoted 9 lines
drivers/dma/xilinx/xilinx_dma.c +6
-0@@ -2543,6 +2545,20 @@ static int xilinx_dma_probe(struct platform_device *pdev)if (IS_ERR (xdev->regs))return PTR_ERR (xdev->regs); + xdev->rst =devm_reset_control_get_optional_shared (&pdev->dev,NULL ); +if (IS_ERR (xdev->rst)) { + err =PTR_ERR (xdev->rst); +if (err == -EPROBE_DEFER ) +return err; + xdev->rst =NULL ;
is this optional, how will it work if you can't bring device out if reset
Quoted 15 lines
drivers/dma/xilinx/xilinx_dma.c +8
-0+ }else { + err =reset_control_deassert (xdev->rst); +if (err) { +dev_err (xdev->dev,"error deasserting reset %d\n" , err); +return err; + } + } +/* Retrieve the DMA engine properties from the device tree */ xdev->has_sg =of_property_read_bool (node,"xlnx,include-sg" );if (xdev->dma_config->dmatype ==XDMA_TYPE_AXIDMA )Signature · 1 line
2.11.0
Signature · 1 line
~Vinod