Re: [PATCH v3] pcmcia: CompactFlash driver for PA Semi Electra boards
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
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
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