linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support
@ 2013-06-06  8:24 Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 1/7] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status Nicolas Ferre
                   ` (7 more replies)
  0 siblings, 8 replies; 10+ messages in thread
From: Nicolas Ferre @ 2013-06-06  8:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-arm-kernel, linux-kernel, Andrew Morton, linux-pcmcia,
	linux, manabian, fabio.porcedda, laurent.navet, Nicolas Ferre

These patches clean up at91_cf a bit and add DT bindings.
They are based on a previous series from Joachim Eastwood and other cleanup
patches by Fabio and Laurent.
I have collected them together as they are lying around for some time.

Greg kindly told me that he can take them through his char/misc driver
tree, so I resend the series.

Thanks for your help, best regards.

v3: rebased on top of 3.10-rc4

v2: add 2 more cleanup patches:
	- move to module_platform_driver_probe()
	- little trivial indentation fix

Fabio Porcedda (1):
  pcmcia: at91_cf: use module_platform_driver_probe()

Joachim Eastwood (5):
  pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status
  pcmcia: at91_cf: convert to dev_ print functions
  pcmcia: at91_cf: use devm_ functions for allocations
  pcmcia: at91_cf: clean up header includes
  pcmcia: at91_cf: add support for DT

Laurent Navet (1):
  pcmcia/trivial: at91_cf: fix checkpatch error

 .../devicetree/bindings/ata/atmel-at91_cf.txt      |  19 +++
 drivers/pcmcia/Kconfig                             |   2 +-
 drivers/pcmcia/at91_cf.c                           | 176 ++++++++++-----------
 3 files changed, 108 insertions(+), 89 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/ata/atmel-at91_cf.txt

-- 
1.8.2.2


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v3 1/7] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status
  2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
@ 2013-06-06  8:24 ` Nicolas Ferre
  2013-06-06 16:15   ` Jean-Christophe PLAGNIOL-VILLARD
  2013-06-06  8:24 ` [PATCH v3 2/7] pcmcia: at91_cf: convert to dev_ print functions Nicolas Ferre
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 10+ messages in thread
From: Nicolas Ferre @ 2013-06-06  8:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-arm-kernel, linux-kernel, Andrew Morton, linux-pcmcia,
	linux, manabian, fabio.porcedda, laurent.navet, Nicolas Ferre

From: Joachim Eastwood <manabian@gmail.com>

Commit 80af9e6d (pcmcia at91_cf: fix raw gpio number usage) forgot
to change the parameter in gpio_get_value after adding gpio
validation.

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/pcmcia/at91_cf.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
index 01463c7..1b2c631 100644
--- a/drivers/pcmcia/at91_cf.c
+++ b/drivers/pcmcia/at91_cf.c
@@ -100,9 +100,9 @@ static int at91_cf_get_status(struct pcmcia_socket *s, u_int *sp)
 		int vcc	= gpio_is_valid(cf->board->vcc_pin);
 
 		*sp = SS_DETECT | SS_3VCARD;
-		if (!rdy || gpio_get_value(rdy))
+		if (!rdy || gpio_get_value(cf->board->irq_pin))
 			*sp |= SS_READY;
-		if (!vcc || gpio_get_value(vcc))
+		if (!vcc || gpio_get_value(cf->board->vcc_pin))
 			*sp |= SS_POWERON;
 	} else
 		*sp = 0;
-- 
1.8.2.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 2/7] pcmcia: at91_cf: convert to dev_ print functions
  2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 1/7] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status Nicolas Ferre
