pru: Use enumerations for pin mappings

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2019-03-12 12:31:07 -04:00 committed by KevinOConnor
parent 91cf497656
commit ae24baf99a
3 changed files with 8 additions and 13 deletions

View File

@ -13,18 +13,7 @@ class error(Exception):
# Hardware pin names
######################################################################
def named_pins(fmt, port_count, bit_count=32):
return { fmt % (port, portbit) : port * bit_count + portbit
for port in range(port_count)
for portbit in range(bit_count) }
def beaglebone_pins():
gpios = named_pins("gpio%d_%d", 4)
gpios.update({"AIN%d" % i: i+4*32 for i in range(8)})
return gpios
MCU_PINS = {
"pru": beaglebone_pins(),
"linux": {"analog%d" % i: i for i in range(8)}, # XXX
}
@ -141,8 +130,7 @@ beagleboneblack_mappings = {
def update_map_beaglebone(pins, mcu):
if mcu != 'pru':
raise error("Beaglebone aliases not supported on mcu '%s'" % (mcu,))
for pin, gpio in beagleboneblack_mappings.items():
pins[pin] = pins[gpio]
pins.update(beagleboneblack_mappings)
######################################################################

View File

@ -51,6 +51,8 @@ adc_full_reset(void)
have_done_reset = 1;
}
DECL_ENUMERATION_RANGE("pin", "AIN0", 4 * 32, 8);
struct gpio_adc
gpio_adc_setup(uint8_t pin)
{

View File

@ -29,6 +29,11 @@ struct gpio_regs {
volatile uint32_t setdataout;
};
DECL_ENUMERATION_RANGE("pin", "gpio0_0", GPIO(0, 0), 32);
DECL_ENUMERATION_RANGE("pin", "gpio1_0", GPIO(1, 0), 32);
DECL_ENUMERATION_RANGE("pin", "gpio2_0", GPIO(2, 0), 32);
DECL_ENUMERATION_RANGE("pin", "gpio3_0", GPIO(3, 0), 32);
static struct gpio_regs *digital_regs[] = {
(void*)0x44e07000, (void*)0x4804c000, (void*)0x481ac000, (void*)0x481ae000
};