Skip to content

Commit

Permalink
Blackfin: gpio/ints: generalize pint logic
Browse files Browse the repository at this point in the history
Have the logic that uses peripheral interrupt blocks key off of pint
defines rather than CPU names so that things are generalized across
families.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
  • Loading branch information
Mike Frysinger committed Jul 23, 2011
1 parent 85c2737 commit 01f8e34
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 12 deletions.
11 changes: 8 additions & 3 deletions arch/blackfin/include/asm/gpio.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
#define PERIPHERAL_USAGE 1
#define GPIO_USAGE 0

#ifndef BFIN_GPIO_PINT
# define BFIN_GPIO_PINT 0
#endif

#ifndef __ASSEMBLY__

#include <linux/compiler.h>
Expand All @@ -40,7 +44,7 @@
* MODIFICATION HISTORY :
**************************************************************/

#ifndef CONFIG_BF54x
#if !BFIN_GPIO_PINT
void set_gpio_dir(unsigned, unsigned short);
void set_gpio_inen(unsigned, unsigned short);
void set_gpio_polar(unsigned, unsigned short);
Expand Down Expand Up @@ -133,7 +137,7 @@ static inline void bfin_pm_standby_restore(void)
void bfin_gpio_pm_hibernate_restore(void);
void bfin_gpio_pm_hibernate_suspend(void);

#ifndef CONFIG_BF54x
# if !BFIN_GPIO_PINT
int gpio_pm_wakeup_ctrl(unsigned gpio, unsigned ctrl);

struct gpio_port_s {
Expand All @@ -150,8 +154,9 @@ struct gpio_port_s {
unsigned short reserved;
unsigned short mux;
};
#endif /*CONFIG_BF54x*/
# endif
#endif /*CONFIG_PM*/

/***********************************************************
*
* FUNCTIONS: Blackfin GPIO Driver
Expand Down
2 changes: 2 additions & 0 deletions arch/blackfin/mach-bf548/include/mach/gpio.h
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,8 @@

#define MAX_BLACKFIN_GPIOS 160

#define BFIN_GPIO_PINT 1

#ifndef __ASSEMBLY__

struct gpio_port_t {
Expand Down
18 changes: 9 additions & 9 deletions arch/blackfin/mach-common/ints-priority.c
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ static inline void bfin_set_irq_handler(unsigned irq, irq_flow_handler_t handle)
static DECLARE_BITMAP(gpio_enabled, MAX_BLACKFIN_GPIOS);
extern void bfin_gpio_irq_prepare(unsigned gpio);

#if !defined(CONFIG_BF54x)
#if !BFIN_GPIO_PINT

static void bfin_gpio_ack_irq(struct irq_data *d)
{
Expand Down Expand Up @@ -633,7 +633,7 @@ void bfin_demux_gpio_irq(unsigned int inta_irq,
bfin_demux_gpio_block(irq);
}

#else /* CONFIG_BF54x */
#else

#define NR_PINT_SYS_IRQS 4
#define NR_PINT_BITS 32
Expand Down Expand Up @@ -968,7 +968,7 @@ int __init init_arch_irq(void)

local_irq_disable();

#ifdef CONFIG_BF54x
#if BFIN_GPIO_PINT
# ifdef CONFIG_PINTx_REASSIGN
pint[0]->assign = CONFIG_PINT0_ASSIGN;
pint[1]->assign = CONFIG_PINT1_ASSIGN;
Expand All @@ -986,16 +986,16 @@ int __init init_arch_irq(void)
irq_set_chip(irq, &bfin_internal_irqchip);

switch (irq) {
#if defined(BF537_FAMILY)
case IRQ_PH_INTA_MAC_RX:
case IRQ_PF_INTA_PG_INTA:
#elif defined(BF533_FAMILY)
case IRQ_PROG_INTA:
#elif defined(CONFIG_BF54x)
#if BFIN_GPIO_PINT
case IRQ_PINT0:
case IRQ_PINT1:
case IRQ_PINT2:
case IRQ_PINT3:
#elif defined(BF537_FAMILY)
case IRQ_PH_INTA_MAC_RX:
case IRQ_PF_INTA_PG_INTA:
#elif defined(BF533_FAMILY)
case IRQ_PROG_INTA:
#elif defined(CONFIG_BF52x) || defined(CONFIG_BF51x)
case IRQ_PORTF_INTA:
case IRQ_PORTG_INTA:
Expand Down

0 comments on commit 01f8e34

Please sign in to comment.