02 Oct, 2015

1 commit

  • The state container of the Altera GPIO driver is extracted from
    the gpio_chip exploiting the fact that offsetof() the
    struct gpio_chip inside the struct of_mm_gpio_chip are both 0, so
    the container_of() is in practice a noop. However if a member
    is added to struct altera_gpio_chip in front of
    struct of_mm_gpio_chip, things will break. Using proper
    container_of() avoids this problem.

    Semantically this is a noop, the compiler will optimize it away,
    but syntactically it makes me happier.

    Cc: Tien Hock Loh
    Signed-off-by: Linus Walleij

    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
     

16 Jul, 2015

2 commits


16 Jun, 2015

1 commit


27 Mar, 2015

1 commit


08 Mar, 2015

1 commit

  • Adds a new driver for Altera soft GPIO IP. The driver is able to do
    read/write and allows GPIO to be a interrupt controller.

    Tested on Altera GHRD on interrupt handling and IO.

    v10:
    - Updated conflicting device tree parameters
    - Removed unused headers
    - Used macro instead of magic numbers for ngpio
    - Code readability cleanup using ?: and temporal variables
    - Removed leftover garbage and unnecessary function calls
    - Checked bgpio_init but unusable because Altera GPIO may not
    be a multiple of 8 bits

    v9:
    - Removed duplicated initialization on set_type using temporals
    to improve code readability in calling generic_handle_irq
    - Using ?: ternary to reduce code size

    v8:
    - Using for_each_set_bit
    - Added const for struct definition
    - Removed naggy pr_err
    - Sort alpha header
    - Remove unused macros
    - Use fixed width data types instead of unsigned long
    - Whitespace issue fixes
    - Removed _relaxed function for better compatibility across different
    CPU
    - Changed irq_create_mapping to platform_get_irq updated implementation
    to use gpiochip_irqchip_add
    - Reserve interrupt-cells number 2 in device tree binding for future
    use
    - Remove confusing sections on devicetree bindings
    - Added tristate Kconfig help text

    v7:
    - Used dev_warn instead of pr_warn
    - Clean up unnecesarry if else indentation

    v6:
    - Added irq_startup and irq_shutdown
    - Changed bitwise clamping style
    - Cleanup bitwise operation to improve readability change naming of
    mapped irqs from virq to mapped_irq

    v5:
    - Dispose irq_domain mapping correctly
    - Update optional binding description in binding docs

    v4:
    - Added vendor prefix to devicetree binding for IP specific properties
    using MMIO GPIO helper library instead of manually map PIO to memory
    - altera_gpio_chip inline struct documentation to kerneldoc
    - Using dev_ print to print a better failure message

    v2, v3:
    - Do not reference NO_IRQ
    - Updated irq_set_type to only allow the hardware configured irq type

    Signed-off-by: Tien Hock Loh
    Signed-off-by: Linus Walleij

    Tien Hock Loh