@ 2013-06-06  8:24 ` Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 3/7] pcmcia: at91_cf: use devm_ functions for allocations Nicolas Ferre
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2013-06-06  8:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-arm-kernel, linux-kernel, Andrew Morton, linux-pcmcia,
	linux, manabian, fabio.porcedda, laurent.navet, Nicolas Ferre

From: Joachim Eastwood <manabian@gmail.com>

Convert all pr_* functions to equivalent dev_* functions and
drop the driver_name variable.

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/pcmcia/at91_cf.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
index 1b2c631..4eec14b 100644
--- a/drivers/pcmcia/at91_cf.c
+++ b/drivers/pcmcia/at91_cf.c
@@ -41,8 +41,6 @@
 
 /*--------------------------------------------------------------------------*/
 
-static const char driver_name[] = "at91_cf";
-
 struct at91_cf_socket {
 	struct pcmcia_socket	socket;
 
@@ -76,7 +74,7 @@ static irqreturn_t at91_cf_irq(int irq, void *_cf)
 		/* kick pccard as needed */
 		if (present != cf->present) {
 			cf->present = present;
-			pr_debug("%s: card %s\n", driver_name,
+			dev_dbg(&cf->pdev->dev, "card %s\n",
 					present ? "present" : "gone");
 			pcmcia_parse_events(&cf->socket, SS_DETECT);
 		}
@@ -134,8 +132,8 @@ at91_cf_set_socket(struct pcmcia_socket *sock, struct socket_state_t *s)
 	/* toggle reset if needed */
 	gpio_set_value(cf->board->rst_pin, s->flags & SS_RESET);
 
-	pr_debug("%s: Vcc %d, io_irq %d, flags %04x csc %04x\n",
-		driver_name, s->Vcc, s->io_irq, s->flags, s->csc_mask);
+	dev_dbg(&cf->pdev->dev, "Vcc %d, io_irq %d, flags %04x csc %04x\n",
+				s->Vcc, s->io_irq, s->flags, s->csc_mask);
 
 	return 0;
 }
@@ -171,10 +169,10 @@ static int at91_cf_set_io_map(struct pcmcia_socket *s, struct pccard_io_map *io)
 	 */
 	if (!(io->flags & (MAP_16BIT | MAP_AUTOSZ))) {
 		csr |= AT91_SMC_DBW_8;
-		pr_debug("%s: 8bit i/o bus\n", driver_name);
+		dev_dbg(&cf->pdev->dev, "8bit i/o bus\n");
 	} else {
 		csr |= AT91_SMC_DBW_16;
-		pr_debug("%s: 16bit i/o bus\n", driver_name);
+		dev_dbg(&cf->pdev->dev, "16bit i/o bus\n");
 	}
 	at91_ramc_write(0, AT91_SMC_CSR(cf->board->chipselect), csr);
 
@@ -242,7 +240,7 @@ static int __init at91_cf_probe(struct platform_device *pdev)
 	status = gpio_request(board->det_pin, "cf_det");
 	if (status < 0)
 		goto fail0;
-	status = request_irq(gpio_to_irq(board->det_pin), at91_cf_irq, 0, driver_name, cf);
+	status = request_irq(gpio_to_irq(board->det_pin), at91_cf_irq, 0, "at91_cf detect", cf);
 	if (status < 0)
 		goto fail00;
 	device_init_wakeup(&pdev->dev, 1);
@@ -268,7 +266,7 @@ static int __init at91_cf_probe(struct platform_device *pdev)
 		if (status < 0)
 			goto fail0c;
 		status = request_irq(gpio_to_irq(board->irq_pin), at91_cf_irq,
-				IRQF_SHARED, driver_name, cf);
+				IRQF_SHARED, "at91_cf", cf);
 		if (status < 0)
 			goto fail0d;
 		cf->socket.pci_irq = gpio_to_irq(board->irq_pin);
@@ -284,12 +282,12 @@ static int __init at91_cf_probe(struct platform_device *pdev)
 	}
 
 	/* reserve chip-select regions */
-	if (!request_mem_region(io->start, resource_size(io), driver_name)) {
+	if (!request_mem_region(io->start, resource_size(io), "at91_cf")) {
 		status = -ENXIO;
 		goto fail1;
 	}
 
-	pr_info("%s: irqs det #%d, io #%d\n", driver_name,
+	dev_info(&pdev->dev, "irqs det #%d, io #%d\n",
 		gpio_to_irq(board->det_pin), gpio_to_irq(board->irq_pin));
 
 	cf->socket.owner = THIS_MODULE;
@@ -391,7 +389,7 @@ static int at91_cf_resume(struct platform_device *pdev)
 
 static struct platform_driver at91_cf_driver = {
 	.driver = {
-		.name		= (char *) driver_name,
+		.name		= "at91_cf",
 		.owner		= THIS_MODULE,
 	},
 	.remove		= __exit_p(at91_cf_remove),
-- 
1.8.2.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 3/7] pcmcia: at91_cf: use devm_ functions for allocations
  2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 1/7] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 2/7] pcmcia: at91_cf: convert to dev_ print functions Nicolas Ferre
@ 2013-06-06  8:24 ` Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 4/7] pcmcia: at91_cf: clean up header includes Nicolas Ferre
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2013-06-06  8:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-arm-kernel, linux-kernel, Andrew Morton, linux-pcmcia,
	linux, manabian, fabio.porcedda, laurent.navet, Nicolas Ferre

From: Joachim Eastwood <manabian@gmail.com>

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/pcmcia/at91_cf.c | 77 +++++++++++++++---------------------------------
 1 file changed, 24 insertions(+), 53 deletions(-)

diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
index 4eec14b..43bc342 100644
--- a/drivers/pcmcia/at91_cf.c
+++ b/drivers/pcmcia/at91_cf.c
@@ -227,7 +227,7 @@ static int __init at91_cf_probe(struct platform_device *pdev)
 	if (!io)
 		return -ENODEV;
 
-	cf = kzalloc(sizeof *cf, GFP_KERNEL);
+	cf = devm_kzalloc(&pdev->dev, sizeof(*cf), GFP_KERNEL);
 	if (!cf)
 		return -ENOMEM;
 
@@ -237,22 +237,25 @@ static int __init at91_cf_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, cf);
 
 	/* must be a GPIO; ergo must trigger on both edges */
-	status = gpio_request(board->det_pin, "cf_det");
+	status = devm_gpio_request(&pdev->dev, board->det_pin, "cf_det");
 	if (status < 0)
-		goto fail0;
-	status = request_irq(gpio_to_irq(board->det_pin), at91_cf_irq, 0, "at91_cf detect", cf);
+		return status;
+
+	status = devm_request_irq(&pdev->dev, gpio_to_irq(board->det_pin),
+					at91_cf_irq, 0, "at91_cf detect", cf);
 	if (status < 0)
-		goto fail00;
+		return status;
+
 	device_init_wakeup(&pdev->dev, 1);
 
-	status = gpio_request(board->rst_pin, "cf_rst");
+	status = devm_gpio_request(&pdev->dev, board->rst_pin, "cf_rst");
 	if (status < 0)
 		goto fail0a;
 
 	if (gpio_is_valid(board->vcc_pin)) {
-		status = gpio_request(board->vcc_pin, "cf_vcc");
+		status = devm_gpio_request(&pdev->dev, board->vcc_pin, "cf_vcc");
 		if (status < 0)
-			goto fail0b;
+			goto fail0a;
 	}
 
 	/*
@@ -262,29 +265,30 @@ static int __init at91_cf_probe(struct platform_device *pdev)
 	 * (Note:  DK board doesn't wire the IRQ pin...)
 	 */
 	if (gpio_is_valid(board->irq_pin)) {
-		status = gpio_request(board->irq_pin, "cf_irq");
+		status = devm_gpio_request(&pdev->dev, board->irq_pin, "cf_irq");
 		if (status < 0)
-			goto fail0c;
-		status = request_irq(gpio_to_irq(board->irq_pin), at91_cf_irq,
-				IRQF_SHARED, "at91_cf", cf);
+			goto fail0a;
+
+		status = devm_request_irq(&pdev->dev, gpio_to_irq(board->irq_pin),
+					at91_cf_irq, IRQF_SHARED, "at91_cf", cf);
 		if (status < 0)
-			goto fail0d;
+			goto fail0a;
 		cf->socket.pci_irq = gpio_to_irq(board->irq_pin);
 	} else
 		cf->socket.pci_irq = nr_irqs + 1;
 
 	/* pcmcia layer only remaps "real" memory not iospace */
