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
     

04 Dec, 2013

1 commit


20 Aug, 2013

1 commit

  • 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
     

26 Oct, 2012

1 commit


07 Sep, 2012

1 commit


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

1 commit

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

    H Hartley Sweeten lin
     

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