18 Jan, 2016

1 commit

  • Pull GPIO updates from Linus Walleij:
    "Here is the bulk of GPIO changes for v4.5.

    Notably there are big refactorings mostly by myself, aimed at getting
    the gpio_chip into a shape that makes me believe I can proceed to
    preserve state for a proper userspace ABI (character device) that has
    already been proposed once, but resulted in the feedback that I need
    to go back and restructure stuff. So I've been restructuring stuff.
    On the way I ran into brokenness (return code from the get_value()
    callback) and had to fix it. Also, refactored generic GPIO to be
    simpler.

    Some of that is still waiting to trickle down from the subsystems all
    over the kernel that provide random gpio_chips, I've touched every
    single GPIO driver in the kernel now, oh man I didn't know I was
    responsible for so much...

    Apart from that we're churning along as usual.

    I took some effort to test and retest so it should merge nicely and we
    shook out a couple of bugs in -next.

    Infrastructural changes:

    - In struct gpio_chip, rename the .dev node to .parent to better
    reflect the fact that this is not the GPIO struct device
    abstraction. We will add that soon so this would be totallt
    confusing.

    - It was noted that the driver .get_value() callbacks was sometimes
    reporting negative -ERR values to the gpiolib core, expecting them
    to be propagated to consumer gpiod_get_value() and gpio_get_value()
    calls. This was not happening, so as there was a mess of drivers
    returning negative errors and some returning "anything else than
    zero" to indicate that a line was active. As some would have bit
    31 set to indicate "line active" it clashed with negative error
    codes. This is fixed by the largeish series clamping values in all
    drivers with !!value to [0,1] and then augmenting the code to
    propagate error codes to consumers. (Includes some ACKed patches
    in other subsystems.)

    - Add a void *data pointer to struct gpio_chip. The container_of()
    design pattern is indeed very nice, but we want to reform the
    struct gpio_chip to be a non-volative, stateless business, and keep
    states internal to the gpiolib to be able to hold on to the state
    when adding a proper userspace ABI (character device) further down
    the road. To achieve this, drivers need a handle at the internal
    state that is not dependent on their struct gpio_chip() so we add
    gpiochip_add_data() and gpiochip_get_data() following the pattern
    of many other subsystems. All the "use gpiochip data pointer"
    patches transforms drivers to this scheme.

    - The Generic GPIO chip header has been merged into the general
    header, and the custom header for that
    removed. Instead of having a separate mm_gpio_chip struct for
    these generic drivers, merge that into struct gpio_chip,
    simplifying the code and removing the need for separate and
    confusing includes.

    Misc improvements:

    - Stabilize the way GPIOs are looked up from the ACPI legacy
    specification.

    - Incremental driver features for PXA, PCA953X, Lantiq (patches from
    the OpenWRT community), RCAR, Zynq, PL061, 104-idi-48

    New drivers:

    - Add a GPIO chip to the ALSA SoC AC97 driver.

    - Add a new Broadcom NSP SoC driver (this lands in the pinctrl dir,
    but the branch is merged here too to account for infrastructural
    changes).

    - The sx150x driver now supports the sx1502"

    * tag 'gpio-v4.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (220 commits)
    gpio: generic: make bgpio_pdata always visible
    gpiolib: fix chip order in gpio list
    gpio: mpc8xxx: Do not use gpiochip_get_data() in mpc8xxx_gpio_save_regs()
    gpio: mm-lantiq: Do not use gpiochip_get_data() in ltq_mm_save_regs()
    gpio: brcmstb: Allow building driver for BMIPS_GENERIC
    gpio: brcmstb: Set endian flags for big-endian MIPS
    gpio: moxart: fix build regression
    gpio: xilinx: Do not use gpiochip_get_data() in xgpio_save_regs()
    leds: pca9532: use gpiochip data pointer
    leds: tca6507: use gpiochip data pointer
    hid: cp2112: use gpiochip data pointer
    bcma: gpio: use gpiochip data pointer
    avr32: gpio: use gpiochip data pointer
    video: fbdev: via: use gpiochip data pointer
    gpio: pch: Optimize pch_gpio_get()
    Revert "pinctrl: lantiq: Implement gpio_chip.to_irq"
    pinctrl: nsp-gpio: use gpiochip data pointer
    pinctrl: vt8500-wmt: use gpiochip data pointer
    pinctrl: exynos5440: use gpiochip data pointer
    pinctrl: at91-pio4: use gpiochip data pointer
    ...

    Linus Torvalds
     