-	cf->socket.io_offset = (unsigned long)
-			ioremap(cf->phys_baseaddr + CF_IO_PHYS, SZ_2K);
+	cf->socket.io_offset = (unsigned long) devm_ioremap(&pdev->dev,
+					cf->phys_baseaddr + CF_IO_PHYS, SZ_2K);
 	if (!cf->socket.io_offset) {
 		status = -ENXIO;
-		goto fail1;
+		goto fail0a;
 	}
 
 	/* reserve chip-select regions */
-	if (!request_mem_region(io->start, resource_size(io), "at91_cf")) {
+	if (!devm_request_mem_region(&pdev->dev, io->start, resource_size(io), "at91_cf")) {
 		status = -ENXIO;
-		goto fail1;
+		goto fail0a;
 	}
 
 	dev_info(&pdev->dev, "irqs det #%d, io #%d\n",
@@ -301,55 +305,22 @@ static int __init at91_cf_probe(struct platform_device *pdev)
 
 	status = pcmcia_register_socket(&cf->socket);
 	if (status < 0)
-		goto fail2;
+		goto fail0a;
 
 	return 0;
 
-fail2:
-	release_mem_region(io->start, resource_size(io));
-fail1:
-	if (cf->socket.io_offset)
-		iounmap((void __iomem *) cf->socket.io_offset);
-	if (gpio_is_valid(board->irq_pin)) {
-		free_irq(gpio_to_irq(board->irq_pin), cf);
-fail0d:
-		gpio_free(board->irq_pin);
-	}
-fail0c:
-	if (gpio_is_valid(board->vcc_pin))
-		gpio_free(board->vcc_pin);
-fail0b:
-	gpio_free(board->rst_pin);
 fail0a:
 	device_init_wakeup(&pdev->dev, 0);
-	free_irq(gpio_to_irq(board->det_pin), cf);
-fail00:
-	gpio_free(board->det_pin);
-fail0:
-	kfree(cf);
 	return status;
 }
 
 static int __exit at91_cf_remove(struct platform_device *pdev)
 {
 	struct at91_cf_socket	*cf = platform_get_drvdata(pdev);
-	struct at91_cf_data	*board = cf->board;
-	struct resource		*io = cf->socket.io[0].res;
 
 	pcmcia_unregister_socket(&cf->socket);
-	release_mem_region(io->start, resource_size(io));
-	iounmap((void __iomem *) cf->socket.io_offset);
-	if (gpio_is_valid(board->irq_pin)) {
-		free_irq(gpio_to_irq(board->irq_pin), cf);
-		gpio_free(board->irq_pin);
-	}
-	if (gpio_is_valid(board->vcc_pin))
-		gpio_free(board->vcc_pin);
-	gpio_free(board->rst_pin);
 	device_init_wakeup(&pdev->dev, 0);
-	free_irq(gpio_to_irq(board->det_pin), cf);
-	gpio_free(board->det_pin);
-	kfree(cf);
+
 	return 0;
 }
 
-- 
1.8.2.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 4/7] pcmcia: at91_cf: clean up header includes
  2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
                   ` (2 preceding siblings ...)
  2013-06-06  8:24 ` [PATCH v3 3/7] pcmcia: at91_cf: use devm_ functions for allocations Nicolas Ferre
