Revision d537cf6c hw/sb16.c

b/hw/sb16.c
54 54

  
55 55
typedef struct SB16State {
56 56
    QEMUSoundCard card;
57
    qemu_irq *pic;
57 58
    int irq;
58 59
    int dma;
59 60
    int hdma;
......
187 188
{
188 189
    SB16State *s = opaque;
189 190
    s->can_write = 1;
190
    pic_set_irq (s->irq, 1);
191
    qemu_irq_raise (s->pic[s->irq]);
191 192
}
192 193

  
193 194
#define DMA8_AUTO 1
......
595 596
        case 0xf3:
596 597
            dsp_out_data (s, 0xaa);
597 598
            s->mixer_regs[0x82] |= (cmd == 0xf2) ? 1 : 2;
598
            pic_set_irq (s->irq, 1);
599
            qemu_irq_raise (s->pic[s->irq]);
599 600
            break;
600 601

  
601 602
        case 0xf9:
......
763 764
                bytes = samples << s->fmt_stereo << (s->fmt_bits == 16);
764 765
                ticks = (bytes * ticks_per_sec) / freq;
765 766
                if (ticks < ticks_per_sec / 1024) {
766
                    pic_set_irq (s->irq, 1);
767
                    qemu_irq_raise (s->pic[s->irq]);
767 768
                }
768 769
                else {
769 770
                    if (s->aux_ts) {
......
855 856

  
856 857
static void reset (SB16State *s)
857 858
{
858
    pic_set_irq (s->irq, 0);
859
    qemu_irq_lower (s->pic[s->irq]);
859 860
    if (s->dma_auto) {
860
        pic_set_irq (s->irq, 1);
861
        pic_set_irq (s->irq, 0);
861
        qemu_irq_raise (s->pic[s->irq]);
862
        qemu_irq_lower (s->pic[s->irq]);
862 863
    }
863 864

  
864 865
    s->mixer_regs[0x82] = 0;
......
894 895
            if (s->v2x6 == 1) {
895 896
                if (0 && s->highspeed) {
896 897
                    s->highspeed = 0;
897
                    pic_set_irq (s->irq, 0);
898
                    qemu_irq_lower (s->pic[s->irq]);
898 899
                    control (s, 0);
899 900
                }
900 901
                else {
......
1005 1006
        if (s->mixer_regs[0x82] & 1) {
1006 1007
            ack = 1;
1007 1008
            s->mixer_regs[0x82] &= 1;
1008
            pic_set_irq (s->irq, 0);
1009
            qemu_irq_lower (s->pic[s->irq]);
1009 1010
        }
1010 1011
        break;
1011 1012

  
......
1014 1015
        if (s->mixer_regs[0x82] & 2) {
1015 1016
            ack = 1;
1016 1017
            s->mixer_regs[0x82] &= 2;
1017
            pic_set_irq (s->irq, 0);
1018
            qemu_irq_lower (s->pic[s->irq]);
1018 1019
        }
1019 1020
        break;
1020 1021

  
......
1222 1223

  
1223 1224
    if (s->left_till_irq <= 0) {
1224 1225
        s->mixer_regs[0x82] |= (nchan & 4) ? 2 : 1;
1225
        pic_set_irq (s->irq, 1);
1226
        qemu_irq_raise (s->pic[s->irq]);
1226 1227
        if (0 == s->dma_auto) {
1227 1228
            control (s, 0);
1228 1229
            speaker (s, 0);
......
1389 1390
    return 0;
1390 1391
}
1391 1392

  
1392
int SB16_init (AudioState *audio)
1393
int SB16_init (AudioState *audio, qemu_irq *pic)
1393 1394
{
1394 1395
    SB16State *s;
1395 1396
    int i;
......
1409 1410
    }
1410 1411

  
1411 1412
    s->cmd = -1;
1413
    s->pic = pic;
1412 1414
    s->irq = conf.irq;
1413 1415
    s->dma = conf.dma;
1414 1416
    s->hdma = conf.hdma;

Also available in: Unified diff