aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6Linus Torvalds2010-02-27
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: (49 commits) pcmcia: validate late-added resources pcmcia: allow for extension of resource interval pcmcia: remove useless msleep in ds.c pcmcia: use read_cis_mem return value pcmcia: handle error in serial_cs config calls pcmcia: add locking to pcmcia_{read,write}_cis_mem pcmcia: avoid prod_id memleak pcmcia: avoid sysfs-related lockup for cardbus pcmcia: use state machine for extended requery pcmcia: delay re-scanning and re-querying of PCMCIA bus pcmcia: use pccardd to handle eject, insert, suspend and resume requests pcmcia: use ops_mutex for rsrc_{mgr,nonstatic} locking pcmcia: use mutex for dynid lock pcmcia: assert locking to struct pcmcia_device pcmcia: add locking documentation pcmcia: simplify locking pcmcia: add locking to struct pcmcia_socket->pcmcia_state() pcmcia: protect s->device_count pcmcia: properly lock skt->irq, skt->irq_mask pcmcia: lock ops->set_socket ...
| * pcmcia: validate late-added resourcesDominik Brodowski2010-02-25
| | | | | | | | | | | | | | | | | | | | | | Currently, only those mem resources are validated which are already registered at the time the first PCMCIA card is inserted. As we can only validate resources immediately after card insert, store "registered" mem resources in mem_db, and only upon validation move them to mem_db_valid. When allocationg mem resources, mem_db_valid is then preferred to mem_db. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: allow for extension of resource intervalDominik Brodowski2010-02-17
| | | | | | | | | | | | | | If a new interval overlaps or extends an existing interval in add_interval(), do not fail, but extend the existing interval. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: remove useless msleep in ds.cDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | As this is the socket thread (pccardd) starting up, we do not have anything to wait for in ds.c. Instead, wait the same amount of time in pccardd to allow userspace to catch up and - possibly - execute pcmcia-socket-startup. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: use read_cis_mem return valueDominik Brodowski2010-02-17
| | | | | | | | Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: handle error in serial_cs config callsDominik Brodowski2010-02-17
| | | | | | | | | | | | | | Do not ignore the error returned by simple_config() / multi_config(). CC: linux-serial@vger.kernel.org Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: add locking to pcmcia_{read,write}_cis_memDominik Brodowski2010-02-17
| | | | | | | | Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: avoid prod_id memleakDominik Brodowski2010-02-17
| | | | | | | | | | Reported-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: avoid sysfs-related lockup for cardbusDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | In cb_free(), we remove some sysfs files -- other sysfs files might grab ops_mutex, so we cannot hold it while removing sysfs files. This fixes http://lkml.org/lkml/2010/1/17/88 . Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: use state machine for extended requeryDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | The requery callback now also handles the addition of a second pseudo multifunction device. Avoids messing with dev_{g,s}et_drvdata(), and fixes any workqueue <-> skt_mutex deadlock. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: delay re-scanning and re-querying of PCMCIA busDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | After a CIS update -- or the finalization of the resource database --, proceed with the re-scanning or re-querying of PCMCIA cards only in a separate thread to avoid deadlocks. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: use pccardd to handle eject, insert, suspend and resume requestsDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | This avoids any sysfs-related deadlock (or lockdep warning), such as reported at http://lkml.org/lkml/2010/1/17/88 . Reported-by: Ming Lei <tom.leiming@gmail.com> Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: use ops_mutex for rsrc_{mgr,nonstatic} lockingDominik Brodowski2010-02-17
| | | | | | | | | | Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: use mutex for dynid lockDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | | | Even though we weren't calling a blocking function within the dynid spinlock, we do not need a spinlock here but can and should be using a mutex. Reported-by: Jiri Slaby <jirislaby@gmail.com> Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: assert locking to struct pcmcia_deviceDominik Brodowski2010-02-17
| | | | | | | | | | Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: add locking documentationDominik Brodowski2010-02-17
| | | | | | | | | | Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: simplify lockingDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | replace pcmcia_socket->lock and pcmcia_dev_list_lock by using the per-socket "ops_mutex", as we do neither need different locks nor a spinlock here. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: add locking to struct pcmcia_socket->pcmcia_state()Dominik Brodowski2010-02-17
| | | | | | | | | | Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: protect s->device_countDominik Brodowski2010-02-17
| | | | | | | | | | Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: properly lock skt->irq, skt->irq_maskDominik Brodowski2010-02-17
| | | | | | | | | | Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: lock ops->set_socketDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | | | | | As a side effect, socket_state_t socket; u_int state; u_int suspended_state; are properly protected now. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: lock ops->set_io_map()Dominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | As a side effect, io_window_t io[MAX_IO_WIN]; is explicitely protected now. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: also lock fake and cache CIS by ops_mutexDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | Specifically, struct list_head cis_cache; size_t fake_cis_len; u8 *fake_cis; are protected. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: add locking to set_mem_map()Dominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | Protect the pccard_operations callback "set_mem_map" by a new mutex ops_mutex. This mutex also protects the following values in struct pcmcia_socket: pccard_mem_map win[] pccard_mem_map cis_mem void __iomem *cis_virt Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia/i82365: fix typos in commentsWolfram Sang2010-02-17
| | | | | | | | | | Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia/omap_cf: don't redefine SZ_2KUwe Kleine-König2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes: drivers/pcmcia/omap_cf.c:74:1: warning: "SZ_2K" redefined Since c1191b0 ([ARM] Kirkwood: create a mapping for the Security Accelerator SRAM) SZ_2K is defined in arch/arm/include/asm/sizes.h. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia/at91_cf: don't redefine SZ_2KUwe Kleine-König2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes: drivers/pcmcia/at91_cf.c:55:1: warning: "SZ_2K" redefined Since c1191b0 ([ARM] Kirkwood: create a mapping for the Security Accelerator SRAM) SZ_2K is defined in arch/arm/include/asm/sizes.h. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Acked-by: Andrew Victor <linux@maxim.org.za> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia/bfin_cf: don't check platform_get_irq's return value against zeroUwe Kleine-König2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | platform_get_irq returns -ENXIO on failure, so !irq was probably always true. Better use irq <= 0. Note that a return value of zero is still handled as error even though this could mean irq0. This is a followup to 305b3228f9ff4d59f49e6d34a7034d44ee8ce2f0 that changed the return value of platform_get_irq from 0 to -ENXIO on error. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Cc: David Vrabel <dvrabel@arcom.com> Cc: Greg Kroah-Hartman <gregkh@suse.de> Cc: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia/yenta: add module parameter for O2 speedupsWolfram Sang2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | O2-bridges can do read prefetch and write burst. However, for some combinations of older bridges and cards, this causes problems, so it is disabled for those bridges. Now, as some users know their setup works with the speedups enabled, a new parameter is introduced to the driver. Now, a user can specifically enable or disable these features, while the default is what we have today: detect the bridge and decide accordingly. Fixes Bugzilla entry 15014. Simplify and unify the printouts, fix a whitespace issue while we are here. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Tested-by: frodone@gmail.com [linux@dominikbrodowski.net: whitespace fixes] Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: make Open Firmware device id constantMárton Németh2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The match_table field of the struct of_device_id is constant in <linux/of_platform.h> so it is worth to make the initialization data also constant. The semantic match that finds this kind of pattern is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r@ disable decl_init,const_decl_init; identifier I1, I2, x; @@ struct I1 { ... const struct I2 *x; ... }; @s@ identifier r.I1, y; identifier r.x, E; @@ struct I1 y = { .x = E, }; @c@ identifier r.I2; identifier s.E; @@ const struct I2 E[] = ... ; @depends on !c@ identifier r.I2; identifier s.E; @@ + const struct I2 E[] = ...; // </smpl> Signed-off-by: Márton Németh <nm127@freemail.hu> Cc: Julia Lawall <julia@diku.dk> Cc: cocci@diku.dk Acked-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * cm4000_cs.c: Remove unnecessary castH Hartley Sweeten2010-02-17
| | | | | | | | | | | | | | | | The struct file 'private_data' member is a void *, the cast is not needed. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Cc: Harald Welte <laforge@gnumonks.org> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: fix yenta dependency on PCCARD_NONSTATICMichal Marek2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With CONFIG_PCMCIA=m and CONFIG_YENTA=y, we get drivers/built-in.o: In function `yenta_probe': yenta_socket.c:(.devinit.text+0x1e582): undefined reference to `pccard_nonstatic_ops' This is because select PCCARD_NONSTATIC if PCMCIA sets PCCARD_NONSTATIC = min(YENTA, PCMCIA). Change it to 'if PCMCIA!=n' to remove the upper limit. [linux@dominikbrodowski.net: propagate change to PCMICA_M8XX] Reported-by: Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: Michal Marek <mmarek@suse.cz> Acked-by: Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: do not use resource manager on !PCMCIADominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | If only CardBus cards are used, but not PCMCIA cards, we do not need the extensive resource management functions provided for by rsrc_nonstatic.c (~240K). Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: remove remaining rsrc_mgr indirectionsDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | Move rsrc_mgr indirections only used by the pcmcia module to the pcmcia module. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: move cistpl.c into pcmcia moduleDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | As PCMCIA is the only real user of CIS access functions, include cistpl.c in the PCMCIA module, not in the PCMCIA & CardBus core module. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: m8xx_pcmcia.c should use iodyn resource managerDominik Brodowski2010-02-17
| | | | | | | | | | | | | | | | | | | | | | | | The socket driver m8xx_pcmcia.c uses a static memory assignment, but io_offset is set to 0. Therefore, it seems proper to use the iodyn resource manager for this driver, as was previously the case (before commit 80128ff79d282cf71b1819dbca9b8dd47d8ed3e8). CC: Vitaly Bordug <vitb@kernel.crashing.org> CC: Arnd Bergmann <arnd@arndb.de> CC: Olof Johansson <olof@lixom.net> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: m32r uses static socket resourcesDominik Brodowski2010-01-24
| | | | | | | | | | | | | | | | | | | | | | | | m32r_cfc sets the socket capabilities to SS_CAP_STATIC_MAP and also sets io_offset != 0. This means no calls to &pccard_nonstatic_ops went through. Therfore, replace it with &pccard_static_ops which is exactly for this case. CC: Mamoru Sakugawa <sakugawa@linux-m32r.org> CC: Hirokazu Takata <takata@linux-m32r.org> Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: remove some rsrc_mgr indirectionsDominik Brodowski2010-01-24
| | | | | | | | | | | | | | Remove rsrc_mgr indirections only used by pcmcia_resource.c Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: remove useless indirectionDominik Brodowski2010-01-24
| | | | | | | | | | | | | | | | As release_resoure_db() used to be called only from one place, and it's a two-line function, remove it. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: do not lock socket driver module on card insertDominik Brodowski2010-01-24
| | | | | | | | | | | | | | | | Do not lock the socket driver module on card insert, as the PCMCIA core can handle a socket module removal, at least if we add a call to socket_remove() on pccardd()'s shutdown. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: do not lock socket driver module in pcmcia_get_socket()Dominik Brodowski2010-01-17
| | | | | | | | | | | | | | | | | | | | Do not lock the socket driver module in pcmcia_get_socket(), as the PCMCIA core can handle a socket module removal: In pcmcia_unregister_socket(), we explicitely wait for the last put_device() to succeed. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: rsrc_nonstatic io memory probe improvementsDominik Brodowski2010-01-17
| | | | | | | | | | | | | | | | | | Add a lot of documentation to the rsrc_nonstatic io memory probe functions. Also, add a first memory probe call -- just checking whether request_resource() succeeds -- upon adding of resources. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: call CIS cleanup from ds.cDominik Brodowski2010-01-17
| | | | | | | | | | | | | | As ds.c is the only real user of CIS access functions, call the cleanup functions from ds.c, too. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: CardBus doesn't need CIS accessDominik Brodowski2010-01-17
| | | | | | | | | | | | | | | | | | | | | | At least no in-kernel CardBus-capable PCI driver makes use of the CIS access functions. Therefore, it seems sensible to remove this unused code, and cleanup cardbus.c a lot. CC: Jesse Barnes <jbarnes@virtuousgeek.org> CC: Linus Torvalds <torvalds@linux-foundation.org> Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: improve check for same card in slot after resumeDominik Brodowski2010-01-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During a suspend/resume cycle, an user may change the card in the PCMCIA/CardBus slot. The pcmcia_core can at least look at the socket state to check whether it is the same. For PCMCIA devices, move the detection and handling of such a change to ds.c. For CardBus devices, the PCI hotplug interface doesn't offer a "rescan" facility which also _removes_ devices no longer to be found behind a bridge. Therefore, remove and re-add all devices unconditionally. CC: Jesse Barnes <jbarnes@virtuousgeek.org> CC: Linus Torvalds <torvalds@linux-foundation.org> Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: cleanup pccard_validate_cis()Dominik Brodowski2010-01-17
| | | | | | | | | | | | | | | | Cleanup pccard_validate_cis() and make it return an error code on all failures, not merely on some failures. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: validate CIS, not CIS cache.Dominik Brodowski2010-01-17
| | | | | | | | | | | | | | | | | | | | | | In pccard_validate_cis(), validate the card CIS, not the CIS cache. Also, destroy the CIS cache if pccard_validate_cis fails. Furthermore, do not remove the fake CIS in destroy_cis_cache() but do so explicitely in the code paths where it makes sense. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: do not meddle with already assigned resourcesDominik Brodowski2010-01-17
| | | | | | | | | | | | | | Do not release any iomem resources already in use. Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: remove remaining unused IRQ_FIRST_SHARED parameterDominik Brodowski2010-01-17
| | | | | | | | | | | | | | | | | | | | | | Komuro pointed out correctly that I missed one IRQ_FIRST_SHARED parameter in smc91c92_cs.c, and that another line could be writter more beautifully. CC: netdev@vger.kernel.org CC: Komuro <komurojun-mbn@nifty.com> Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: make use of pcmcia_dev_resume() return valueDominik Brodowski2010-01-17
| | | | | | | | | | | | | | | | | | | | | | In runtime_resume(), do not throw away the return value of pcmcia_dev_resume(), for we can use it (at least) in pcmcia_store_pm_state(). This also fixes the pointless assignment previosly seen there, as noted by Dan Carpenter. CC: Dan Carpenter <error27@gmail.com> Tested-by: Wolfram Sang <w.sang@pengutronix.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>