07 Jan, 2016

1 commit

  • This makes the driver use the data pointer added to the gpio_chip
    to store a pointer to the state container instead of relying on
    container_of().

    Cc: Kalle Valo
    Cc: linux-wireless@vger.kernel.org
    Acked-by: Hauke Mehrtens
    Acked-by: Rafał Miłecki
    Signed-off-by: Linus Walleij

    Linus Walleij
     

31 Dec, 2015

1 commit

  • So far we were using fs_initcall. It was (and still is) needed because
    struct bus_type has to be registered early. However main bus
    initialization has to happen later as it requires SPROM which depends on
    NVRAM which depends on mtd.
    Solve it by using fs_initcall only for bus_register call and module_init
    for the rest. It affects bcma only when built-in obviously.

    This was tested with BCM4706 and BCM5357C0 (BCM47XX), BCM4708A0
    (ARCH_BCM_5301X) and BCM43225 (PCIe card with bcma as module).

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Kalle Valo

    Rafał Miłecki
     

19 Nov, 2015

1 commit

  • The name .dev in a struct is normally reserved for a struct device
    that is let us say a superclass to the thing described by the struct.
    struct gpio_chip stands out by confusingly using a struct device *dev
    to point to the parent device (such as a platform_device) that
    represents the hardware. As we want to give gpio_chip:s real devices,
    this is not working. We need to rename this member to parent.

    This was done by two coccinelle scripts, I guess it is possible to
    combine them into one, but I don't know such stuff. They look like
    this:

    @@
    struct gpio_chip *var;
    @@
    -var->dev
    +var->parent

    and:

    @@
    struct gpio_chip var;
    @@
    -var.dev
    +var.parent

    and:

    @@
    struct bgpio_chip *var;
    @@
    -var->gc.dev
    +var->gc.parent

    Plus a few instances of bgpio that I couldn't figure out how
    to teach Coccinelle to rewrite.

    This patch hits all over the place, but I *strongly* prefer this
    solution to any piecemal approaches that just exercise patch
    mechanics all over the place. It mainly hits drivers/gpio and
    drivers/pinctrl which is my own backyard anyway.

    Cc: Haavard Skinnemoen
    Cc: Rafał Miłecki
    Cc: Richard Purdie
    Cc: Mauro Carvalho Chehab
    Cc: Alek Du
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Acked-by: Dmitry Torokhov
    Acked-by: Greg Kroah-Hartman
    Acked-by: Lee Jones
    Acked-by: Jiri Kosina
    Acked-by: Hans-Christian Egtvedt
    Acked-by: Jacek Anaszewski
    Signed-off-by: Linus Walleij

    Linus Walleij
     

29 Sep, 2015

1 commit

  • of_default_bus_match_table was not exported earlier, so it could only
    be accessed by code compiled into the kernel. A new function
    of_platform_default_populate() was added which uses
    of_default_bus_match_table and this function is also exported. This way
    it is possible to create a bus with the content of
    of_default_bus_match_table and we can remove the hacks from bcma.

    Signed-off-by: Hauke Mehrtens
    Signed-off-by: Kalle Valo

    Hauke Mehrtens
     

18 Aug, 2015

1 commit


11 Aug, 2015

1 commit

  • bus->host_pdev is part of a union so bus->host_pdev != NULL is probably
    also true for PCIe devices, because there it accesses bus->host_pci. If
    we access the dev member at the offset defined in struct
    platform_device in struct pci_dev instead we probably get something
    else.

    This patch adds a new function which returns the host dev struct and
    NULL if we do not have a host dev. When this gets registered on MIPS
    brcm47xx we do not have a host dev in some situations.
    This function could also be used in other places.

    This problem was introduced in this commit:
    commit cae761b5a6bdc597ba476a040fdcd5b4bc559b85
    Author: Rafa? Mi?ecki
    Date: Sun Jun 28 17:17:13 2015 +0200

    bcma: populate bus DT subnodes as platform_device-s

    Signed-off-by: Hauke Mehrtens
    Signed-off-by: Kalle Valo

    Hauke Mehrtens
     

