Thread (1 message) 1 message, 1 author, 2012-04-18

Re: [PATCH 1/1] dt: Add general DMA window parser

From: Hiroshi Doyu <hidden>
Date: 2012-04-18 11:13:01
Also in: linux-arm-kernel, linux-iommu, linux-tegra

From: Thierry Reding <redacted>
Subject: Re: [PATCH 1/1] dt: Add general DMA window parser
Date: Wed, 18 Apr 2012 12:54:23 +0200
Message-ID: [off-list ref]
* PGP Signed by an unknown key

* Hiroshi Doyu wrote:
quoted
diff --git a/drivers/of/of_dma.c b/drivers/of/of_dma.c
new file mode 100644
index 0000000..45c9e88
--- /dev/null
+++ b/drivers/of/of_dma.c
@@ -0,0 +1,35 @@
+/*
+ * Stolen from:
+ *	"arch/microblaze/kernel/prom_parse.c"
+ *	"arch/powerpc/kernel/prom_parse.c"
+ */
+
+#include <linux/of_address.h>
+
+void of_parse_dma_window(struct device_node *dn, const void *dma_window_prop,
+		unsigned long *busno, unsigned long *phys, unsigned long *size)
+{
+	const __be32 *dma_window;
+	u32 cells;
+	const unsigned char *prop;
There's no need for this to be const unsigned char *, const void * will do
just as well.
quoted
+
+	dma_window = dma_window_prop;
+
+	/* busno is always one cell */
+	if (busno)
+		*busno = be32_to_cpup(dma_window++);
+
+	prop = of_get_property(dn, "#dma-address-cells", NULL);
+	if (!prop)
+		prop = of_get_property(dn, "#address-cells", NULL);
+
+	cells = prop ? be32_to_cpup(prop) : of_n_addr_cells(dn);
+	*phys = of_read_number(dma_window, cells);
This should probably fail gracefully if phys == NULL, similar to what you do
for busno.
quoted
+
+	dma_window += cells;
+
+	prop = of_get_property(dn, "#dma-size-cells", NULL);
+	cells = prop ? be32_to_cpup(prop) : of_n_size_cells(dn);
+	*size = of_read_number(dma_window, cells);
Same here.
quoted
+}
+
And you might want to add a EXPORT_SYMBOL(of_parse_dma_window) here so the
function can be used from modules.

Sorry for having you go through another round. I should have looked more
closely before.
No problem, I'll wait for another comments, and post again later. Thank you for reivew.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help