@ 2013-06-06  8:24 ` Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 5/7] pcmcia: at91_cf: add support for DT Nicolas Ferre
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2013-06-06  8:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-arm-kernel, linux-kernel, Andrew Morton, linux-pcmcia,
	linux, manabian, fabio.porcedda, laurent.navet, Nicolas Ferre

From: Joachim Eastwood <manabian@gmail.com>

Use includes from linux/ instead of asm/ and remove a
unnecessary mach/ include.

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/pcmcia/at91_cf.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
index 43bc342..bce8a64 100644
--- a/drivers/pcmcia/at91_cf.c
+++ b/drivers/pcmcia/at91_cf.c
@@ -18,13 +18,11 @@
 #include <linux/slab.h>
 #include <linux/gpio.h>
 #include <linux/platform_data/atmel.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
 
 #include <pcmcia/ss.h>
 
-#include <mach/hardware.h>
-#include <asm/io.h>
-#include <asm/sizes.h>
-
 #include <mach/at91rm9200_mc.h>
 #include <mach/at91_ramc.h>
 
-- 
1.8.2.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 5/7] pcmcia: at91_cf: add support for DT
  2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
                   ` (3 preceding siblings ...)
  2013-06-06  8:24 ` [PATCH v3 4/7] pcmcia: at91_cf: clean up header includes Nicolas Ferre
@ 2013-06-06  8:24 ` Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 6/7] pcmcia: at91_cf: use module_platform_driver_probe() Nicolas Ferre
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2013-06-06  8:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-arm-kernel, linux-kernel, Andrew Morton, linux-pcmcia,
	linux, manabian, fabio.porcedda, laurent.navet, Nicolas Ferre

From: Joachim Eastwood <manabian@gmail.com>

Signed-off-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 .../devicetree/bindings/ata/atmel-at91_cf.txt      | 19 +++++++++
 drivers/pcmcia/Kconfig                             |  2 +-
 drivers/pcmcia/at91_cf.c                           | 45 +++++++++++++++++++++-
 3 files changed, 64 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/ata/atmel-at91_cf.txt

diff --git a/Documentation/devicetree/bindings/ata/atmel-at91_cf.txt b/Documentation/devicetree/bindings/ata/atmel-at91_cf.txt
new file mode 100644
index 0000000..c1d22b3
--- /dev/null
+++ b/Documentation/devicetree/bindings/ata/atmel-at91_cf.txt
@@ -0,0 +1,19 @@
+Atmel AT91RM9200 CompactFlash
+
+Required properties:
+- compatible : "atmel,at91rm9200-cf".
+- reg : should specify localbus address and size used.
+- gpios : specifies the gpio pins to control the CF device. Detect
+  and reset gpio's are mandatory while irq and vcc gpio's are
+  optional and may be set to 0 if not present.
+
+Example:
+compact-flash@50000000 {
+	compatible = "atmel,at91rm9200-cf";
+	reg = <0x50000000 0x30000000>;
+	gpios = <&pioC 13 0	/* irq */
+		 &pioC 15 0 	/* detect */
+		 0		/* vcc */
+		 &pioC  5 0	/* reset */
+		>;
+};
diff --git a/drivers/pcmcia/Kconfig b/drivers/pcmcia/Kconfig
index b90f85b..80faa56 100644
--- a/drivers/pcmcia/Kconfig
+++ b/drivers/pcmcia/Kconfig
@@ -288,7 +288,7 @@ config BFIN_CFPCMCIA
 
 config AT91_CF
 	tristate "AT91 CompactFlash Controller"
-	depends on PCMCIA && ARCH_AT91RM9200
+	depends on PCMCIA && ARCH_AT91
 	help
 	  Say Y here to support the CompactFlash controller on AT91 chips.
 	  Or choose M to compile the driver as a module named "at91_cf".
diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
index bce8a64..149b95c 100644
--- a/drivers/pcmcia/at91_cf.c
+++ b/drivers/pcmcia/at91_cf.c
@@ -20,6 +20,9 @@
 #include <linux/platform_data/atmel.h>
 #include <linux/io.h>
 #include <linux/sizes.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/of_gpio.h>
 
 #include <pcmcia/ss.h>
 
