#include <asm/arch/hardware.h>
#include <mach/atmel_pio4.h>
static struct atmel_pio4_port *atmel_pio4_port_base(u32 port)
struct atmel_pio4_port *base = NULL;
base = (struct atmel_pio4_port *)ATMEL_BASE_PIOA;
base = (struct atmel_pio4_port *)ATMEL_BASE_PIOB;
base = (struct atmel_pio4_port *)ATMEL_BASE_PIOC;
base = (struct atmel_pio4_port *)ATMEL_BASE_PIOD;
printf("Error: Atmel PIO4: Failed to get PIO base of port#%d!\n",
static int atmel_pio4_config_io_func(u32 port, u32 pin,
struct atmel_pio4_port *port_base;
if (pin >= ATMEL_PIO_NPINS_PER_BANK)
port_base = atmel_pio4_port_base(port);
writel(mask, &port_base->mskr);
writel(reg, &port_base->cfgr);
int atmel_pio4_set_gpio(u32 port, u32 pin, u32 config)
return atmel_pio4_config_io_func(port, pin,
ATMEL_PIO_CFGR_FUNC_GPIO,
int atmel_pio4_set_a_periph(u32 port, u32 pin, u32 config)
return atmel_pio4_config_io_func(port, pin,
ATMEL_PIO_CFGR_FUNC_PERIPH_A,
int atmel_pio4_set_b_periph(u32 port, u32 pin, u32 config)
return atmel_pio4_config_io_func(port, pin,
ATMEL_PIO_CFGR_FUNC_PERIPH_B,
int atmel_pio4_set_c_periph(u32 port, u32 pin, u32 config)
return atmel_pio4_config_io_func(port, pin,
ATMEL_PIO_CFGR_FUNC_PERIPH_C,