Re: [PATCH v3] pcmcia: CompactFlash driver for PA Semi Electra boards

2007-07-21 Thread Olof Johansson
On Fri, Jul 20, 2007 at 04:48:23PM -0700, Andrew Morton wrote:

> > Who's maintaining PCMCIA? MAINTAINERS only lists a mailing list, no person. 
> > Seems
> > weird for a component that's marked as maintained.
> 
> Dominik Brodowski.  He's having a bit of downtime at present (exams, I
> think).  He expects to return.  Meanwhile, cc'ing me usually has some
> effect.

Thanks!

> > +static const char driver_name[] = "electra-cf";
> >
> > ...
> >
> > +static struct of_device_id electra_cf_match[] =
> > +{
> > +   {
> > +   .compatible   = "electra-cf",
> > +   },
> > +   {},
> > +};
> 
> Could have reused driver_name[] here, if that was appropriate.

Driver name and device tree compatible field is not neccessarily the same,
even though they do coincide here.

> > --- mainline.orig/arch/powerpc/platforms/pasemi/setup.c
> > +++ mainline/arch/powerpc/platforms/pasemi/setup.c
> 
> I never know who maintains random-scruffy-ppc code like this.  From a peek
> in the git-whatchanged output, it appears to be yourself.

Check the top of the file. :)  (Kumar started doing that, I kept it up,
seems useful). And yes, we do tend to have per-platform maintainers
on ppc.

> Have a few little fixies:

Thanks!

Acked-by: Olof Johansson <[EMAIL PROTECTED]>

> --- 
> a/drivers/pcmcia/electra_cf.c~pcmcia-compactflash-driver-for-pa-semi-electra-boards-fix
> +++ a/drivers/pcmcia/electra_cf.c
[...]

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3] pcmcia: CompactFlash driver for PA Semi Electra boards

2007-07-21 Thread Olof Johansson
On Fri, Jul 20, 2007 at 04:48:23PM -0700, Andrew Morton wrote:

  Who's maintaining PCMCIA? MAINTAINERS only lists a mailing list, no person. 
  Seems
  weird for a component that's marked as maintained.
 
 Dominik Brodowski.  He's having a bit of downtime at present (exams, I
 think).  He expects to return.  Meanwhile, cc'ing me usually has some
 effect.

Thanks!

  +static const char driver_name[] = electra-cf;
 
  ...
 
  +static struct of_device_id electra_cf_match[] =
  +{
  +   {
  +   .compatible   = electra-cf,
  +   },
  +   {},
  +};
 
 Could have reused driver_name[] here, if that was appropriate.

Driver name and device tree compatible field is not neccessarily the same,
even though they do coincide here.

  --- mainline.orig/arch/powerpc/platforms/pasemi/setup.c
  +++ mainline/arch/powerpc/platforms/pasemi/setup.c
 
 I never know who maintains random-scruffy-ppc code like this.  From a peek
 in the git-whatchanged output, it appears to be yourself.

Check the top of the file. :)  (Kumar started doing that, I kept it up,
seems useful). And yes, we do tend to have per-platform maintainers
on ppc.

 Have a few little fixies:

Thanks!

Acked-by: Olof Johansson [EMAIL PROTECTED]

 --- 
 a/drivers/pcmcia/electra_cf.c~pcmcia-compactflash-driver-for-pa-semi-electra-boards-fix
 +++ a/drivers/pcmcia/electra_cf.c
[...]

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3] pcmcia: CompactFlash driver for PA Semi Electra boards

2007-07-20 Thread Andrew Morton
On Thu, 5 Jul 2007 09:49:14 -0500
[EMAIL PROTECTED] (Olof Johansson) wrote:

