17 Apr, 2014

3 commits

  • Save some characters by using to_pci_dev() instead of container_of().

    Signed-off-by: Aaron Sierra
    Signed-off-by: Greg Kroah-Hartman

    Aaron Sierra
     
  • Previously, tsi148_master_set() assumed the address contained in its
    PCI bus resource represented the actual PCI bus address. This is a fine
    assumption on some platforms. However, on platforms that don't use a
    1:1 (CPU:PCI) mapping this results in the tsi148 driver configuring an
    invalid master window translation.

    This patch updates the vme_tsi148 driver to first convert the address
    contained in the PCI bus resource into a PCI bus address before using
    it.

    [asierra: account for pcibios_resource_to_bus() prototype change]
    Signed-off-by: Joe Schultz
    Signed-off-by: Aaron Sierra
    Signed-off-by: Greg Kroah-Hartman

    Joe Schultz
     
  • This patch corrects a typo where "vme_base" was used instead of
    "*vme_base". The typo resulted in an incorrect value being returned
    to userspace (via vme_user).

    It also removes the following compile warning on some platforms:

    warning: cast from pointer to integer of different size

    [asierra: commit title/log rewording]
    Signed-off-by: Joe Schultz
    Signed-off-by: Aaron Sierra
    Signed-off-by: Greg Kroah-Hartman

    Joe Schultz
     

19 Feb, 2014

1 commit


16 Feb, 2014

1 commit

  • The ca91cx42 and tsi148 VME bridges use the width of reads and writes on the
    PCI bus in part to control the width of the cycles on the VME bus. It is
    important that we can control the width of cycles on the VME bus as some VME
    hardware requires cycles of a specific width. The memcpy_toio() and
    memcpy_fromio() functions do not provide sufficient control, so instead loop
    using ioread functions.

    Reported-by: Michael Kenney
    Signed-off-by: Martyn Welch
    Signed-off-by: Greg Kroah-Hartman

    Martyn Welch
     

08 Feb, 2014

1 commit

  • 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
    Tested-by: Jim Strouth
    Signed-off-by: Martyn Welch
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Martyn Welch
     

18 Dec, 2013

1 commit

  • 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
    Signed-off-by: Martyn Welch
    Signed-off-by: Greg Kroah-Hartman

    Aaron Sierra
     

04 Dec, 2013

3 commits

  • Don't use DEFINE_PCI_DEVICE_TABLE macro, because this macro
    is not preferred.

    Signed-off-by: Jingoo Han
    Signed-off-by: Greg Kroah-Hartman

    Jingoo Han
     
  • 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
    Signed-off-by: Greg Kroah-Hartman

    Martyn Welch
     
  • 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
    Signed-off-by: Greg Kroah-Hartman

    Martyn Welch
     

28 Aug, 2013

1 commit


20 Aug, 2013

3 commits

  • 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] *
    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] *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] *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] *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] *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] *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] *addr
    drivers/vme/boards/vme_vmivme7805.c:99:17: got void *static [toplevel] vmic_base

    Signed-off-by: Jingoo Han
    Signed-off-by: Greg Kroah-Hartman

    Jingoo Han
     
  • 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] *
    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] *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] *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] *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] *
    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] *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] *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] *
    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] *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] *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] *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] *
    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] *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] *addr
    drivers/vme/bridges/vme_ca91cx42.c:959:17: got void *

    Signed-off-by: Jingoo Han
    Signed-off-by: Greg Kroah-Hartman

    Jingoo Han
     
  • 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] *
    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] *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] *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] *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] *
    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] *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] *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] *
    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] *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] *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] *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] *
    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] *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] *addr
    drivers/vme/bridges/vme_tsi148.c:1396:17: got void *

    Signed-off-by: Jingoo Han
    Signed-off-by: Greg Kroah-Hartman

    Jingoo Han
     

25 Jun, 2013

1 commit


18 Jun, 2013

3 commits

  • 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
    Signed-off-by: Greg Kroah-Hartman

    Martyn Welch
     
  • 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
    Signed-off-by: Martyn Welch
    Signed-off-by: Greg Kroah-Hartman

    Martyn Welch
     
  • 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
    Signed-off-by: Martyn Welch
    Signed-off-by: Greg Kroah-Hartman

    Martyn Welch
     

07 Jun, 2013

1 commit


15 Feb, 2013

1 commit


26 Oct, 2012

3 commits


07 Sep, 2012

2 commits


20 Jul, 2012

1 commit

  • 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
    Signed-off-by: Martyn Welch
    Signed-off-by: Greg Kroah-Hartman

    Martyn Welch
     

09 May, 2012

3 commits


27 Apr, 2012

1 commit

  • 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
    Cc: Manohar Vanga
    Cc: Vincent Bossier
    Cc: "Emilio G. Cota"
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman