Commit 8b7739b4a78f594ce7cf011f5031836c4c62c72f
authorMichel Pollet <buserror@gmail.com>
Thu, 2 Sep 2010 12:00:48 +0000 (13:00 +0100)
committerMichel Pollet <buserror@gmail.com>
Thu, 2 Sep 2010 12:00:48 +0000 (13:00 +0100)
All converted to the brand new way...

Signed-off-by: Michel Pollet <buserror@gmail.com>
7 files changed:
simavr/sim/avr_adc.c
simavr/sim/avr_extint.c
simavr/sim/avr_ioport.c
simavr/sim/avr_spi.c
simavr/sim/avr_timer.c
simavr/sim/avr_twi.c
simavr/sim/avr_uart.c

index 7dafdbb69d976ec8287455848d6c5a905e08fefd..3e010c95dbff4f8b04774458cac9d70b143620b1 100644 (file)
@@ -221,13 +221,10 @@ void avr_adc_init(avr_t * avr, avr_adc_t * p)
 {
        p->io = _io;
 
-       // allocate this module's IRQ
-       p->io.irq_count = ADC_IRQ_COUNT;
-       p->io.irq = avr_alloc_irq(0, p->io.irq_count);
-       p->io.irq_ioctl_get = AVR_IOCTL_ADC_GETIRQ;
-
        avr_register_io(avr, &p->io);
        avr_register_vector(avr, &p->adc);
+       // allocate this module's IRQ
+       avr_io_setirqs(&p->io, AVR_IOCTL_ADC_GETIRQ, ADC_IRQ_COUNT, NULL);
 
        avr_register_io_write(avr, p->r_adcsra, avr_adc_write, p);
        avr_register_io_read(avr, p->r_adcl, avr_adc_read_l, p);
index 4d1ce65bbe5ced483662fbfbf518a77e53ee7598..5a900fca935dd54d613c985c8cee7b4e8a950671 100644 (file)
@@ -78,13 +78,11 @@ void avr_extint_init(avr_t * avr, avr_extint_t * p)
 {
        p->io = _io;
 
-       // allocate this module's IRQ
-       p->io.irq_count = EXTINT_COUNT;
-       p->io.irq = avr_alloc_irq(0, p->io.irq_count);
-       p->io.irq_ioctl_get = AVR_IOCTL_EXTINT_GETIRQ();
-
        avr_register_io(avr, &p->io);
        for (int i = 0; i < EXTINT_COUNT; i++)
                avr_register_vector(avr, &p->eint[i].vector);
+
+       // allocate this module's IRQ
+       avr_io_setirqs(&p->io, AVR_IOCTL_EXTINT_GETIRQ(), EXTINT_COUNT, NULL);
 }
 
index 010e62e7c9f0d2f860e390968a2ac9680374aa93..cb238eb1a5cd95e9978b15bdd53795b523a4e7b4 100644 (file)
@@ -172,14 +172,11 @@ void avr_ioport_init(avr_t * avr, avr_ioport_t * p)
 //             p->name, p->r_pin,
 //             p->name, p->r_ddr,
 //             p->name, p->r_port);
-
-       // allocate this module's IRQ
-       p->io.irq_count = IOPORT_IRQ_COUNT;
-       p->io.irq = avr_alloc_irq(0, p->io.irq_count);
-       p->io.irq_ioctl_get = AVR_IOCTL_IOPORT_GETIRQ(p->name);
        
        avr_register_io(avr, &p->io);
        avr_register_vector(avr, &p->pcint);
+       // allocate this module's IRQ
+       avr_io_setirqs(&p->io, AVR_IOCTL_IOPORT_GETIRQ(p->name), IOPORT_IRQ_COUNT, NULL);
 
        avr_register_io_write(avr, p->r_port, avr_ioport_write, p);
        avr_register_io_read(avr, p->r_pin, avr_ioport_read, p);
index 141eb1e84d94ff24b8629b418185d57d13f4088c..3b353285b60222f320937445078c0489addbbd06 100644 (file)
@@ -90,15 +90,11 @@ static      avr_io_t        _io = {
 void avr_spi_init(avr_t * avr, avr_spi_t * p)
 {
        p->io = _io;
+
        avr_register_io(avr, &p->io);
        avr_register_vector(avr, &p->spi);
-
-       //printf("%s SPI%c init\n", __FUNCTION__, p->name);
-
        // allocate this module's IRQ
-       p->io.irq_count = SPI_IRQ_COUNT;
-       p->io.irq = avr_alloc_irq(0, p->io.irq_count);
-       p->io.irq_ioctl_get = AVR_IOCTL_SPI_GETIRQ(p->name);
+       avr_io_setirqs(&p->io, AVR_IOCTL_SPI_GETIRQ(p->name), SPI_IRQ_COUNT, NULL);
 
        avr_register_io_write(avr, p->r_spdr, avr_spi_write, p);
        avr_register_io_read(avr, p->r_spdr, avr_spi_read, p);
index be213384910b2d82709e711bc78fe432d0a7bfc9..f0199522bbaa7d7556306afb8fe29d88bf0c4d07 100644 (file)
@@ -392,10 +392,12 @@ void avr_timer_init(avr_t * avr, avr_timer_t * p)
 {
        p->io = _io;
 
+       avr_register_io(avr, &p->io);
+       avr_register_vector(avr, &p->overflow);
+       avr_register_vector(avr, &p->icr);
+
        // allocate this module's IRQ
-       p->io.irq_count = TIMER_IRQ_COUNT;
-       p->io.irq = avr_alloc_irq(0, p->io.irq_count);
-       p->io.irq_ioctl_get = AVR_IOCTL_TIMER_GETIRQ(p->name);
+       avr_io_setirqs(&p->io, AVR_IOCTL_TIMER_GETIRQ(p->name), TIMER_IRQ_COUNT, NULL);
 
        // marking IRQs as "filtered" means they don't propagate if the
        // new value raised is the same as the last one.. in the case of the
@@ -403,10 +405,6 @@ void avr_timer_init(avr_t * avr, avr_timer_t * p)
        p->io.irq[TIMER_IRQ_OUT_PWM0].flags |= IRQ_FLAG_FILTERED;
        p->io.irq[TIMER_IRQ_OUT_PWM1].flags |= IRQ_FLAG_FILTERED;
 
-       avr_register_io(avr, &p->io);
-       avr_register_vector(avr, &p->overflow);
-       avr_register_vector(avr, &p->icr);
-
        if (p->wgm[0].reg) // these are not present on older AVRs
                avr_register_io_write(avr, p->wgm[0].reg, avr_timer_write, p);
        avr_register_io_write(avr, p->cs[0].reg, avr_timer_write, p);
index cc521d0da895fe14f61baa08fe5d9f58280429d0..668070ac96e1c3e8554714d2e30ddffcec5f8c87 100644 (file)
@@ -122,9 +122,7 @@ void avr_twi_init(avr_t * avr, avr_twi_t * p)
        //printf("%s TWI%c init\n", __FUNCTION__, p->name);
 
        // allocate this module's IRQ
-       p->io.irq_count = TWI_IRQ_COUNT;
-       p->io.irq = avr_alloc_irq(0, p->io.irq_count);
-       p->io.irq_ioctl_get = AVR_IOCTL_TWI_GETIRQ(p->name);
+       avr_io_setirqs(&p->io, AVR_IOCTL_TWI_GETIRQ(p->name), TWI_IRQ_COUNT, NULL);
 
        avr_register_io_write(avr, p->r_twdr, avr_twi_write, p);
        avr_register_io_read(avr, p->r_twdr, avr_twi_read, p);
index c1e82f61439f28951d8c5d25988528a1291084c7..3a7c6aecf6927754f56422da375146643376bb0c 100644 (file)
@@ -219,11 +219,6 @@ void avr_uart_init(avr_t * avr, avr_uart_t * p)
 
 //     printf("%s UART%c UDR=%02x\n", __FUNCTION__, p->name, p->r_udr);
 
-       // allocate this module's IRQ
-       p->io.irq_count = UART_IRQ_COUNT;
-       p->io.irq = avr_alloc_irq(0, p->io.irq_count);
-       p->io.irq_ioctl_get = AVR_IOCTL_UART_GETIRQ(p->name);
-
        p->flags = AVR_UART_FLAG_POOL_SLEEP|AVR_UART_FLAG_STDIO;
 
        avr_register_io(avr, &p->io);
@@ -231,6 +226,9 @@ void avr_uart_init(avr_t * avr, avr_uart_t * p)
        avr_register_vector(avr, &p->txc);
        avr_register_vector(avr, &p->udrc);
 
+       // allocate this module's IRQ
+       avr_io_setirqs(&p->io, AVR_IOCTL_UART_GETIRQ(p->name), UART_IRQ_COUNT, NULL);
+
        avr_register_io_write(avr, p->r_udr, avr_uart_write, p);
        avr_register_io_read(avr, p->r_udr, avr_uart_read, p);
        // monitor code that reads the rxc flag, and delay it a bit