> Driver for the CompactFlash slot on the PA Semi Electra eval board. It's
> a simple device sitting on localbus, with interrupts and detect/voltage
> control over GPIO.
> 
> The driver is implemented as an of_platform driver, and adds localbus
> as a bus being probed by the of_platform framework.
> 
> 
> Signed-off-by: Olof Johansson <[EMAIL PROTECTED]>
> 
> ---
> 
> On Mon, Jun 25, 2007 at 03:43:41PM -0500, olof wrote:
> 
> > The ifdef is needed since for CONFIG_PCMCIA=n builds, the bus notifier
> > isn't available. I wanted to do the bus notifier registration explicitly
> > before the of_platform bus probe to avoid later surprises due to reordered
> > initcalls in case it was split up in it's own initcall.
> > 
> > I could add the code under ifdef as well, but it didn't seem too
> > critical. Once the second major board comes along I'll probably move it
> > out to a per-board file, there's no real need for it just yet.
> 
> Alright, turns out I still need to declare the extern bus type, which would 
> mean
> two #ifdefs in one function. Moving it out instead.
> 
> I've addressed Milton's comments as well.
> 
> Who's maintaining PCMCIA? MAINTAINERS only lists a mailing list, no person. 
> Seems
> weird for a component that's marked as maintained.

Dominik Brodowski.  He's having a bit of downtime at present (exams, I
think).  He expects to return.  Meanwhile, cc'ing me usually has some
effect.

>
> ...
>
> +static const char driver_name[] = "electra-cf";
>
> ...
>
> +static struct of_device_id electra_cf_match[] =
> +{
> + {
> + .compatible   = "electra-cf",
> + },
> + {},
> +};

Could have reused driver_name[] here, if that was appropriate.

