12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #include <errno.h>
- #include <kernel.h>
- #include "soc.h"
- int acts_pinmux_set(unsigned int pin, unsigned int mode)
- {
- unsigned int key, ctl_reg, val;
- if (pin >= GPIO_MAX_PIN_NUM)
- return -EINVAL;
- ctl_reg = GPIO_REG_CTL(GPIO_REG_BASE, pin);
- key = irq_lock();
- val = (sys_read32(ctl_reg) & ~PINMUX_MODE_MASK) | mode;
- sys_write32(val, ctl_reg);
- irq_unlock(key);
- return 0;
- }
- int acts_pinmux_get(unsigned int pin, unsigned int *mode)
- {
- unsigned int ctl_reg = GPIO_REG_CTL(GPIO_REG_BASE, pin);
- *mode = sys_read32(ctl_reg) & PINMUX_MODE_MASK;
- return 0;
- }
- void acts_pinmux_setup_pins(const struct acts_pin_config *pinconf, int pins)
- {
- int i;
- for (i = 0; i < pins; i++) {
- acts_pinmux_set(pinconf[i].pin_num, pinconf[i].mode);
-
-
- }
- }
|