26 Jul, 2015

1 commit

  • Currently of_default_bus_match_table is not exported so we can only use
    this feature when bcma is build into the kernel. This patch removes
    support for child buses when bcma is build as a module as a temporary
    fix for a build problem introduces in this commit:

    commit cae761b5a6bdc597ba476a040fdcd5b4bc559b85
    Author: Rafał Miłecki
    Date: Sun Jun 28 17:17:13 2015 +0200

    bcma: populate bus DT subnodes as platform_device-s

    Reported-by: Stephen Rothwell
    Fixes: cae761b5a6bd ("bcma: populate bus DT subnodes as platform_device-s")
    Signed-off-by: Hauke Mehrtens
    Signed-off-by: Kalle Valo

    Hauke Mehrtens
     

21 Jul, 2015

1 commit


08 Jun, 2015

1 commit

  • This extension of BCMA_DRIVER_PCI has no reason to depend on
    BCMA_HOST_PCI. User may just want to have PCI device attached to SoC
    registered without enabling any extra client mode code.
    This can be useful when having non-bcma PCI device attached or when
    using other PCI driver.

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Kalle Valo

    Rafał Miłecki
     

09 May, 2015

2 commits


18 Apr, 2015

1 commit

  • Pull MIPS updates from Ralf Baechle:
    "This is the main pull request for MIPS for Linux 4.1. Most
    noteworthy:

    - Add more Octeon-optimized crypto functions
    - Octeon crypto preemption and locking fixes
    - Little endian support for Octeon
    - Use correct CSR to soft reset Octeons
    - Support LEDs on the Octeon-based DSR-1000N
    - Fix PCI interrupt mapping for the Octeon-based DSR-1000N
    - Mark prom_free_prom_memory() as __init for a number of systems
    - Support for Imagination's Pistachio SOC. This includes arch and
    CLK bits. I'd like to merge pinctrl bits later
    - Improve parallelism of csum_partial for certain pipelines
    - Organize DTB files in subdirs like other architectures
    - Implement read_sched_clock for all MIPS platforms other than
    Octeon
    - Massive series of 38 fixes and cleanups for the FPU emulator /
    kernel
    - Further FPU remulator work to support new features. This sits on a
    separate branch which also has been pulled into the 4.1 KVM branch
    - Clean up and fixes for the SEAD3 eval board; remove unused file
    - Various updates for Netlogic platforms
    - A number of small updates for Loongson 3 platforms
    - Increase the memory limit for ATH79 platforms to 256MB
    - A fair number of fixes and updates for BCM47xx platforms
    - Finish the implementation of XPA support
    - MIPS FDC support. No, not floppy controller but Fast Debug Channel :)
    - Detect the R16000 used in SGI legacy platforms
    - Fix Kconfig dependencies for the SSB bus support"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (265 commits)
    MIPS: Makefile: Fix MIPS ASE detection code
    MIPS: asm: elf: Set O32 default FPU flags
    MIPS: BCM47XX: Fix detecting Microsoft MN-700 & Asus WL500G
    MIPS: Kconfig: Disable SMP/CPS for 64-bit
    MIPS: Hibernate: flush TLB entries earlier
    MIPS: smp-cps: cpu_set FPU mask if FPU present
    MIPS: lose_fpu(): Disable FPU when MSA enabled
    MIPS: ralink: add missing symbol for RALINK_ILL_ACC
    MIPS: ralink: Fix bad config symbol in PCI makefile.
    SSB: fix Kconfig dependencies
    MIPS: Malta: Detect and fix bad memsize values
    Revert "MIPS: Avoid pipeline stalls on some MIPS32R2 cores."
    MIPS: Octeon: Delete override of cpu_has_mips_r2_exec_hazard.
    MIPS: Fix cpu_has_mips_r2_exec_hazard.
    MIPS: kernel: entry.S: Set correct ISA level for mips_ihb
    MIPS: asm: spinlock: Fix addiu instruction for R10000_LLSC_WAR case
    MIPS: r4kcache: Use correct base register for MIPS R6 cache flushes
    MIPS: Kconfig: Fix typo for the r2-to-r6 emulator kernel parameter
    MIPS: unaligned: Fix regular load/store instruction emulation for EVA
    MIPS: unaligned: Surround load/store macros in do {} while statements
    ...

    Linus Torvalds
     