> +static struct of_platform_driver electra_cf_driver =
> +{
> + .name  = (char *)driver_name,

ug.  But it's not your fault - we should have always made it const.

> --- mainline.orig/arch/powerpc/platforms/pasemi/setup.c
> +++ mainline/arch/powerpc/platforms/pasemi/setup.c

I never know who maintains random-scruffy-ppc code like this.  From a peek
in the git-whatchanged output, it appears to be yourself.


Have a few little fixies:

--- 
a/drivers/pcmcia/electra_cf.c~pcmcia-compactflash-driver-for-pa-semi-electra-boards-fix
+++ a/drivers/pcmcia/electra_cf.c
@@ -201,9 +201,7 @@ static int __devinit electra_cf_probe(st
if (!cf)
return -ENOMEM;
 
-   init_timer(>timer);
-   cf->timer.function = electra_cf_timer;
-   cf->timer.data = (unsigned long) cf;
+   setup_timer(>timer, electra_cf_timer, (unsigned long)cf);
cf->irq = NO_IRQ;
 
cf->ofdev = ofdev;
@@ -340,16 +338,14 @@ static int __devexit electra_cf_remove(s
return 0;
 }
 
-static struct of_device_id electra_cf_match[] =
-{
+static struct of_device_id electra_cf_match[] = {
{
.compatible   = "electra-cf",
},
{},
 };
 
-static struct of_platform_driver electra_cf_driver =
-{
+static struct of_platform_driver electra_cf_driver = {
.name  = (char *)driver_name,
.match_table= electra_cf_match,
.probe= electra_cf_probe,
@@ -371,4 +367,3 @@ module_exit(electra_cf_exit);
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR ("Olof Johansson <[EMAIL PROTECTED]>");
 MODULE_DESCRIPTION("PA Semi Electra CF driver");
-
_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3] pcmcia: CompactFlash driver for PA Semi Electra boards

2007-07-20 Thread Andrew Morton
On Thu, 5 Jul 2007 09:49:14 -0500
[EMAIL PROTECTED] (Olof Johansson) wrote:

 Driver for the CompactFlash slot on the PA Semi Electra eval board. It's
 a simple device sitting on localbus, with interrupts and detect/voltage
 control over GPIO.
 
 The driver is implemented as an of_platform driver, and adds localbus
 as a bus being probed by the of_platform framework.
 
 
 Signed-off-by: Olof Johansson [EMAIL PROTECTED]
 
 ---
 
 On Mon, Jun 25, 2007 at 03:43:41PM -0500, olof wrote:
 
  The ifdef is needed since for CONFIG_PCMCIA=n builds, the bus notifier
  isn't available. I wanted to do the bus notifier registration explicitly
  before the of_platform bus probe to avoid later surprises due to reordered
  initcalls in case it was split up in it's own initcall.
  
  I could add the code under ifdef as well, but it didn't seem too
  critical. Once the second major board comes along I'll probably move it
  out to a per-board file, there's no real need for it just yet.
 
 Alright, turns out I still need to declare the extern bus type, which would 
 mean
 two #ifdefs in one function. Moving it out instead.
 
 I've addressed Milton's comments as well.
 
 Who's maintaining PCMCIA? MAINTAINERS only lists a mailing list, no person. 
 Seems
 weird for a component that's marked as maintained.

Dominik Brodowski.  He's having a bit of downtime at present (exams, I
think).  He expects to return.  Meanwhile, cc'ing me usually has some
effect.


 ...

 +static const char driver_name[] = electra-cf;

 ...

 +static struct of_device_id electra_cf_match[] =
 +{
 + {
 + .compatible   = electra-cf,
 + },
 + {},
 +};

Could have reused driver_name[] here, if that was appropriate.

 +static struct of_platform_driver electra_cf_driver =
 +{
 + .name  = (char *)driver_name,

ug.  But it's not your fault - we should have always made it const.

 --- mainline.orig/arch/powerpc/platforms/pasemi/setup.c
 +++ mainline/arch/powerpc/platforms/pasemi/setup.c

I never know who maintains random-scruffy-ppc code like this.  From a peek
in the git-whatchanged output, it appears to be yourself.


Have a few little fixies:

--- 
a/drivers/pcmcia/electra_cf.c~pcmcia-compactflash-driver-for-pa-semi-electra-boards-fix
+++ a/drivers/pcmcia/electra_cf.c
@@ -201,9 +201,7 @@ static int __devinit electra_cf_probe(st
if (!cf)
return -ENOMEM;
 
-   init_timer(cf-timer);
-   cf-timer.function = electra_cf_timer;
-   cf-timer.data = (unsigned long) cf;
+   setup_timer(cf-timer, electra_cf_timer, (unsigned long)cf);
cf-irq = NO_IRQ;
 
cf-ofdev = ofdev;
@@ -340,16 +338,14 @@ static int __devexit electra_cf_remove(s
return 0;
 }
 
-static struct of_device_id electra_cf_match[] =
-{
+static struct of_device_id electra_cf_match[] = {
{
.compatible   = electra-cf,
},
{},
 };
 
-static struct of_platform_driver electra_cf_driver =
-{
+static struct of_platform_driver electra_cf_driver = {
.name  = (char *)driver_name,
.match_table= electra_cf_match,
.probe= electra_cf_probe,
@@ -371,4 +367,3 @@ module_exit(electra_cf_exit);
 MODULE_LICENSE(GPL);
 MODULE_AUTHOR (Olof Johansson [EMAIL PROTECTED]);
 MODULE_DESCRIPTION(PA Semi Electra CF driver);
-
_

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v3] pcmcia: CompactFlash driver for PA Semi Electra boards

2007-07-05 Thread Olof Johansson
Driver for the CompactFlash slot on the PA Semi Electra eval board. It's
a simple device sitting on localbus, with interrupts and detect/voltage
control over GPIO.

The driver is implemented as an of_platform driver, and adds localbus
as a bus being probed by the of_platform framework.


Signed-off-by: Olof Johansson <[EMAIL PROTECTED]>

---

On Mon, Jun 25, 2007 at 03:43:41PM -0500, olof wrote:

> The ifdef is needed since for CONFIG_PCMCIA=n builds, the bus notifier
> isn't available. I wanted to do the bus notifier registration explicitly
> before the of_platform bus probe to avoid later surprises due to reordered
> initcalls in case it was split up in it's own initcall.
> 
> I could add the code under ifdef as well, but it didn't seem too
> critical. Once the second major board comes along I'll probably move it
> out to a per-board file, there's no real need for it just yet.

Alright, turns out I still need to declare the extern bus type, which would mean
two #ifdefs in one function. Moving it out instead.

I've addressed Milton's comments as well.

Who's maintaining PCMCIA? MAINTAINERS only lists a mailing list, no person. 
Seems
weird for a component that's marked as maintained.


Index: mainline/drivers/pcmcia/Kconfig
===
--- mainline.orig/drivers/pcmcia/Kconfig
+++ mainline/drivers/pcmcia/Kconfig
@@ -270,6 +270,13 @@ config AT91_CF
  Say Y here to support the CompactFlash controller on AT91 chips.
  Or choose M to compile the driver as a module named "at91_cf".
 
+config ELECTRA_CF
+   bool "Electra CompactFlash Controller"
+   depends on PCMCIA=y && PPC_PASEMI
+   help
+ Say Y here to support the CompactFlash controller on the
+ PA Semi Electra eval board.
+
 config PCCARD_NONSTATIC
tristate
 
Index: mainline/drivers/pcmcia/Makefile
===
--- mainline.orig/drivers/pcmcia/Makefile
+++ mainline/drivers/pcmcia/Makefile
@@ -37,6 +37,7 @@ obj-$(CONFIG_PCMCIA_VRC4171)  += vrc417
 obj-$(CONFIG_PCMCIA_VRC4173)   += vrc4173_cardu.o
 obj-$(CONFIG_OMAP_CF)  += omap_cf.o
 obj-$(CONFIG_AT91_CF)  += at91_cf.o
+obj-$(CONFIG_ELECTRA_CF)   += electra_cf.o
 
 sa11xx_core-y  += soc_common.o sa11xx_base.o
 pxa2xx_core-y  += soc_common.o pxa2xx_base.o
Index: mainline/drivers/pcmcia/electra_cf.c
===
--- /dev/null
+++ mainline/drivers/pcmcia/electra_cf.c
@@ -0,0 +1,374 @@
+/*
+ * Copyright (C) 2007 PA Semi, Inc
+ *
+ * Maintained by: Olof Johansson <[EMAIL PROTECTED]>
+ *
+ * Based on drivers/pcmcia/omap_cf.c
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+#include 
+
+static const char driver_name[] = "electra-cf";
+
+struct electra_cf_socket {
+   struct pcmcia_socketsocket;
+
+   struct timer_list   timer;
+   unsignedpresent:1;
+   unsignedactive:1;
+
+   struct of_device*ofdev;
+   unsigned long   mem_phys;
+   void __iomem *  mem_base;
+   unsigned long   mem_size;
+   void __iomem *  io_virt;
+   unsigned intio_base;
+   unsigned intio_size;
+   u_int   irq;
+   struct resource iomem;
+   void __iomem *  gpio_base;
+   int gpio_detect;
+   int gpio_vsense;
+   int gpio_3v;
+   int gpio_5v;
+};
+
+#definePOLL_INTERVAL   (2 * HZ)
+
+
+static int electra_cf_present(struct electra_cf_socket *cf)
+{
+   unsigned int gpio;
+
+   gpio = in_le32(cf->gpio_base+0x40);
+   return !(gpio & (1 << cf->gpio_detect));
+}
+
+static int electra_cf_ss_init(struct pcmcia_socket *s)
+{
+   return 0;
+}
+
+/* the timer is primarily to kick this socket's pccardd */
+static void electra_cf_timer(unsigned long _cf)
+{
+   struct electra_cf_socket 

[PATCH v3] pcmcia: CompactFlash driver for PA Semi Electra boards

2007-07-05 Thread Olof Johansson
Driver for the CompactFlash slot on the PA Semi Electra eval board. It's
a simple device sitting on localbus, with interrupts and detect/voltage
control over GPIO.

The driver is implemented as an of_platform driver, and adds localbus
as a bus being probed by the of_platform framework.


Signed-off-by: Olof Johansson [EMAIL PROTECTED]

---

On Mon, Jun 25, 2007 at 03:43:41PM -0500, olof wrote:

 The ifdef is needed since for CONFIG_PCMCIA=n builds, the bus notifier
 isn't available. I wanted to do the bus notifier registration explicitly
 before the of_platform bus probe to avoid later surprises due to reordered
 initcalls in case it was split up in it's own initcall.
 
 I could add the code under ifdef as well, but it didn't seem too
 critical. Once the second major board comes along I'll probably move it
 out to a per-board file, there's no real need for it just yet.

Alright, turns out I still need to declare the extern bus type, which would mean
two #ifdefs in one function. Moving it out instead.

I've addressed Milton's comments as well.

Who's maintaining PCMCIA? MAINTAINERS only lists a mailing list, no person. 
Seems
weird for a component that's marked as maintained.


Index: mainline/drivers/pcmcia/Kconfig
===
--- mainline.orig/drivers/pcmcia/Kconfig
+++ mainline/drivers/pcmcia/Kconfig
@@ -270,6 +270,13 @@ config AT91_CF
  Say Y here to support the CompactFlash controller on AT91 chips.
  Or choose M to compile the driver as a module named at91_cf.
 
+config ELECTRA_CF
+   bool Electra CompactFlash Controller
+   depends on PCMCIA=y  PPC_PASEMI
+   help
+ Say Y here to support the CompactFlash controller on the
+ PA Semi Electra eval board.
+
 config PCCARD_NONSTATIC
tristate
 
Index: mainline/drivers/pcmcia/Makefile
===
--- mainline.orig/drivers/pcmcia/Makefile
+++ mainline/drivers/pcmcia/Makefile
@@ -37,6 +37,7 @@ obj-$(CONFIG_PCMCIA_VRC4171)  += vrc417
 obj-$(CONFIG_PCMCIA_VRC4173)   += vrc4173_cardu.o
 obj-$(CONFIG_OMAP_CF)  += omap_cf.o
 obj-$(CONFIG_AT91_CF)  += at91_cf.o
+obj-$(CONFIG_ELECTRA_CF)   += electra_cf.o
 
 sa11xx_core-y  += soc_common.o sa11xx_base.o
 pxa2xx_core-y  += soc_common.o pxa2xx_base.o
Index: mainline/drivers/pcmcia/electra_cf.c
===
--- /dev/null
+++ mainline/drivers/pcmcia/electra_cf.c
@@ -0,0 +1,374 @@
+/*
+ * Copyright (C) 2007 PA Semi, Inc
+ *
+ * Maintained by: Olof Johansson [EMAIL PROTECTED]
+ *
+ * Based on drivers/pcmcia/omap_cf.c
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+#include linux/module.h
+#include linux/kernel.h
+#include linux/sched.h
+#include linux/platform_device.h
+#include linux/errno.h
+#include linux/init.h
+#include linux/delay.h
+#include linux/interrupt.h
+
+#include pcmcia/ss.h
+#include asm/of_platform.h
+
+static const char driver_name[] = electra-cf;
+
+struct electra_cf_socket {
+   struct pcmcia_socketsocket;
+
+   struct timer_list   timer;
+   unsignedpresent:1;
+   unsignedactive:1;
+
+   struct of_device*ofdev;
+   unsigned long   mem_phys;
+   void __iomem *  mem_base;
+   unsigned long   mem_size;
+   void __iomem *  io_virt;
+   unsigned intio_base;
+   unsigned intio_size;
+   u_int   irq;
+   struct resource iomem;
+   void __iomem *  gpio_base;
+   int gpio_detect;
+   int gpio_vsense;
+   int gpio_3v;
+   int gpio_5v;
+};
+
+#definePOLL_INTERVAL   (2 * HZ)
+
+
+static int electra_cf_present(struct electra_cf_socket *cf)
+{
+   unsigned int gpio;
+
+   gpio = in_le32(cf-gpio_base+0x40);
+   return !(gpio  (1  cf-gpio_detect));
+}
+
+static int electra_cf_ss_init(struct pcmcia_socket *s)
+{
+   return 0;
+}
+
+/* the timer is