@@ -211,6 +214,37 @@ static struct pccard_operations at91_cf_ops = {
 
 /*--------------------------------------------------------------------------*/
 
+#if defined(CONFIG_OF)
+static const struct of_device_id at91_cf_dt_ids[] = {
+	{ .compatible = "atmel,at91rm9200-cf" },
+	{ /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, at91_cf_dt_ids);
+
+static int at91_cf_dt_init(struct platform_device *pdev)
+{
+	struct at91_cf_data *board;
+
+	board = devm_kzalloc(&pdev->dev, sizeof(*board), GFP_KERNEL);
+	if (!board)
+		return -ENOMEM;
+
+	board->irq_pin = of_get_gpio(pdev->dev.of_node, 0);
+	board->det_pin = of_get_gpio(pdev->dev.of_node, 1);
+	board->vcc_pin = of_get_gpio(pdev->dev.of_node, 2);
+	board->rst_pin = of_get_gpio(pdev->dev.of_node, 3);
+
+	pdev->dev.platform_data = board;
+
+	return 0;
+}
+#else
+static int at91_cf_dt_init(struct platform_device *pdev)
+{
+	return -ENODEV;
+}
+#endif
+
 static int __init at91_cf_probe(struct platform_device *pdev)
 {
 	struct at91_cf_socket	*cf;
@@ -218,7 +252,15 @@ static int __init at91_cf_probe(struct platform_device *pdev)
 	struct resource		*io;
 	int			status;
 
-	if (!board || !gpio_is_valid(board->det_pin) || !gpio_is_valid(board->rst_pin))
+	if (!board) {
+		status = at91_cf_dt_init(pdev);
+		if (status)
+			return status;
+
+		board = pdev->dev.platform_data;
+	}
+
+	if (!gpio_is_valid(board->det_pin) || !gpio_is_valid(board->rst_pin))
 		return -ENODEV;
 
 	io = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -360,6 +402,7 @@ static struct platform_driver at91_cf_driver = {
 	.driver = {
 		.name		= "at91_cf",
 		.owner		= THIS_MODULE,
+		.of_match_table = of_match_ptr(at91_cf_dt_ids),
 	},
 	.remove		= __exit_p(at91_cf_remove),
 	.suspend	= at91_cf_suspend,
-- 
1.8.2.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 6/7] pcmcia: at91_cf: use module_platform_driver_probe()
  2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
                   ` (4 preceding siblings ...)
  2013-06-06  8:24 ` [PATCH v3 5/7] pcmcia: at91_cf: add support for DT Nicolas Ferre
@ 2013-06-06  8:24 ` Nicolas Ferre
  2013-06-06  8:24 ` [PATCH v3 7/7] pcmcia/trivial: at91_cf: fix checkpatch error Nicolas Ferre
  2013-06-06 16:14 ` [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Jean-Christophe PLAGNIOL-VILLARD
  7 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2013-06-06  8:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-arm-kernel, linux-kernel, Andrew Morton, linux-pcmcia,
	linux, manabian, fabio.porcedda, laurent.navet,
	Jean-Christophe PLAGNIOL-VILLARD, Nicolas Ferre

From: Fabio Porcedda <fabio.porcedda@gmail.com>

Use module_platform_driver_probe() macro which makes the code smaller
and simpler.

Signed-off-by: Fabio Porcedda <fabio.porcedda@gmail.com>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/pcmcia/at91_cf.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
index 149b95c..8ddc57c 100644
--- a/drivers/pcmcia/at91_cf.c
+++ b/drivers/pcmcia/at91_cf.c
@@ -411,17 +411,7 @@ static struct platform_driver at91_cf_driver = {
 
 /*--------------------------------------------------------------------------*/
 
-static int __init at91_cf_init(void)
-{
-	return platform_driver_probe(&at91_cf_driver, at91_cf_probe);
-}
-module_init(at91_cf_init);
-
-static void __exit at91_cf_exit(void)
-{
-	platform_driver_unregister(&at91_cf_driver);
-}
-module_exit(at91_cf_exit);
+module_platform_driver_probe(at91_cf_driver, at91_cf_probe);
 
 MODULE_DESCRIPTION("AT91 Compact Flash Driver");
 MODULE_AUTHOR("David Brownell");
-- 
1.8.2.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 7/7] pcmcia/trivial: at91_cf: fix checkpatch error
  2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
                   ` (5 preceding siblings ...)
  2013-06-06  8:24 ` [PATCH v3 6/7] pcmcia: at91_cf: use module_platform_driver_probe() Nicolas Ferre
@ 2013-06-06  8:24 ` Nicolas Ferre
  2013-06-06 16:14 ` [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Jean-Christophe PLAGNIOL-VILLARD
  7 siblings, 0 replies; 10+ messages in thread
From: Nicolas Ferre @ 2013-06-06  8:24 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: linux-arm-kernel, linux-kernel, Andrew Morton, linux-pcmcia,
	linux, manabian, fabio.porcedda, laurent.navet, Nicolas Ferre

From: Laurent Navet <laurent.navet@gmail.com>

fix this checkpatch error:
- ERROR: switch and case should be at the same indent

Signed-off-by: Laurent Navet <laurent.navet@gmail.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
---
 drivers/pcmcia/at91_cf.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
index 8ddc57c..b8f5acf 100644
--- a/drivers/pcmcia/at91_cf.c
+++ b/drivers/pcmcia/at91_cf.c
@@ -119,14 +119,14 @@ at91_cf_set_socket(struct pcmcia_socket *sock, struct socket_state_t *s)
 	/* switch Vcc if needed and possible */
 	if (gpio_is_valid(cf->board->vcc_pin)) {
 		switch (s->Vcc) {
-			case 0:
-				gpio_set_value(cf->board->vcc_pin, 0);
-				break;
-			case 33:
-				gpio_set_value(cf->board->vcc_pin, 1);
-				break;
-			default:
-				return -EINVAL;
+		case 0:
+			gpio_set_value(cf->board->vcc_pin, 0);
+			break;
+		case 33:
+			gpio_set_value(cf->board->vcc_pin, 1);
+			break;
+		default:
+			return -EINVAL;
 		}
 	}
 
-- 
1.8.2.2


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support
  2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
                   ` (6 preceding siblings ...)
  2013-06-06  8:24 ` [PATCH v3 7/7] pcmcia/trivial: at91_cf: fix checkpatch error Nicolas Ferre
@ 2013-06-06 16:14 ` Jean-Christophe PLAGNIOL-VILLARD
  7 siblings, 0 replies; 10+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-06-06 16:14 UTC (permalink / raw)
  To: Nicolas Ferre
  Cc: Greg Kroah-Hartman, manabian, linux-pcmcia, linux-kernel, linux,
	fabio.porcedda, Andrew Morton, laurent.navet, linux-arm-kernel

On 10:24 Thu 06 Jun     , Nicolas Ferre wrote:
> These patches clean up at91_cf a bit and add DT bindings.
> They are based on a previous series from Joachim Eastwood and other cleanup
> patches by Fabio and Laurent.
> I have collected them together as they are lying around for some time.
> 
> Greg kindly told me that he can take them through his char/misc driver
> tree, so I resend the series.
> 
> Thanks for your help, best regards.
> 
> v3: rebased on top of 3.10-rc4
> 
> v2: add 2 more cleanup patches:
> 	- move to module_platform_driver_probe()
> 	- little trivial indentation fix
on all Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>

Best Regards,
J.
> 
> Fabio Porcedda (1):
>   pcmcia: at91_cf: use module_platform_driver_probe()
> 
> Joachim Eastwood (5):
>   pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status
>   pcmcia: at91_cf: convert to dev_ print functions
>   pcmcia: at91_cf: use devm_ functions for allocations
>   pcmcia: at91_cf: clean up header includes
>   pcmcia: at91_cf: add support for DT
> 
> Laurent Navet (1):
>   pcmcia/trivial: at91_cf: fix checkpatch error
> 
>  .../devicetree/bindings/ata/atmel-at91_cf.txt      |  19 +++
>  drivers/pcmcia/Kconfig                             |   2 +-
>  drivers/pcmcia/at91_cf.c                           | 176 ++++++++++-----------
>  3 files changed, 108 insertions(+), 89 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/ata/atmel-at91_cf.txt
> 
> -- 
> 1.8.2.2
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 1/7] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status
  2013-06-06  8:24 ` [PATCH v3 1/7] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status Nicolas Ferre
@ 2013-06-06 16:15   ` Jean-Christophe PLAGNIOL-VILLARD
  0 siblings, 0 replies; 10+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-06-06 16:15 UTC (permalink / raw)
  To: Nicolas Ferre
  Cc: Greg Kroah-Hartman, manabian, linux-pcmcia, linux-kernel, linux,
	fabio.porcedda, Andrew Morton, laurent.navet, linux-arm-kernel

On 10:24 Thu 06 Jun     , Nicolas Ferre wrote:
> From: Joachim Eastwood <manabian@gmail.com>
> 
> Commit 80af9e6d (pcmcia at91_cf: fix raw gpio number usage) forgot
> to change the parameter in gpio_get_value after adding gpio
> validation.

this is a fix so should for in stable tree too

since #3.4

Best Regards,
J.
> 
> Signed-off-by: Joachim Eastwood <manabian@gmail.com>
> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> ---
>  drivers/pcmcia/at91_cf.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pcmcia/at91_cf.c b/drivers/pcmcia/at91_cf.c
> index 01463c7..1b2c631 100644
> --- a/drivers/pcmcia/at91_cf.c
> +++ b/drivers/pcmcia/at91_cf.c
> @@ -100,9 +100,9 @@ static int at91_cf_get_status(struct pcmcia_socket *s, u_int *sp)
>  		int vcc	= gpio_is_valid(cf->board->vcc_pin);
>  
>  		*sp = SS_DETECT | SS_3VCARD;
> -		if (!rdy || gpio_get_value(rdy))
> +		if (!rdy || gpio_get_value(cf->board->irq_pin))
>  			*sp |= SS_READY;
> -		if (!vcc || gpio_get_value(vcc))
> +		if (!vcc || gpio_get_value(cf->board->vcc_pin))
>  			*sp |= SS_POWERON;
>  	} else
>  		*sp = 0;
> -- 
> 1.8.2.2
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2013-06-06 16:39 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-06  8:24 [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Nicolas Ferre
2013-06-06  8:24 ` [PATCH v3 1/7] pcmcia: at91_cf: fix gpio_get_value in at91_cf_get_status Nicolas Ferre
2013-06-06 16:15   ` Jean-Christophe PLAGNIOL-VILLARD
2013-06-06  8:24 ` [PATCH v3 2/7] pcmcia: at91_cf: convert to dev_ print functions Nicolas Ferre
2013-06-06  8:24 ` [PATCH v3 3/7] pcmcia: at91_cf: use devm_ functions for allocations Nicolas Ferre
2013-06-06  8:24 ` [PATCH v3 4/7] pcmcia: at91_cf: clean up header includes Nicolas Ferre
2013-06-06  8:24 ` [PATCH v3 5/7] pcmcia: at91_cf: add support for DT Nicolas Ferre
2013-06-06  8:24 ` [PATCH v3 6/7] pcmcia: at91_cf: use module_platform_driver_probe() Nicolas Ferre
2013-06-06  8:24 ` [PATCH v3 7/7] pcmcia/trivial: at91_cf: fix checkpatch error Nicolas Ferre
2013-06-06 16:14 ` [PATCH v3 0/7] pcmcia: at91_cf: clean up and add DT support Jean-Christophe PLAGNIOL-VILLARD

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).