01 Apr, 2015

1 commit

  • There are two reasons for having this header in the common place:
    1) Simplifying drivers that read NVRAM entries. We will be able to
    safely call bcm47xx_nvram_* functions without #ifdef-s.
    2) Getting NVRAM driver out of MIPS arch code. This is needed to support
    BCM5301X arch which also requires this NVRAM driver. Patch for that
    will follow once we get is reviewed.

    Signed-off-by: Rafał Miłecki
    Acked-by: Hauke Mehrtens
    Cc: linux-mips@linux-mips.org
    Cc: Arnd Bergmann
    Cc: Paul Walmsley
    Cc: linux-soc@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/8619/
    Signed-off-by: Ralf Baechle

    Rafał Miłecki
     

20 Mar, 2015

1 commit


13 Mar, 2015

3 commits


05 Mar, 2015

3 commits

  • Driver for PCIe core requires PCI to be enabled, however we shouldn't
    require it for the whole bus. Someone may be not interested in extra
    PCI devices and what's more there are SoCs without any PCI at all (like
    BCM5356C0, BCM5357*, BCM47186B0). For more details see Kconfig "help".
    Please note this patch doesn't allow disabling PCI drivers yet, as it
    requires more work on calls to bcma_core_pci_* functions.

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Kalle Valo

    Rafał Miłecki
     
  • These functions are not exported nor used anywhere, so there is no
    reason to put them in public headers.
    Also drop unused bcma_chipco_(suspend|resume).

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Kalle Valo

    Rafał Miłecki
     
  • bcma also needs PCI, just like IOMEM and DMA, so let it depend on PCI,
    or will cause building break for allmodconfig under c6x:

    CC [M] drivers/bcma/driver_pcie2.o
    drivers/bcma/driver_pcie2.c: In function 'bcma_core_pcie2_up':
    drivers/bcma/driver_pcie2.c:196:8: error: implicit declaration of function 'pcie_set_readrq' [-Werror=implicit-function-declaration]
    err = pcie_set_readrq(dev, pcie2->reqsize);
    ^

    Signed-off-by: Chen Gang
    Signed-off-by: Kalle Valo

    Chen Gang
     

03 Mar, 2015

