summaryrefslogtreecommitdiffstats
path: root/drivers/vme
Commit message (Collapse)AuthorAgeFilesLines
* VME: Correct read/write alignment algorithmMartyn Welch2014-02-072-4/+4
| | | | | | | | | | | | | | | In order to ensure the correct width cycles on the VME bus, the VME bridge drivers implement an algorithm to utilise the largest possible width reads and writes whilst maintaining natural alignment constraints. The algorithm currently looks at the start address rather than the current read/write address when determining whether a 16-bit width cycle is required to get to 32-bit alignment. This results in incorrect alignment, Reported-by: Jim Strouth <james.strouth@ge.com> Tested-by: Jim Strouth <james.strouth@ge.com> Signed-off-by: Martyn Welch <martyn.welch@ge.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: Convert VME core to register as a subsystemAaron Sierra2013-12-172-6/+2
| | | | | | | | | | | | | | | | | | | Previously, VME bridge support was treated as any other driver (using module_init() macro), but if VME bridge and vme_user (staging) drivers were compiled into the kernel, then vme_user would attempt to register itself before the VME core support had been loaded. This would result in a kernel panic. The load order of these built-in drivers is based on the order in which drivers/staging/vme and driver/vme are compiled. This patch changes the VME core driver to use the subsys_initcall() macro which ensures that it is loaded before all other VME drivers regardless of the order in which they are compiled. Tested-by: Aaron Sierra <asierra@xes-inc.com> Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: remove DEFINE_PCI_DEVICE_TABLE macroJingoo Han2013-12-033-3/+3
| | | | | | | | Don't use DEFINE_PCI_DEVICE_TABLE macro, because this macro is not preferred. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* VME: Rename vme_slot_get to avoid confusion with reference countingMartyn Welch2013-12-031-3/+3
| | | | | | | | | | Traditionally the "get" functions increment the reference count of the object that is returned, which does not happen with vme_slot_get. The function vme_slot_get returns the physical VME slot associated with a particular struct vme_dev. Rename vme_slot_num to avoid any confusion. Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* VME: Provide access to VME bus enumeration and fix vme_user match functionMartyn Welch2013-12-031-0/+13
| | | | | | | | | | | | | | | | | The match function for vme_user is completely wrong. It will blindly bind against the first VME slot on each bus (at this point that would be just the first bus as the driver can only handle one bus). The original intention (before some major subsystem changes) was that the driver bind against the slot to which the bridge was attached in the VME system and to the bus(es) provided via the "bus" module parameter. To do this cleanly (i.e. without poking arround in the subsystems internal stuctures) a functionality has been added to provide access to the bus enumeration. Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_ca91cx42.c: fix to pass correct device identity to free_irq()Wei Yongjun2013-08-271-1/+5
| | | | | | | | free_irq() expects the same device identity that was passed to corresponding request_irq(), otherwise the IRQ is not freed. Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_vmivme7805.c: add missing __iomem annotationJingoo Han2013-08-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added missing __iomem annotation in order to fix the following sparse warnings: drivers/vme/boards/vme_vmivme7805.c:62:19: warning: incorrect type in assignment (different address spaces) drivers/vme/boards/vme_vmivme7805.c:62:19: expected void *static [toplevel] vmic_base drivers/vme/boards/vme_vmivme7805.c:62:19: got void [noderef] <asn:2>* drivers/vme/boards/vme_vmivme7805.c:70:9: warning: incorrect type in argument 2 (different address spaces) drivers/vme/boards/vme_vmivme7805.c:70:9: expected void volatile [noderef] <asn:2>*addr drivers/vme/boards/vme_vmivme7805.c:70:9: got void * drivers/vme/boards/vme_vmivme7805.c:73:16: warning: incorrect type in argument 1 (different address spaces) drivers/vme/boards/vme_vmivme7805.c:73:16: expected void const volatile [noderef] <asn:2>*addr drivers/vme/boards/vme_vmivme7805.c:73:16: got void * drivers/vme/boards/vme_vmivme7805.c:75:9: warning: incorrect type in argument 2 (different address spaces) drivers/vme/boards/vme_vmivme7805.c:75:9: expected void volatile [noderef] <asn:2>*addr drivers/vme/boards/vme_vmivme7805.c:75:9: got void * drivers/vme/boards/vme_vmivme7805.c:78:16: warning: incorrect type in argument 1 (different address spaces) drivers/vme/boards/vme_vmivme7805.c:78:16: expected void const volatile [noderef] <asn:2>*addr drivers/vme/boards/vme_vmivme7805.c:78:16: got void * drivers/vme/boards/vme_vmivme7805.c:85:9: warning: incorrect type in argument 2 (different address spaces) drivers/vme/boards/vme_vmivme7805.c:85:9: expected void volatile [noderef] <asn:2>*addr drivers/vme/boards/vme_vmivme7805.c:85:9: got void * drivers/vme/boards/vme_vmivme7805.c:99:17: warning: incorrect type in argument 1 (different address spaces) drivers/vme/boards/vme_vmivme7805.c:99:17: expected void volatile [noderef] <asn:2>*addr drivers/vme/boards/vme_vmivme7805.c:99:17: got void *static [toplevel] vmic_base Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_ca91cx42.c: add missing __iomem annotationJingoo Han2013-08-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added missing __iomem annotation in order to fix the following sparse warnings: drivers/vme/bridges/vme_ca91cx42.c:859:39: warning: incorrect type in initializer (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:859:39: expected void *addr drivers/vme/bridges/vme_ca91cx42.c:859:39: got void [noderef] <asn:2>* drivers/vme/bridges/vme_ca91cx42.c:878:30: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:878:30: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:878:30: got void *addr drivers/vme/bridges/vme_ca91cx42.c:885:47: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:885:47: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:885:47: got void * drivers/vme/bridges/vme_ca91cx42.c:889:48: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:889:48: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:889:48: got void * drivers/vme/bridges/vme_ca91cx42.c:896:17: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:896:17: expected void const volatile [noderef] <asn:2>*<noident> drivers/vme/bridges/vme_ca91cx42.c:896:17: got void * drivers/vme/bridges/vme_ca91cx42.c:901:40: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:901:40: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:901:40: got void * drivers/vme/bridges/vme_ca91cx42.c:905:39: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:905:39: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:905:39: got void * drivers/vme/bridges/vme_ca91cx42.c:919:39: warning: incorrect type in initializer (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:919:39: expected void *addr drivers/vme/bridges/vme_ca91cx42.c:919:39: got void [noderef] <asn:2>* drivers/vme/bridges/vme_ca91cx42.c:932:17: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:932:17: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:932:17: got void *addr drivers/vme/bridges/vme_ca91cx42.c:939:25: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:939:25: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:939:25: got void * drivers/vme/bridges/vme_ca91cx42.c:943:25: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:943:25: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:943:25: got void * drivers/vme/bridges/vme_ca91cx42.c:950:17: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:950:17: expected void volatile [noderef] <asn:2>*<noident> drivers/vme/bridges/vme_ca91cx42.c:950:17: got void * drivers/vme/bridges/vme_ca91cx42.c:955:17: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:955:17: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:955:17: got void * drivers/vme/bridges/vme_ca91cx42.c:959:17: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_ca91cx42.c:959:17: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_ca91cx42.c:959:17: got void * Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_tsi148.c: add missing __iomem annotationJingoo Han2013-08-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added missing __iomem annotation in order to fix the following sparse warnings: drivers/vme/bridges/vme_tsi148.c:1270:39: warning: incorrect type in initializer (different address spaces) drivers/vme/bridges/vme_tsi148.c:1270:39: expected void *addr drivers/vme/bridges/vme_tsi148.c:1270:39: got void [noderef] <asn:2>* drivers/vme/bridges/vme_tsi148.c:1287:30: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1287:30: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1287:30: got void *addr drivers/vme/bridges/vme_tsi148.c:1294:47: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1294:47: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1294:47: got void * drivers/vme/bridges/vme_tsi148.c:1298:48: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1298:48: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1298:48: got void * drivers/vme/bridges/vme_tsi148.c:1305:17: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1305:17: expected void const volatile [noderef] <asn:2>*<noident> drivers/vme/bridges/vme_tsi148.c:1305:17: got void * drivers/vme/bridges/vme_tsi148.c:1310:40: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1310:40: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1310:40: got void * drivers/vme/bridges/vme_tsi148.c:1314:39: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1314:39: expected void const volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1314:39: got void * drivers/vme/bridges/vme_tsi148.c:1351:39: warning: incorrect type in initializer (different address spaces) drivers/vme/bridges/vme_tsi148.c:1351:39: expected void *addr drivers/vme/bridges/vme_tsi148.c:1351:39: got void [noderef] <asn:2>* drivers/vme/bridges/vme_tsi148.c:1369:17: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1369:17: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1369:17: got void *addr drivers/vme/bridges/vme_tsi148.c:1376:25: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1376:25: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1376:25: got void * drivers/vme/bridges/vme_tsi148.c:1380:25: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1380:25: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1380:25: got void * drivers/vme/bridges/vme_tsi148.c:1387:17: warning: incorrect type in argument 1 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1387:17: expected void volatile [noderef] <asn:2>*<noident> drivers/vme/bridges/vme_tsi148.c:1387:17: got void * drivers/vme/bridges/vme_tsi148.c:1392:17: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1392:17: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1392:17: got void * drivers/vme/bridges/vme_tsi148.c:1396:17: warning: incorrect type in argument 2 (different address spaces) drivers/vme/bridges/vme_tsi148.c:1396:17: expected void volatile [noderef] <asn:2>*addr drivers/vme/bridges/vme_tsi148.c:1396:17: got void * Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_tsi148.c: fix error return code in tsi148_probe()Wei Yongjun2013-06-241-1/+2
| | | | | | | | Fix to return a negative error code in the tsi148_crcsr_init() error handling case instead of 0, as done elsewhere in this function. Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: tsi148: Window reserved for accessing CR/CSR does not need attributes setMartyn Welch2013-06-171-7/+0
| | | | | | | | | | | | | The tsi148 driver can be configured to reserve a window for internal use (as part of the error checking routine). The intialisation of this window currently configures a set of attributes that are never used as these are only ever used by the VME core and this window is not advertised to the core. Remove configuration of these attributes. Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: tsi148: CR/CSR logic arround the wrong wayMartyn Welch2013-06-171-3/+4
| | | | | | | | | | | The logic in the init routine for the TSI148 is inverted. It isn't switching on the CR/CSR space when it should be and is reporting it's on when its not. Correct the logic to do the right thing. Reported-by: De Roo, Steven <steven.deroo@arcelormittal.com> Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: tsi148: Only store VME bus errors if they will be checkedMartyn Welch2013-06-171-11/+17
| | | | | | | | | | | | | The TSI148 driver provides an optional mechanism for ensuring that errors resulting from posted transfers are caught whilst still relevant. To do this errors are stored in a link list. If bus errors are not checked, this list would grow until available memory had been exhausted. Only store the errors in a link list if error detection is switched on. Reported-by: De Roo, Steven <steven.deroo@arcelormittal.com> Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: Free DMA resource allocation structureMartyn Welch2013-06-061-0/+2
| | | | | | | | | | There is a memory leak in the function vme_dma_free(). The resource structure allocated in vme_dma_request() needs to be free'd in vme_dma_free(). Reported-by: De Roo, Steven <steven.deroo@arcelormittal.com> Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: add missing put_device() after device_register() failsEmilio G. Cota2013-02-141-0/+1
| | | | | | | | | put_device() must be called after device_register() fails, since device_register() always initializes the refcount on the device structure. Signed-off-by: Emilio G. Cota <cota@braap.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_tsi148.c: use module_pci_driver to simplify the codeWei Yongjun2012-10-251-14/+1
| | | | | | | | | | | Use the module_pci_driver() macro to make the code simpler by eliminating module_init and module_exit calls. dpatch engine is used to auto generate this patch. (https://github.com/weiyj/dpatch) Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_ca91cx42.c: use module_pci_driver to simplify the codeWei Yongjun2012-10-251-14/+1
| | | | | | | | | | | Use the module_pci_driver() macro to make the code simpler by eliminating module_init and module_exit calls. dpatch engine is used to auto generate this patch. (https://github.com/weiyj/dpatch) Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_vmivme7805.c: use module_pci_driver to simplify the codeWei Yongjun2012-10-251-14/+1
| | | | | | | | | | | Use the module_pci_driver() macro to make the code simpler by eliminating module_init and module_exit calls. dpatch engine is used to auto generate this patch. (https://github.com/weiyj/dpatch) Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_ca91cx42.c: use list_for_each_safe() when delete list itemsWei Yongjun2012-09-061-10/+10
| | | | | | | | | | Since we will be removing items off the list using list_del() we need to use a safer version of the list_for_each() macro aptly named list_for_each_safe(). We should use the safe macro if the loop involves deletions of items. Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_tsi148.c: fix to use list_for_each_safe() when delete list itemsWei Yongjun2012-09-061-5/+5
| | | | | | | | | Since we will be removing items off the list using list_del() we need to use a safer version of the list_for_each() macro aptly named list_for_each_safe(). Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* VME: Prevent D16 cycles being split into 8-bit blocksMartyn Welch2012-07-191-2/+83
| | | | | | | | | | | | | | | | The memcpy_fromio() and memcpy_toio() functions use the __memcpy() function, at least on x86. This function carries out transfers smaller than 32 bits as multiple 8 bit transfers, causing a single (aligned) 16 bit transfer to be split into 2 8 bit transfers which may not be supported by the target VME device. The commit 53059aa05988761a738fa8bc082bbf3c5d4462d1 fixed this for the ca91cx42, however this was not fixed for the tsi148 at the time. This patch uses the same algorithm to fix the tsi148. Reported-by: Daniel Lambert <daniel.lambert@clermont.in2p3.fr> Signed-off-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* VME: Move API documentation to Documentation folderMartyn Welch2012-05-081-396/+0
| | | | | | | | | | The documentation for the VME device driver API is currently in drivers/vme/vme_api.txt, move this to Documentation/vme_api.txt Signed-of-by: Martyn Welch <martyn.welch@ge.com> Acked-by: Rob Landley <rob@landley.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_ca91cx42.c: local functions should not be exposed globallyH Hartley Sweeten2012-05-081-3/+3
| | | | | | | | | | | | | | Functions not referenced outside of a source file should be marked static to prevent them from being exposed globally. Quiets the sparse warnings: warning: symbol 'ca91cx42_alloc_consistent' was not declared. Should it be static? warning: symbol 'ca91cx42_free_consistent' was not declared. Should it be static? Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* vme: vme_tsi148.c: local functions should not be exposed globallyH Hartley Sweeten lin2012-05-081-3/+3
| | | | | | | | | | | | | | Functions not referenced outside of a source file should be marked static to prevent them from being exposed globally. Quiets the sparse warnings: warning: symbol 'tsi148_alloc_consistent' was not declared. Should it be static? warning: symbol 'tsi148_free_consistent' was not declared. Should it be static? Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Acked-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* Staging: VME: move VME drivers out of stagingGreg Kroah-Hartman2012-04-2615-0/+8947
This moves the VME core, VME board drivers, and VME bridge drivers out of the drivers/staging/vme/ area to drivers/vme/. The VME device drivers have not moved out yet due to some API questions they are still working through, that should happen soon, hopefully. Cc: Martyn Welch <martyn.welch@ge.com> Cc: Manohar Vanga <manohar.vanga@cern.ch> Cc: Vincent Bossier <vincent.bossier@gmail.com> Cc: "Emilio G. Cota" <cota@braap.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>