mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-19 12:51:23 +02:00
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
83 lines
2.9 KiB
C
83 lines
2.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (C) 2015 Atmel Corporation.
|
|
* Wenyou Yang <wenyou.yang@atmel.com>
|
|
*/
|
|
|
|
#ifndef __ATMEL_PIO4_H
|
|
#define __ATMEL_PIO4_H
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
struct atmel_pio4_port {
|
|
u32 mskr; /* 0x00 PIO Mask Register */
|
|
u32 cfgr; /* 0x04 PIO Configuration Register */
|
|
u32 pdsr; /* 0x08 PIO Pin Data Status Register */
|
|
u32 locksr; /* 0x0C PIO Lock Status Register */
|
|
u32 sodr; /* 0x10 PIO Set Output Data Register */
|
|
u32 codr; /* 0x14 PIO Clear Output Data Register */
|
|
u32 odsr; /* 0x18 PIO Output Data Status Register */
|
|
u32 reserved0;
|
|
u32 ier; /* 0x20 PIO Interrupt Enable Register */
|
|
u32 idr; /* 0x24 PIO Interrupt Disable Register */
|
|
u32 imr; /* 0x28 PIO Interrupt Mask Register */
|
|
u32 isr; /* 0x2C PIO Interrupt Status Register */
|
|
u32 reserved1[3];
|
|
u32 iofr; /* 0x3C PIO I/O Freeze Register */
|
|
};
|
|
|
|
#endif
|
|
|
|
/*
|
|
* PIO Configuration Register Fields
|
|
*/
|
|
#define ATMEL_PIO_CFGR_FUNC_MASK GENMASK(2, 0)
|
|
#define ATMEL_PIO_CFGR_FUNC_GPIO (0x0 << 0)
|
|
#define ATMEL_PIO_CFGR_FUNC_PERIPH_A (0x1 << 0)
|
|
#define ATMEL_PIO_CFGR_FUNC_PERIPH_B (0x2 << 0)
|
|
#define ATMEL_PIO_CFGR_FUNC_PERIPH_C (0x3 << 0)
|
|
#define ATMEL_PIO_CFGR_FUNC_PERIPH_D (0x4 << 0)
|
|
#define ATMEL_PIO_CFGR_FUNC_PERIPH_E (0x5 << 0)
|
|
#define ATMEL_PIO_CFGR_FUNC_PERIPH_F (0x6 << 0)
|
|
#define ATMEL_PIO_CFGR_FUNC_PERIPH_G (0x7 << 0)
|
|
#define ATMEL_PIO_DIR_MASK BIT(8)
|
|
#define ATMEL_PIO_PUEN_MASK BIT(9)
|
|
#define ATMEL_PIO_PDEN_MASK BIT(10)
|
|
#define ATMEL_PIO_IFEN_MASK BIT(12)
|
|
#define ATMEL_PIO_IFSCEN_MASK BIT(13)
|
|
#define ATMEL_PIO_OPD_MASK BIT(14)
|
|
#define ATMEL_PIO_SCHMITT_MASK BIT(15)
|
|
#define ATMEL_PIO_CFGR_EVTSEL_MASK GENMASK(26, 24)
|
|
#define ATMEL_PIO_CFGR_EVTSEL_FALLING (0 << 24)
|
|
#define ATMEL_PIO_CFGR_EVTSEL_RISING (1 << 24)
|
|
#define ATMEL_PIO_CFGR_EVTSEL_BOTH (2 << 24)
|
|
#define ATMEL_PIO_CFGR_EVTSEL_LOW (3 << 24)
|
|
#define ATMEL_PIO_CFGR_EVTSEL_HIGH (4 << 24)
|
|
|
|
#define ATMEL_PIO_NPINS_PER_BANK 32
|
|
#define ATMEL_PIO_BANK(pin_id) (pin_id / ATMEL_PIO_NPINS_PER_BANK)
|
|
#define ATMEL_PIO_LINE(pin_id) (pin_id % ATMEL_PIO_NPINS_PER_BANK)
|
|
#define ATMEL_PIO_BANK_OFFSET 0x40
|
|
|
|
#define ATMEL_GET_PIN_NO(pinfunc) ((pinfunc) & 0xff)
|
|
#define ATMEL_GET_PIN_FUNC(pinfunc) ((pinfunc >> 16) & 0xf)
|
|
#define ATMEL_GET_PIN_IOSET(pinfunc) ((pinfunc >> 20) & 0xf)
|
|
|
|
#define AT91_PIO_PORTA 0x0
|
|
#define AT91_PIO_PORTB 0x1
|
|
#define AT91_PIO_PORTC 0x2
|
|
#define AT91_PIO_PORTD 0x3
|
|
|
|
int atmel_pio4_set_gpio(u32 port, u32 pin, u32 use_pullup);
|
|
int atmel_pio4_set_a_periph(u32 port, u32 pin, u32 use_pullup);
|
|
int atmel_pio4_set_b_periph(u32 port, u32 pin, u32 use_pullup);
|
|
int atmel_pio4_set_c_periph(u32 port, u32 pin, u32 use_pullup);
|
|
int atmel_pio4_set_d_periph(u32 port, u32 pin, u32 use_pullup);
|
|
int atmel_pio4_set_e_periph(u32 port, u32 pin, u32 use_pullup);
|
|
int atmel_pio4_set_f_periph(u32 port, u32 pin, u32 use_pullup);
|
|
int atmel_pio4_set_g_periph(u32 port, u32 pin, u32 use_pullup);
|
|
int atmel_pio4_set_pio_output(u32 port, u32 pin, u32 value);
|
|
int atmel_pio4_get_pio_input(u32 port, u32 pin);
|
|
|
|
#endif
|