2 commits

  • Just like on BCM47XX arch, BCM5301X also has ChipCommon with IRQ for
    GPIOs. Now we have interrupts working on BCM5301X we can finally make
    use of it. This has been successfully tested on 5 different devices
    (Buffalo, Luxul, Netgear).

    Signed-off-by: Rafał Miłecki
    Signed-off-by: Kalle Valo

    Rafał Miłecki
     
  • kbuild found out that commit 804e27dee49e ("bcma: support bringing up
    bus hosted on PCIe Gen 2") broke the build on m68k:

    drivers/bcma/driver_pcie2.c: In function 'bcma_core_pcie2_up':
    >> drivers/bcma/driver_pcie2.c:196:2: error: implicit declaration of function 'pcie_set_readrq' [-Werror\
    =implicit-function-declaration]
    err = pcie_set_readrq(dev, pcie2->reqsize);
    ^
    cc1: some warnings being treated as errors

    Reported-by: kbuild test robot
    Signed-off-by: Rafał Miłecki
    Signed-off-by: Kalle Valo

    Rafał Miłecki
     

02 Mar, 2015

4 commits


29 Jan, 2015

6 commits


24 Jan, 2015

2 commits


15 Jan, 2015

1 commit


12 Dec, 2014

1 commit

  • Pull MIPS updates from Ralf Baechle:
    "This is an unusually large pull request for MIPS - in parts because
    lots of patches missed the 3.18 deadline but primarily because some
    folks opened the flood gates.

    - Retire the MIPS-specific phys_t with the generic phys_addr_t.
    - Improvments for the backtrace code used by oprofile.
    - Better backtraces on SMP systems.
    - Cleanups for the Octeon platform code.
    - Cleanups and fixes for the Loongson platform code.
    - Cleanups and fixes to the firmware library.
    - Switch ATH79 platform to use the firmware library.
    - Grand overhault to the SEAD3 and Malta interrupt code.
    - Move the GIC interrupt code to drivers/irqchip
    - Lots of GIC cleanups and updates to the GIC code to use modern IRQ
    infrastructures and features of the kernel.
    - OF documentation updates for the GIC bindings
    - Move GIC clocksource driver to drivers/clocksource
    - Merge GIC clocksource driver with clockevent driver.
    - Further updates to bring the GIC clocksource driver up to date.
    - R3000 TLB code cleanups
    - Improvments to the Loongson 3 platform code.
    - Convert pr_warning to pr_warn.
    - Merge a bunch of small lantiq and ralink fixes that have been
    staged/lingering inside the openwrt tree for a while.
    - Update archhelp for IP22/IP32
    - Fix a number of issues for Loongson 1B.
    - New clocksource and clockevent driver for Loongson 1B.
    - Further work on clk handling for Loongson 1B.
    - Platform work for Broadcom BMIPS.
    - Error handling cleanups for TurboChannel.
    - Fixes and optimization to the microMIPS support.
    - Option to disable the FTLB.
    - Dump more relevant information on machine check exception
    - Change binfmt to allow arch to examine PT_*PROC headers
    - Support for new style FPU register model in O32
    - VDSO randomization.
    - BCM47xx cleanups
    - BCM47xx reimplement the way the kernel accesses NVRAM information.
    - Random cleanups
    - Add support for ATH25 platforms
    - Remove pointless locking code in some PCI platforms.
    - Some improvments to EVA support
    - Minor Alchemy cleanup"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (185 commits)
    MIPS: Add MFHC0 and MTHC0 instructions to uasm.
    MIPS: Cosmetic cleanups of page table headers.
    MIPS: Add CP0 macros for extended EntryLo registers
    MIPS: Remove now unused definition of phys_t.
    MIPS: Replace use of phys_t with phys_addr_t.
    MIPS: Replace MIPS-specific 64BIT_PHYS_ADDR with generic PHYS_ADDR_T_64BIT
    PCMCIA: Alchemy Don't select 64BIT_PHYS_ADDR in Kconfig.
    MIPS: lib: memset: Clean up some MIPS{EL,EB} ifdefery
    MIPS: iomap: Use __mem_{read,write}{b,w,l} for MMIO
    MIPS: fix indentation.
    MAINTAINERS: Add entry for BMIPS multiplatform kernel
    MIPS: Enable VDSO randomization
    MIPS: Remove a temporary hack for debugging cache flushes in SMTC configuration
    MIPS: Remove declaration of obsolete arch_init_clk_ops()
    MIPS: atomic.h: Reformat to fit in 79 columns
    MIPS: Apply `.insn' to fixup labels throughout
    MIPS: Fix microMIPS LL/SC immediate offsets
    MIPS: Kconfig: Only allow 32-bit microMIPS builds
    MIPS: signal.c: Fix an invalid cast in ISA mode bit handling
    MIPS: mm: Only build one microassembler that is suitable
    ...

    Linus Torvalds
     

24 Nov, 2014

1 commit


20 Nov, 2014

1 commit


12 Nov, 2014

1 commit

  • It is not possible to auto detect the irq numbers used by the cores on
    an arm SoC. If bcma was registered with device tree it will search for
    some device tree nodes with the irq number and add it to the core
    configuration.

    Signed-off-by: Hauke Mehrtens
    Signed-off-by: John W. Linville

    Hauke Mehrtens