mirror of
https://github.com/aolofsson/oh.git
synced 2025-01-30 02:32:53 +08:00
GPIO: Add raw register access API
Add gpio_reg_write() and gpio_reg_read() functions. Signed-off-by: Ola Jeppsson <ola@adapteva.com>
This commit is contained in:
parent
137994f13a
commit
510b6669a8
@ -65,4 +65,38 @@ int gpio_write(gpio_dev_t *dev, unsigned gpio, int value);
|
||||
* @return 0 on success, negative on error.
|
||||
*/
|
||||
int gpio_toggle(gpio_dev_t *dev, unsigned gpio);
|
||||
|
||||
|
||||
/*** Raw register access API */
|
||||
|
||||
#define GPIO_REG_DIR (0x0 << 3)
|
||||
#define GPIO_REG_IN (0x1 << 3)
|
||||
#define GPIO_REG_OUT (0x2 << 3)
|
||||
#define GPIO_REG_OUTCLR (0x3 << 3)
|
||||
#define GPIO_REG_OUTSET (0x4 << 3)
|
||||
#define GPIO_REG_OUTXORA (0x5 << 3)
|
||||
#define GPIO_REG_IMASK (0x6 << 3)
|
||||
#define GPIO_REG_ITYPE (0x7 << 3)
|
||||
#define GPIO_REG_IPOL (0x8 << 3)
|
||||
#define GPIO_REG_ILAT (0x9 << 3)
|
||||
#define GPIO_REG_ILATCLR (0xA << 3)
|
||||
|
||||
/**
|
||||
* gpio_reg_read - Read a GPIO register
|
||||
*
|
||||
* @param dev device structure
|
||||
* @param reg gpio register
|
||||
*
|
||||
* @return Register value, no error checking.
|
||||
*/
|
||||
//uint64_t gpio_reg_read(gpio_dev_t *dev, unsigned reg);
|
||||
|
||||
/**
|
||||
* gpio_reg_write - write to a GPIO register
|
||||
*
|
||||
* @param dev device structure
|
||||
* @param reg gpio register
|
||||
*
|
||||
*/
|
||||
//void gpio_reg_write(gpio_dev_t *dev, unsigned reg, uint64_t value);
|
||||
```
|
||||
|
@ -64,3 +64,18 @@ static int _gpio_toggle(struct gpio_generic_dev *dev, unsigned gpio)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
__unused
|
||||
static uint64_t _gpio_reg_read(struct gpio_generic_dev *dev, unsigned reg)
|
||||
{
|
||||
uint64_t *regs = (uint64_t *) dev->regs;
|
||||
return regs[reg];
|
||||
}
|
||||
|
||||
__unused
|
||||
static void _gpio_reg_write(struct gpio_generic_dev *dev, unsigned reg,
|
||||
uint64_t value)
|
||||
{
|
||||
uint64_t *regs = (uint64_t *) dev->regs;
|
||||
regs[reg] = value;
|
||||
}
|
||||
|
@ -27,3 +27,5 @@ static int gpio_init(gpio_dev_t *dev, void *arg)
|
||||
#define gpio_read _gpio_read
|
||||
#define gpio_write _gpio_write
|
||||
#define gpio_toggle _gpio_toggle
|
||||
#define gpio_reg_read _gpio_reg_read
|
||||
#define gpio_reg_write _gpio_reg_write
|
||||
|
@ -63,6 +63,41 @@
|
||||
*/
|
||||
//int gpio_toggle(gpio_dev_t *dev, unsigned gpio);
|
||||
|
||||
|
||||
/*** Raw register access API */
|
||||
|
||||
#define GPIO_REG_DIR (0x0 << 3)
|
||||
#define GPIO_REG_IN (0x1 << 3)
|
||||
#define GPIO_REG_OUT (0x2 << 3)
|
||||
#define GPIO_REG_OUTCLR (0x3 << 3)
|
||||
#define GPIO_REG_OUTSET (0x4 << 3)
|
||||
#define GPIO_REG_OUTXORA (0x5 << 3)
|
||||
#define GPIO_REG_IMASK (0x6 << 3)
|
||||
#define GPIO_REG_ITYPE (0x7 << 3)
|
||||
#define GPIO_REG_IPOL (0x8 << 3)
|
||||
#define GPIO_REG_ILAT (0x9 << 3)
|
||||
#define GPIO_REG_ILATCLR (0xA << 3)
|
||||
|
||||
/**
|
||||
* gpio_reg_read - Read a GPIO register
|
||||
*
|
||||
* @param dev device structure
|
||||
* @param reg gpio register
|
||||
*
|
||||
* @return Register value, no error checking.
|
||||
*/
|
||||
//uint64_t gpio_reg_read(gpio_dev_t *dev, unsigned reg);
|
||||
|
||||
/**
|
||||
* gpio_reg_write - write to a GPIO register
|
||||
*
|
||||
* @param dev device structure
|
||||
* @param reg gpio register
|
||||
*
|
||||
*/
|
||||
//void gpio_reg_write(gpio_dev_t *dev, unsigned reg, uint64_t value);
|
||||
|
||||
|
||||
#ifndef __unused
|
||||
# if defined(__GNUC__) || defined(__clang__)
|
||||
# define __unused __attribute__((unused))
|
||||
|
Loading…
x
Reference in New Issue
Block a user