mirror of
https://github.com/aolofsson/oh.git
synced 2025-02-07 06:44:09 +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.
|
* @return 0 on success, negative on error.
|
||||||
*/
|
*/
|
||||||
int gpio_toggle(gpio_dev_t *dev, unsigned gpio);
|
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;
|
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_read _gpio_read
|
||||||
#define gpio_write _gpio_write
|
#define gpio_write _gpio_write
|
||||||
#define gpio_toggle _gpio_toggle
|
#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);
|
//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
|
#ifndef __unused
|
||||||
# if defined(__GNUC__) || defined(__clang__)
|
# if defined(__GNUC__) || defined(__clang__)
|
||||||
# define __unused __attribute__((unused))
|
# define __unused __attribute__((unused))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user