Revision 7fc42b4b

b/hw/palm.c
78 78

  
79 79
static void palmte_microwire_setup(struct omap_mpu_state_s *cpu)
80 80
{
81
    qemu_irq p_int = omap_gpio_in_get(cpu->gpio)[PALMTE_PINTDAV_GPIO];
82

  
83 81
    omap_uwire_attach(
84 82
                    cpu->microwire,
85
                    tsc2102_init(qemu_irq_invert(p_int)),
83
                    tsc2102_init(
84
			    omap_gpio_in_get(cpu->gpio)[PALMTE_PINTDAV_GPIO]),
86 85
                    0);
87 86
}
88 87

  
......
115 114
                        !(keycode & 0x80));
116 115
}
117 116

  
117
static void palmte_onoff_gpios(void *opaque, int line, int level)
118
{
119
    switch (line) {
120
    case 0:
121
        printf("%s: current to MMC/SD card %sabled.\n",
122
                        __FUNCTION__, level ? "dis" : "en");
123
        break;
124
    case 1:
125
        printf("%s: internal speaker amplifier %s.\n",
126
                        __FUNCTION__, level ? "down" : "on");
127
        break;
128

  
129
    /* These LCD & Audio output signals have not been identified yet.  */
130
    case 2:
131
    case 3:
132
    case 4:
133
        printf("%s: LCD GPIO%i %s.\n",
134
                        __FUNCTION__, line - 1, level ? "high" : "low");
135
        break;
136
    case 5:
137
    case 6:
138
        printf("%s: Audio GPIO%i %s.\n",
139
                        __FUNCTION__, line - 4, level ? "high" : "low");
140
        break;
141
    }
142
}
143

  
144
static void palmte_gpio_setup(struct omap_mpu_state_s *cpu)
145
{
146
    qemu_irq *misc_gpio;
147

  
148
    omap_mmc_handlers(cpu->mmc,
149
                    omap_gpio_in_get(cpu->gpio)[PALMTE_MMC_WP_GPIO],
150
                    qemu_irq_invert(omap_mpuio_in_get(cpu->mpuio)
151
                            [PALMTE_MMC_SWITCH_GPIO]));
152

  
153
    misc_gpio = qemu_allocate_irqs(palmte_onoff_gpios, cpu, 7);
154
    omap_gpio_out_set(cpu->gpio, PALMTE_MMC_POWER_GPIO,	misc_gpio[0]);
155
    omap_gpio_out_set(cpu->gpio, PALMTE_SPEAKER_GPIO,	misc_gpio[1]);
156
    omap_gpio_out_set(cpu->gpio, 11,			misc_gpio[2]);
157
    omap_gpio_out_set(cpu->gpio, 12,			misc_gpio[3]);
158
    omap_gpio_out_set(cpu->gpio, 13,			misc_gpio[4]);
159
    omap_mpuio_out_set(cpu->mpuio, 1,			misc_gpio[5]);
160
    omap_mpuio_out_set(cpu->mpuio, 3,			misc_gpio[6]);
161

  
162
    /* Reset some inputs to initial state.  */
163
    qemu_irq_lower(omap_gpio_in_get(cpu->gpio)[PALMTE_USBDETECT_GPIO]);
164
    qemu_irq_lower(omap_gpio_in_get(cpu->gpio)[PALMTE_USB_OR_DC_GPIO]);
165
    qemu_irq_lower(omap_gpio_in_get(cpu->gpio)[4]);
166
    qemu_irq_lower(omap_gpio_in_get(cpu->gpio)[PALMTE_HEADPHONES_GPIO]);
167
    qemu_irq_lower(omap_mpuio_in_get(cpu->mpuio)[PALMTE_DC_GPIO]);
168
    qemu_irq_raise(omap_mpuio_in_get(cpu->mpuio)[6]);
169
    qemu_irq_raise(omap_mpuio_in_get(cpu->mpuio)[7]);
170
    qemu_irq_raise(omap_mpuio_in_get(cpu->mpuio)[11]);
171
}
172

  
118 173
static void palmte_init(int ram_size, int vga_ram_size,
119 174
                const char *boot_device, DisplayState *ds,
120 175
                const char **fd_filename, int snapshot,
......
158 213

  
159 214
    qemu_add_kbd_event_handler(palmte_button_event, cpu);
160 215

  
161
    omap_mmc_handlers(cpu->mmc,
162
                    omap_gpio_in_get(cpu->gpio)[PALMTE_MMC_WP_GPIO],
163
                    qemu_irq_invert(omap_mpuio_in_get(cpu->mpuio)
164
                            [PALMTE_MMC_SWITCH_GPIO]));
216
    palmte_gpio_setup(cpu);
165 217

  
166 218
    /* Setup initial (reset) machine state */
167 219
    if (nb_option_roms) {
b/hw/tsc210x.c
1 1
/*
2
 * TI TSC2102 (touchscreen/sensors/audio controller) controller.
2
 * TI TSC2102 (touchscreen/sensors/audio controller) emulator.
3 3
 *
4 4
 * Copyright (c) 2006 Andrzej Zaborowski  <balrog@zabor.org>
5 5
 *
......
171 171
    s->filter_data[0x12] = 0x7d83;
172 172
    s->filter_data[0x13] = 0x84ee;
173 173

  
174
    qemu_set_irq(s->pint, s->irq);
174
    qemu_set_irq(s->pint, !s->irq);
175 175
}
176 176

  
177 177
static uint16_t tsc2102_data_register_read(struct tsc210x_state_s *s, int reg)
......
572 572

  
573 573
    if (pin_state != s->irq) {
574 574
        s->irq = pin_state;
575
        qemu_set_irq(s->pint, s->irq);
575
        qemu_set_irq(s->pint, !s->irq);
576 576
    }
577 577

  
578 578
    switch (s->nextfunction) {
......
810 810
        qemu_get_be16s(f, &s->filter_data[i]);
811 811

  
812 812
    s->busy = qemu_timer_pending(s->timer);
813
    qemu_set_irq(s->pint, s->irq);
813
    qemu_set_irq(s->pint, !s->irq);
814 814

  
815 815
    return 0;
816 816
}

Also available in: Unified diff