summaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia
Commit message (Collapse)AuthorAgeFilesLines
* platform driver: fix incorrect use of 'platform_bus_type' with 'struct ↵Ming Lei2009-03-247-68/+159
| | | | | | | | | | | | | | | | | | | | | | device_driver' This patch fixes the bug reported in http://bugzilla.kernel.org/show_bug.cgi?id=11681. "Lots of device drivers register a 'struct device_driver' with the '.bus' member set to '&platform_bus_type'. This is wrong, since the platform_bus functions expect the 'struct device_driver' to be wrapped up in a 'struct platform_driver' which provides some additional callbacks (like suspend_late, resume_early). The effect may be that platform_suspend_late() uses bogus data outside the device_driver struct as a pointer pointer to the device driver's suspend_late() function or other hard to reproduce failures."(Lothar Wassmann) Signed-off-by: Ming Lei <tom.leiming@gmail.com> Acked-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> Acked-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* pcmcia: struct device - replace bus_id with dev_name(), dev_set_name()Kay Sievers2009-03-241-1/+1
| | | | | | | Cc: Dominik Brodowski <linux@dominikbrodowski.net> Cc: linux-pcmcia@lists.infradead.org Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
* powerpc: Change u64/s64 to a long long integer typeIngo Molnar2009-01-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | Convert arch/powerpc/ over to long long based u64: -#ifdef __powerpc64__ -# include <asm-generic/int-l64.h> -#else -# include <asm-generic/int-ll64.h> -#endif +#include <asm-generic/int-ll64.h> This will avoid reoccuring spurious warnings in core kernel code that comes when people test on their own hardware. (i.e. x86 in ~98% of the cases) This is what x86 uses and it generally helps keep 64-bit code 32-bit clean too. [Adjusted to not impact user mode (from paulus) - sfr] Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
* Merge branch 'mxc-pu-imxfb' of ↵Russell King2008-12-171-1/+1
|\ | | | | | | git://pasiphae.extern.pengutronix.de/git/imx/linux-2.6 into devel
| * pcmcia: blackfin: fix bug - add missing ; to MODULE macroMike Frysinger2008-12-151-1/+1
| | | | | | | | | | | | | | | | | | Cc: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Bryan Wu <cooloney@kernel.org> Cc: Dominik Brodowski <linux@dominikbrodowski.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | [PCMCIA] e740 PCMCIA socket driver.Ian Molton2008-12-153-1/+178
|/ | | | | | | This patch adds the platform specific support needed to control the PCMCIA hardware on the Toshiba e740. Signed-off-by: Ian Molton <spyro@f2s.com>
* pcmcia: ensure correct logging in do_io_probeDominik Brodowski2008-11-091-6/+6
| | | | Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
* pcmcia: add braces in error pathDominik Brodowski2008-11-021-1/+2
| | | | Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
* pcmcia: struct device - replace bus_id with dev_name(), dev_set_name()Kay Sievers2008-11-023-9/+8
| | | | | | Signed-Off-By: Kay Sievers <kay.sievers@vrfy.org> Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
* pcmcia: setup resource information for pseudo multifunction devices.Komuro2008-11-021-0/+2
| | | | | | | Setup "io" and "irq" for pseudo multifunction devices. Signed-off-by: Komuro <komurojun-mbn@nifty.com> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
* pcmcia: fix indentation & braces disagreement - add bracesIlpo Järvinen2008-11-011-1/+2
| | | | | | | | Broken by d8b0a49da4f2 (pcmcia: deprecate CS_BAD_VCC and CS_BAD_VPP). Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
* Merge branch 'master' of ↵Paul Mundt2008-10-311-1/+2
|\ | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
| * Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6Linus Torvalds2008-10-301-1/+2
| |\ | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: fdomain_cs: Sort out modules with duplicate description pcmcia: Whine harder about use of EXCLUSIVE pcmcia: IRQ_TYPE_EXCLUSIVE is long obsoleted
| | * pcmcia: Whine harder about use of EXCLUSIVEAlan Cox2008-10-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | The exclusive IRQ line support is a legacy and any remaining drivers that cannot share interrupts need tidying up so whine harder about them. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
* | | sh: Kill off long-dead HD64465 cchip support.Paul Mundt2008-10-283-944/+0
|/ / | | | | | | | | | | | | | | | | | | This code has been dead for many years. The last update it received was in 2003 in order to update it for the driver model changes, though it had already been in disarray and unused before that point. The only boards that ever used this chip have not had users in many years either, so it is finally safe to just kill it off and move on with life. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
* | Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-armLinus Torvalds2008-10-231-1/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] clps711x: add sparsemem definitions [ARM] 5315/1: Fix section mismatch warning (sa1111) [ARM] Orion: activate workaround for 88f6183 SPI clock erratum [ARM] Orion: instantiate the dsa switch driver [ARM] mv78xx0: force link speed/duplex on eth2/eth3 [ARM] remove extra brace in arch/arm/mach-pxa/trizeps4.c [ARM] balance parenthesis in header file [ARM] pxa: fix trizeps PCMCIA build [ARM] pxa: fix trizeps defconfig [ARM] dmabounce requires ZONE_DMA [ARM] 5303/1: period_cycles should be greater than 1 [ARM] 5310/1: Fix cache flush functions for ARMv4 [ARM] pxa: fix 3bca103a1e658d23737d20e1989139d9ca8973bf [ARM] pxa: fix redefinition of NR_IRQS [ARM] S3C24XX: Fix redefine of DEFINE_TIMER() in s3c24xx pwm-clock.c [ARM] S3C2443: Fix HCLK rate [ARM] S3C24XX: Serial driver debug depends on DEBUG_LL [ARM] S3C24XX: pwm-clock set_parent mask fix
| * | [ARM] pxa: fix trizeps PCMCIA buildRussell King2008-10-171-1/+1
| |/ | | | | | | Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* | Merge branch 'genirq-v28-for-linus' of ↵Linus Torvalds2008-10-203-5/+11
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip This merges branches irq/genirq, irq/sparseirq-v4, timers/hpet-percpu and x86/uv. The sparseirq branch is just preliminary groundwork: no sparse IRQs are actually implemented by this tree anymore - just the new APIs are added while keeping the old way intact as well (the new APIs map 1:1 to irq_desc[]). The 'real' sparse IRQ support will then be a relatively small patch ontop of this - with a v2.6.29 merge target. * 'genirq-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (178 commits) genirq: improve include files intr_remapping: fix typo io_apic: make irq_mis_count available on 64-bit too genirq: fix name space collisions of nr_irqs in arch/* genirq: fix name space collision of nr_irqs in autoprobe.c genirq: use iterators for irq_desc loops proc: fixup irq iterator genirq: add reverse iterator for irq_desc x86: move ack_bad_irq() to irq.c x86: unify show_interrupts() and proc helpers x86: cleanup show_interrupts genirq: cleanup the sparseirq modifications genirq: remove artifacts from sparseirq removal genirq: revert dynarray genirq: remove irq_to_desc_alloc genirq: remove sparse irq code genirq: use inline function for irq_to_desc genirq: consolidate nr_irqs and for_each_irq_desc() x86: remove sparse irq from Kconfig genirq: define nr_irqs for architectures with GENERIC_HARDIRQS=n ...
| * generic: sparse irqs: use irq_desc() together with dyn_array, instead of ↵Yinghai Lu2008-10-161-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | irq_desc[] add CONFIG_HAVE_SPARSE_IRQ to for use condensed array. Get rid of irq_desc[] array assumptions. Preallocate 32 irq_desc, and irq_desc() will try to get more. ( No change in functionality is expected anywhere, except the odd build failure where we missed a code site or where a crossing commit itroduces new irq_desc[] usage. ) v2: according to Eric, change get_irq_desc() to irq_desc() Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
| * drivers/pcmcia: use nr_irqsYinghai Lu2008-10-162-2/+2
| | | | | | | | | | Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
* | [ARM] 5307/1: pxa: fix CM-X2XX PCMCIA build errorMike Rapoport2008-10-151-1/+2
|/ | | | | | | | | | | | | | | | | Fix build error introduced by commit 27c4cae28148ad97baa2bf8275f7ebc9e2c37c34 [ARM] pxa: allow multi-machine PCMCIA builds MODPOST 76 modules ERROR: "cmx270_pcmcia_exit" [drivers/pcmcia/pxa2xx_cm_x2xx.ko] undefined! ERROR: "cmx255_pcmcia_exit" [drivers/pcmcia/pxa2xx_cm_x2xx.ko] undefined! ERROR: "cmx270_pcmcia_init" [drivers/pcmcia/pxa2xx_cm_x2xx.ko] undefined! ERROR: "cmx255_pcmcia_init" [drivers/pcmcia/pxa2xx_cm_x2xx.ko] undefined! make[2]: *** [__modpost] Error 1 make[1]: *** [modules] Error 2 make: *** [sub-make] Error 2 Signed-off-by: Mike Rapoport <mike@compulab.co.il> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6Linus Torvalds2008-10-1327-710/+943
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: (49 commits) pcmcia: ioctl-internal definitions pcmcia: cistpl header cleanup pcmcia: remove unused argument to pcmcia_parse_tuple() pcmcia: card services header cleanup pcmcia: device_id header cleanup pcmcia: encapsulate ioaddr_t pcmcia: cleanup device driver header file pcmcia: cleanup socket services header file pcmcia: merge ds_internal.h into cs_internal.h pcmcia: cleanup cs_internal.h pcmcia: cs_internal.h is internal pcmcia: use dev_printk for cs_error() pcmcia: remove CS_ error codes alltogether pcmcia: deprecate CS_BAD_TUPLE pcmcia: deprecate CS_BAD_ARGS pcmcia: deprecate CS_BAD_BASE, CS_BAD_IRQ, CS_BAD_OFFSET and CS_BAD_SIZE pcmcia: deprecate CS_BAD_ATTRIBUTE, CS_BAD_TYPE and CS_BAD_PAGE pcmcia: deprecate CS_NO_MORE_ITEMS pcmcia: deprecate CS_IN_USE pcmcia: deprecate CS_CONFIGURATION_LOCKED ... Fix trivial conflict in drivers/pcmcia/ds.c manually
| * pcmcia: remove unused argument to pcmcia_parse_tuple()Dominik Brodowski2008-08-314-5/+7
| | | | | | | | | | | | | | | | | | | | Since we're just parsing the tuple being passed to this function, we don't need any device-specific information. Also, remove the call to pcmcia_validate_cis() from pcmciamtd.c, since it is already called by the PCMCIA core. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: card services header cleanupDominik Brodowski2008-08-313-4/+14
| | | | | | | | | | | | | | 16-bit PCMCIA device handling function definitions are moved to ds.h, internal definitions to cs_internal.h. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: encapsulate ioaddr_tDominik Brodowski2008-08-292-2/+2
| | | | | | | | | | | | | | By now, ioaddr_t should only be used by the deprecated ioctl, as it does not correctly reflect the maximum ioport range at least on some architectures. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: cleanup socket services header fileDominik Brodowski2008-08-261-0/+27
| | | | | | | | | | | | | | | | The header file for use by (in-kernel) PCMCIA sockets deserved a major cleanup. Some stuff only used by the pcmcia core modules was moved to cs_internal.h Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: merge ds_internal.h into cs_internal.hDominik Brodowski2008-08-255-32/+40
| | | | | | | | | | | | Merge ds_internal.c into cs_internal.h. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: cleanup cs_internal.hDominik Brodowski2008-08-251-64/+90
| | | | | | | | | | | | Small cleanup to cs_internal.h. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: cs_internal.h is internalDominik Brodowski2008-08-255-5/+0
| | | | | | | | | | | | | | cs_internal.h is meant for definitions internal to the PCMCIA core modules. It must not be included by PCMCIA socket drivers or by PCMCIA device drivers. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: use dev_printk for cs_error()Dominik Brodowski2008-08-231-32/+18
| | | | | | | | | | | | | | | | Use dev_printk() in cs_error()-based error reporting. While this function-turned-macro will hopefully go away soon, using dev_printk simplifies the code much. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_BAD_TUPLEDominik Brodowski2008-08-234-55/+98
| | | | | | | | | | | | | | CS_BAD_TUPLE was used to denote a bad tuple being passed to the parse function. Therefore, replace it with -EINVAL and a verbose message. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_BAD_ARGSDominik Brodowski2008-08-233-9/+10
| | | | | | | | | | | | | | CS_BAD_ARGS mean a badly written driver or invalid userspace ioctl access, so translate that to -EINVAL. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_BAD_BASE, CS_BAD_IRQ, CS_BAD_OFFSET and CS_BAD_SIZEDominik Brodowski2008-08-233-15/+18
| | | | | | | | | | | | | | These four error values mostly mean a badly written driver, so ds_dbg() output and -EINVAL seems to be enough. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_BAD_ATTRIBUTE, CS_BAD_TYPE and CS_BAD_PAGEDominik Brodowski2008-08-234-27/+34
| | | | | | | | | | | | | | | | | | | | | | CS_BAD_TYPE was only used in cs.c and already properly annotated by error messages. CS_BAD_ATTRIBUTE and CS_BAD_PAGE mean a badly written driver, so ds_dbg() output and -EINVAL seems to be enough. (includes bugfix from and Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> ) Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_NO_MORE_ITEMSDominik Brodowski2008-08-234-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | CS_NO_MORE_ITEMS is returned by the CIS tuple reading and parsing code if the end of a tuple chain is reached. As at least one PCMCIA driver relies on matching this return value, replace it with -ENOSPC which is now uniquely used for this purpose within the in-kernel pcmcia subsystem. CC: Russell King <rmk+kernel@arm.linux.org.uk> CC: linux-serial@vger.kernel.org CC: Michael Buesch <mb@bu3sch.de> Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_IN_USEDominik Brodowski2008-08-232-17/+32
| | | | | | | | | | | | | | | | If a resource is already in use, mark it with -EBUSY. Same for cards already asleep. (includes a fix for a bug found by Larry Finger -- thanks!) Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_CONFIGURATION_LOCKEDDominik Brodowski2008-08-232-7/+7
| | | | | | | | | | | | | | This error code meant that trying to change the configuration after the initialization phase is forbidden. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_BAD_HANDLEDominik Brodowski2008-08-233-11/+10
| | | | | | | | | | | | | | | | CS_BAD_HANDLE means that something went badly wrong: no parameter was passed, or the paramater passed wasn't the correct one. Therefore, replace it with -EINVAL. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_GENERAL_FAILUREDominik Brodowski2008-08-232-3/+2
| | | | | | | | | | | | It's only used by pcmcia_core when socket-related queries time out. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_NO_CARDDominik Brodowski2008-08-235-20/+20
| | | | | | | | | | | | It means that no card can be detected in the socket, so return -ENODEV Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_BAD_VCC and CS_BAD_VPPDominik Brodowski2008-08-232-11/+21
| | | | | | | | | | | | | | They were either used to report that changing voltage is not allowed, or that changing voltage failed. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_UNSUPPORTED_*Dominik Brodowski2008-08-235-11/+12
| | | | | | | | | | | | | | CS_UNSUPPORTED_MODE and CS_UNSUPPORTED_FUNCTION were mostly used to denote trying to use PCMCIA functions on CardBus cards. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_OUT_OF_RESOURCEDominik Brodowski2008-08-233-30/+47
| | | | | | | | | | | | | | | | CS_OUT_OF_RESOURCE was almost only used to note -ENOMEM situations. Therefore, use -ENOMEM explicitely, and also print out warnings. CC: netdev@vger.kernel.org Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate unused CS_ error codesDominik Brodowski2008-08-231-10/+0
| | | | | | | | | | | | | | Deprecate unused CS_ error codes by replacing their definitions with generic error messages, and removing them from the error_t lookup table. Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: deprecate CS_SUCCESSDominik Brodowski2008-08-238-68/+77
| | | | | | | | | | | | | | | | | | Instead of using own error or success codes, the PCMCIA code should rely on the generic return values. Therefore, replace all occurrences of CS_SUCCESS with 0. CC: netdev@vger.kernel.org Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| * pcmcia: move pccard_get_configuration_info to ioctlDominik Brodowski2008-08-233-80/+72
| | | | | | | | | | | | | | With the PCMCIA ioctl being the only remaining user of _get_configuration_info, move the function to pcmcia_ioctl.c Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| *-. Merge branches 'pcmcia-config-loop' and 'pcmcia-printk' into pcmciaDominik Brodowski2008-08-2318-192/+304
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * pcmcia-config-loop: pcmcia: pcmcia_config_loop() improvement by passing vcc pcmcia: pcmcia_config_loop() default CIS entry handling pcmcia: pcmcia_config_loop() ConfigIndex unification pcmcia: use pcmcia_loop_config in misc pcmcia drivers pcmcia: use pcmcia_loop_config in net pcmcia drivers pcmcia: use pcmcia_loop_config in ISDN pcmcia drivers pcmcia: use pcmcia_loop_config in scsi pcmcia drivers pcmcia: use pcmcia_loop_config in bluetooth drivers pcmcia: use pcmcia_loop_config in pata and ide drivers pcmcia: add pcmcia_loop_config() helper * pcmcia-printk: pcmcia: don't add extra DEBUG cflag pcmcia: remove unused cs_socket_name() definition pcmcia: use dev_printk in module rsrc_nonstatic pcmcia: use dev_printk in module pcmcia pcmcia: use dev_printk in module pcmcia_core pcmcia: use dev_printk and dev_dbg in yenta_socket
| | | * pcmcia: don't add extra DEBUG cflagDominik Brodowski2008-08-2313-19/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use CONFIG_PCMCIA_DEBUG instead of DEBUG so that dev_dbg() and other tricks work properly. (includes bugfixes from and Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> ) Signed-off-by: Dominik Broodwski <linux@dominikbrodowski.net>
| | | * pcmcia: remove unused cs_socket_name() definitionDominik Brodowski2008-08-231-2/+0
| | | | | | | | | | | | | | | | Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
| | | * pcmcia: use dev_printk in module rsrc_nonstaticDominik Brodowski2008-08-231-15/+18
| | | | | | | | | | | | | | | | Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
OpenPOWER on IntegriCloud