19 Apr, 2016

1 commit


14 Jan, 2016

2 commits

  • ERROR: Macros with complex values should be enclosed in parentheses
    +#define INIT_CDEX(_name, _rate) \
    + [ASIC3_CLOCK_##_name] = { \
    + .cdex = CLOCK_CDEX_##_name, \
    + .rate = _rate, \
    + }

    WARNING: line over 80 characters
    + ASIC3_GPIO_INT_STATUS);

    WARNING: void function return statements are not generally useful
    + return;
    +}

    WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt
    + msleep(1);

    WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt
    + msleep(1);

    WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt
    + msleep(1);

    WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt
    + msleep(1);

    WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt
    + msleep(1);

    WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt
    + msleep(1);

    WARNING: msleep < 20ms can sleep for up to 20ms; see Documentation/timers/timers-howto.txt
    + msleep(1);
    WARNING: line over 80 characters
    + asic->tmio_cnf = ioremap((ASIC3_SD_CONFIG_BASE >> asic->bus_shift) +

    WARNING: Prefer [subsystem eg: netdev]_err([subsystem]dev, ... then dev_err(dev, ... then p
    r_err(... to printk(KERN_ERR ...
    + printk(KERN_ERR "kzalloc failed\n");

    WARNING: Possible unnecessary 'out of memory' message
    + if (asic == NULL) {
    + printk(KERN_ERR "kzalloc failed\n");

    WARNING: Missing a blank line after declarations
    + int retval = 0;
    + retval = platform_driver_probe(&asic3_device_driver, asic3_probe);

    total: 1 errors, 13 warnings, 1081 lines checked

    Signed-off-by: Lee Jones

    Lee Jones
     
  • As we want gpio_chip .get() calls to be able to return negative
    error codes and propagate to drivers, we need to go over all
    drivers and make sure their return values are clamped to [0,1].
    We do this by using the ret = !!(val) design pattern.

    Cc: Paul Parsons
    Signed-off-by: Linus Walleij
    Signed-off-by: Lee Jones

    Linus Walleij
     

16 Sep, 2015

1 commit

  • Most interrupt flow handlers do not use the irq argument. Those few
    which use it can retrieve the irq number from the irq descriptor.

    Remove the argument.

    Search and replace was done with coccinelle and some extra helper
    scripts around it. Thanks to Julia for her help!

    Signed-off-by: Thomas Gleixner
    Cc: Julia Lawall
    Cc: Jiang Liu

    Thomas Gleixner
     

11 Aug, 2015

1 commit

  • set_irq_flags is ARM specific with custom flags which have genirq
    equivalents. Convert drivers to use the genirq interfaces directly, so we
    can kill off set_irq_flags. The translation of flags is as follows:

    IRQF_VALID -> !IRQ_NOREQUEST
    IRQF_PROBE -> !IRQ_NOPROBE
    IRQF_NOAUTOEN -> IRQ_NOAUTOEN

    For IRQs managed by an irqdomain, the irqdomain core code handles clearing
    and setting IRQ_NOREQUEST already, so there is no need to do this in
    .map() functions and we can simply remove the set_irq_flags calls. Some
    users also modify IRQ_NOPROBE and this has been maintained although it
    is not clear that is really needed. There appears to be a great deal of
    blind copy and paste of this code.

    Signed-off-by: Rob Herring
    Acked-by: Linus Walleij
    Signed-off-by: Lee Jones

    Rob Herring
     

25 Jun, 2015

1 commit

  • Fix a race where a pending interrupt could be received and the handler
    called before the handler's data has been setup, by converting to
    irq_set_chained_handler_and_data().

    Search and conversion was done with coccinelle:

    @@
    expression E1, E2, E3;
    @@
    (
    -if (irq_set_chained_handler(E1, E3) != 0)
    - BUG();
    |
    -irq_set_chained_handler(E1, E3);
    )
    -irq_set_handler_data(E1, E2);
    +irq_set_chained_handler_and_data(E1, E3, E2);

    @@
    expression E1, E2, E3;
    @@
    (
    -if (irq_set_chained_handler(E1, E3) != 0)
    - BUG();
    ...
    |
    -irq_set_chained_handler(E1, E3);
    ...
    )
    -irq_set_handler_data(E1, E2);
    +irq_set_chained_handler_and_data(E1, E3, E2);

    Reported-by: Russell King
    Signed-off-by: Thomas Gleixner
    Cc: Julia Lawall
    Cc: Samuel Ortiz
    Cc: Lee Jones

    Thomas Gleixner
     

19 Sep, 2014

1 commit


09 Jul, 2014

1 commit


06 Jan, 2014

1 commit

  • As of commit 03e361b25ee8dfb1fd9b890072c23c4aae01c6c7 ("mfd: Stop setting
    refcounting pointers in original mfd_cell arrays"), the "cell" parameter of
    mfd_add_devices() is "const" again. Hence make all cell data passed to
    mfd_add_devices() const where possible.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Lee Jones

    Geert Uytterhoeven
     

31 Jul, 2013

1 commit


13 Jun, 2013

1 commit


29 Nov, 2012

2 commits

  • CONFIG_HOTPLUG is going away as an option so __devexit is no
    longer needed.

    Signed-off-by: Bill Pemberton
    Cc: Srinidhi Kasagar
    Cc: Peter Tyser
    Cc: Daniel Walker
    Cc: Bryan Huntsman
    Acked-by: David Brown
    Acked-by: Linus Walleij
    Acked-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Bill Pemberton
     
  • CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
    needed.

    Signed-off-by: Bill Pemberton
    Cc: Srinidhi Kasagar
    Cc: Peter Tyser
    Cc: Daniel Walker
    Cc: Bryan Huntsman
    Acked-by: David Brown
    Acked-by: Linus Walleij
    Acked-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Bill Pemberton
     

16 Sep, 2012

1 commit

  • Currently the MFD core supports remapping MFD cell interrupts using an
    irqdomain but only if the MFD is being instantiated using device tree
    and only if the device tree bindings use the pattern of registering IPs
    in the device tree with compatible properties. This will be actively
    harmful for drivers which support non-DT platforms and use this pattern
    for their DT bindings as it will mean that the core will silently change
    remapping behaviour and it is also limiting for drivers which don't do
    DT with this particular pattern. There is also a potential fragility if
    there are interrupts not associated with MFD cells and all the cells are
    omitted from the device tree for some reason.

    Instead change the code to take an IRQ domain as an optional argument,
    allowing drivers to take the decision about the parent domain for their
    interrupts. The one current user of this feature is ab8500-core, it has
    the domain lookup pushed out into the driver.

    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Mark Brown
     

09 Aug, 2012

1 commit

  • In commit 4f304245b "mfd: Set asic3 DS1WM clock_rate", a possible
    path through asic3_mfd_probe was introduced that would lead to
    an unpredictable return value, if everything succeeds but there
    are pdata->leds is NULL. This was reported correctly by gcc.

    Without this patch, building magician_defconfig results in:

    drivers/mfd/asic3.c: In function 'asic3_mfd_probe':
    drivers/mfd/asic3.c:940:2: warning: 'ret' may be used uninitialized in this function [-Wuninitialized]

    Signed-off-by: Arnd Bergmann
    Cc: Paul Parsons
    Cc: Philipp Zabel
    Cc: Samuel Ortiz

    Arnd Bergmann
     

01 May, 2012

4 commits

  • The gpiolib code will only call our gpio_to_irq ops for our registered
    GPIO range.

    Signed-off-by: Samuel Ortiz

    Samuel Ortiz
     
  • The mfd/asic3 driver does not currently define a irq_set_wake() handler.
    Consequently any attempt to configure the 3 ASIC3 GPIO buttons - RECORD,
    CALENDAR, HOME - as wakeup sources results in Unbalanced IRQ warnings
    when the system is woken from sleep mode:

    WARNING: at kernel/irq/manage.c:520 irq_set_irq_wake+0xc4/0xf8()
    Unbalanced IRQ 342 wake disable
    ...
    WARNING: at kernel/irq/manage.c:520 irq_set_irq_wake+0xc4/0xf8()
    Unbalanced IRQ 337 wake disable
    ...
    WARNING: at kernel/irq/manage.c:520 irq_set_irq_wake+0xc4/0xf8()
    Unbalanced IRQ 339 wake disable
    ...

    This patch adds a irq_set_wake() handler to the mfd/asic3 driver.

    Signed-off-by: Paul Parsons
    Cc: Philipp Zabel
    Signed-off-by: Samuel Ortiz

    Paul Parsons
     
  • The mfd/asic3 driver does not set the ds1wm_driver_data clock_rate field
    before passing the structure to the DS1WM w1 busmaster driver.
    This was not noticed before commit 26a6afb, because ds1wm_find_divisor()
    unintentionally returned the correct divisor when a zero clock_rate was
    passed in. However after that commit DS1WM fails a zero clock_rate:

    ds1wm ds1wm: no suitable divisor for 0Hz clock

    This patch sets the ds1wm_driver_data clock_rate field.

    Signed-off-by: Paul Parsons
    Acked-by: Philipp Zabel
    Signed-off-by: Samuel Ortiz

    Paul Parsons
     
  • This patch is part of a set which adds PCMCIA/CF support for the hx4700.
    This patch adds asic3_set_register() calls to:
    1. Enable the PCMCIA/CF in asic3_probe().
    2. Disable the PCMCIA/CF in asic3_remove().

    Signed-off-by: Paul Parsons
    Acked-by: Philipp Zabel
    Signed-off-by: Samuel Ortiz

    Paul Parsons
     

17 Apr, 2012

1 commit

  • Assumption that irq numbers of asic3 gpios start at
    IRQ_BOARD_START is certainly wrong - driver may as well
    use any other base for its irqs (consider for example
    the imaginary case of two ASIC3 chips onboard)

    Furthermore, some platforms even don't have IRQ_BOARD_START
    defined, so driver will fail to build on them:
    -------------------------------------------------------
    drivers/mfd/asic3.c: In function 'asic3_gpio_to_irq':
    drivers/mfd/asic3.c:530: error: 'IRQ_BOARD_START' undeclared (first use in this function)
    drivers/mfd/asic3.c:530: error: (Each undeclared identifier is reported only once
    drivers/mfd/asic3.c:530: error: for each function it appears in.)
    -------------------------------------------------------

    Fix it by using irq_base from driver data.

    Signed-off-by: Dmitry Artamonow
    Signed-off-by: Samuel Ortiz

    Dmitry Artamonow
     

07 Mar, 2012

1 commit

  • The gpio_to_irq() macro is now defined as __gpio_to_irq() instead of IRQ_GPIO().
    The __gpio_to_irq() function returns -ENXIO if the referenced gpio_chip
    structure does not define a to_irq() member.
    This is true of the asic3 gpio_chip structure, and thus calls to gpio_to_irq()
    now fail (for example from the gpio-vbus module).
    This patch defines the to_irq() member in the asic3 gpio_chip structure.

    Signed-off-by: Paul Parsons
    Signed-off-by: Samuel Ortiz

    Paul Parsons
     

07 Nov, 2011

1 commit

  • * 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)
    Revert "tracing: Include module.h in define_trace.h"
    irq: don't put module.h into irq.h for tracking irqgen modules.
    bluetooth: macroize two small inlines to avoid module.h
    ip_vs.h: fix implicit use of module_get/module_put from module.h
    nf_conntrack.h: fix up fallout from implicit moduleparam.h presence
    include: replace linux/module.h with "struct module" wherever possible
    include: convert various register fcns to macros to avoid include chaining
    crypto.h: remove unused crypto_tfm_alg_modname() inline
    uwb.h: fix implicit use of asm/page.h for PAGE_SIZE
    pm_runtime.h: explicitly requires notifier.h
    linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h
    miscdevice.h: fix up implicit use of lists and types
    stop_machine.h: fix implicit use of smp.h for smp_processor_id
    of: fix implicit use of errno.h in include/linux/of.h
    of_platform.h: delete needless include
    acpi: remove module.h include from platform/aclinux.h
    miscdevice.h: delete unnecessary inclusion of module.h
    device_cgroup.h: delete needless include
    net: sch_generic remove redundant use of
    net: inet_timewait_sock doesnt need
    ...

    Fix up trivial conflicts (other header files, and removal of the ab3550 mfd driver) in
    - drivers/media/dvb/frontends/dibx000_common.c
    - drivers/media/video/{mt9m111.c,ov6650.c}
    - drivers/mfd/ab3550-core.c
    - include/linux/dmaengine.h

    Linus Torvalds
     

01 Nov, 2011

1 commit


24 Oct, 2011

4 commits


09 Jul, 2011

1 commit

  • This fixes a regression in 3.0 reported by Paul Parsons regarding the
    removal of the msleep(1) in the ds1wm_reset() function:

    : The linux-3.0-rc4 DS1WM 1-wire driver is logging "bus error, retrying"
    : error messages on an HP iPAQ hx4700 PDA (XScale-PXA270):
    :
    :
    : Driver for 1-wire Dallas network protocol.
    : DS1WM w1 busmaster driver - (c) 2004 Szabolcs Gyurko
    : 1-Wire driver for the DS2760 battery monitor chip - (c) 2004-2005, Szabolcs Gyurko
    : ds1wm ds1wm: pass: 1 bus error, retrying
    : ds1wm ds1wm: pass: 2 bus error, retrying
    : ds1wm ds1wm: pass: 3 bus error, retrying
    : ds1wm ds1wm: pass: 4 bus error, retrying
    : ds1wm ds1wm: pass: 5 bus error, retrying
    : ...
    :
    : The visible result is that the battery charging LED is erratic; sometimes
    : it works, mostly it doesn't.
    :
    : The linux-2.6.39 DS1WM 1-wire driver worked OK. I haven't tried 3.0-rc1,
    : 3.0-rc2, or 3.0-rc3.

    This sleep should not be required on normal circuitry provided the
    pull-ups on the bus are correctly adapted to the slaves. Unfortunately,
    this is not always the case. The sleep is restored but as a parameter to
    the probe function in the pdata.

    [akpm@linux-foundation.org: coding-style fixes]
    Reported-by: Paul Parsons
    Tested-by: Paul Parsons
    Signed-off-by: Jean-François Dagenais
    Cc: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean-François Dagenais
     

27 May, 2011

4 commits


11 May, 2011

1 commit

  • Fix below compile error:

    CC drivers/mfd/asic3.o
    drivers/mfd/asic3.c: In function 'asic3_irq_demux':
    drivers/mfd/asic3.c:147: error: 'irq_data' undeclared (first use in this function)
    drivers/mfd/asic3.c:147: error: (Each undeclared identifier is reported only once
    drivers/mfd/asic3.c:147: error: for each function it appears in.)

    Signed-off-by: Axel Lin
    Signed-off-by: Samuel Ortiz

    Axel Lin
     

27 Mar, 2011

3 commits


23 Mar, 2011

3 commits

  • Use mfd_data for passing information from mfd drivers to mfd
    clients. The mfd_cell's driver_data field is being phased out.

    Clients that were using driver_data now access .mfd_data
    via mfd_get_data(). This changes tmio-mmc only; mfd drivers with
    other cells are not modified.

    Signed-off-by: Andres Salomon
    Signed-off-by: Samuel Ortiz

    Andres Salomon
     
  • Use mfd_data for passing information from mfd drivers to mfd
    clients. The mfd_cell's driver_data field is being phased out.

    Clients that were using driver_data now access .mfd_data
    via mfd_get_data(). This changes ds1wm only; mfd drivers with
    other cells are not modified, with the exception of led_cell.

    The led_cell.driver_data line is dropped from htc-pasic3.c in this
    patch as well. It's not used in mainline (there's no leds-pasic3
    platform driver), so it should be safe to take care of that here.

    Signed-off-by: Andres Salomon
    Signed-off-by: Samuel Ortiz

    Andres Salomon
     
  • No need to explicitly set the cell's platform_data/data_size.

    Modify clients to use mfd_get_cell helper function instead of
    accessing platform_data directly.

    Signed-off-by: Andres Salomon
    Signed-off-by: Samuel Ortiz

    Andres Salomon
     

02 Mar, 2011

1 commit