avr_ioport_t * p = (avr_ioport_t *)param;
avr_t * avr = p->io.avr;
- int output = value & 0x100;
+ int output = value & AVR_IOPORT_OUTPUT;
value &= 0xff;
uint8_t mask = 1 << irq->irq;
// set the real PIN bit. ddr doesn't matter here as it's masked when read.
return res;
}
+static const char * irq_names[IOPORT_IRQ_COUNT] = {
+ [IOPORT_IRQ_PIN0] = "=pin0",
+ [IOPORT_IRQ_PIN1] = "=pin1",
+ [IOPORT_IRQ_PIN2] = "=pin2",
+ [IOPORT_IRQ_PIN3] = "=pin3",
+ [IOPORT_IRQ_PIN4] = "=pin4",
+ [IOPORT_IRQ_PIN5] = "=pin5",
+ [IOPORT_IRQ_PIN6] = "=pin6",
+ [IOPORT_IRQ_PIN7] = "=pin7",
+ [IOPORT_IRQ_PIN_ALL] = "=all",
+ [IOPORT_IRQ_DIRECTION_ALL] = ">ddr",
+};
+
static avr_io_t _io = {
- .kind = "io",
+ .kind = "port",
.reset = avr_ioport_reset,
.ioctl = avr_ioport_ioctl,
+ .irq_names = irq_names,
};
void avr_ioport_init(avr_t * avr, avr_ioport_t * p)