The PINT/DAV pin is active low in the chip spec, not inverted on the board.
Make changes on known GPIO lines be verbose, initialise GPIO levels. git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3511 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									9fceefa7d1
								
							
						
					
					
						commit
						7fc42b4bbd
					
				
							
								
								
									
										66
									
								
								hw/palm.c
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								hw/palm.c
									
									
									
									
									
								
							@ -78,11 +78,10 @@ static CPUWriteMemoryFunc *static_writefn[] = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static void palmte_microwire_setup(struct omap_mpu_state_s *cpu)
 | 
					static void palmte_microwire_setup(struct omap_mpu_state_s *cpu)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    qemu_irq p_int = omap_gpio_in_get(cpu->gpio)[PALMTE_PINTDAV_GPIO];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    omap_uwire_attach(
 | 
					    omap_uwire_attach(
 | 
				
			||||||
                    cpu->microwire,
 | 
					                    cpu->microwire,
 | 
				
			||||||
                    tsc2102_init(qemu_irq_invert(p_int)),
 | 
					                    tsc2102_init(
 | 
				
			||||||
 | 
								    omap_gpio_in_get(cpu->gpio)[PALMTE_PINTDAV_GPIO]),
 | 
				
			||||||
                    0);
 | 
					                    0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -115,6 +114,62 @@ static void palmte_button_event(void *opaque, int keycode)
 | 
				
			|||||||
                        !(keycode & 0x80));
 | 
					                        !(keycode & 0x80));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void palmte_onoff_gpios(void *opaque, int line, int level)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    switch (line) {
 | 
				
			||||||
 | 
					    case 0:
 | 
				
			||||||
 | 
					        printf("%s: current to MMC/SD card %sabled.\n",
 | 
				
			||||||
 | 
					                        __FUNCTION__, level ? "dis" : "en");
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case 1:
 | 
				
			||||||
 | 
					        printf("%s: internal speaker amplifier %s.\n",
 | 
				
			||||||
 | 
					                        __FUNCTION__, level ? "down" : "on");
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* These LCD & Audio output signals have not been identified yet.  */
 | 
				
			||||||
 | 
					    case 2:
 | 
				
			||||||
 | 
					    case 3:
 | 
				
			||||||
 | 
					    case 4:
 | 
				
			||||||
 | 
					        printf("%s: LCD GPIO%i %s.\n",
 | 
				
			||||||
 | 
					                        __FUNCTION__, line - 1, level ? "high" : "low");
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    case 5:
 | 
				
			||||||
 | 
					    case 6:
 | 
				
			||||||
 | 
					        printf("%s: Audio GPIO%i %s.\n",
 | 
				
			||||||
 | 
					                        __FUNCTION__, line - 4, level ? "high" : "low");
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void palmte_gpio_setup(struct omap_mpu_state_s *cpu)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    qemu_irq *misc_gpio;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    omap_mmc_handlers(cpu->mmc,
 | 
				
			||||||
 | 
					                    omap_gpio_in_get(cpu->gpio)[PALMTE_MMC_WP_GPIO],
 | 
				
			||||||
 | 
					                    qemu_irq_invert(omap_mpuio_in_get(cpu->mpuio)
 | 
				
			||||||
 | 
					                            [PALMTE_MMC_SWITCH_GPIO]));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    misc_gpio = qemu_allocate_irqs(palmte_onoff_gpios, cpu, 7);
 | 
				
			||||||
 | 
					    omap_gpio_out_set(cpu->gpio, PALMTE_MMC_POWER_GPIO,	misc_gpio[0]);
 | 
				
			||||||
 | 
					    omap_gpio_out_set(cpu->gpio, PALMTE_SPEAKER_GPIO,	misc_gpio[1]);
 | 
				
			||||||
 | 
					    omap_gpio_out_set(cpu->gpio, 11,			misc_gpio[2]);
 | 
				
			||||||
 | 
					    omap_gpio_out_set(cpu->gpio, 12,			misc_gpio[3]);
 | 
				
			||||||
 | 
					    omap_gpio_out_set(cpu->gpio, 13,			misc_gpio[4]);
 | 
				
			||||||
 | 
					    omap_mpuio_out_set(cpu->mpuio, 1,			misc_gpio[5]);
 | 
				
			||||||
 | 
					    omap_mpuio_out_set(cpu->mpuio, 3,			misc_gpio[6]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Reset some inputs to initial state.  */
 | 
				
			||||||
 | 
					    qemu_irq_lower(omap_gpio_in_get(cpu->gpio)[PALMTE_USBDETECT_GPIO]);
 | 
				
			||||||
 | 
					    qemu_irq_lower(omap_gpio_in_get(cpu->gpio)[PALMTE_USB_OR_DC_GPIO]);
 | 
				
			||||||
 | 
					    qemu_irq_lower(omap_gpio_in_get(cpu->gpio)[4]);
 | 
				
			||||||
 | 
					    qemu_irq_lower(omap_gpio_in_get(cpu->gpio)[PALMTE_HEADPHONES_GPIO]);
 | 
				
			||||||
 | 
					    qemu_irq_lower(omap_mpuio_in_get(cpu->mpuio)[PALMTE_DC_GPIO]);
 | 
				
			||||||
 | 
					    qemu_irq_raise(omap_mpuio_in_get(cpu->mpuio)[6]);
 | 
				
			||||||
 | 
					    qemu_irq_raise(omap_mpuio_in_get(cpu->mpuio)[7]);
 | 
				
			||||||
 | 
					    qemu_irq_raise(omap_mpuio_in_get(cpu->mpuio)[11]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void palmte_init(int ram_size, int vga_ram_size,
 | 
					static void palmte_init(int ram_size, int vga_ram_size,
 | 
				
			||||||
                const char *boot_device, DisplayState *ds,
 | 
					                const char *boot_device, DisplayState *ds,
 | 
				
			||||||
                const char **fd_filename, int snapshot,
 | 
					                const char **fd_filename, int snapshot,
 | 
				
			||||||
@ -158,10 +213,7 @@ static void palmte_init(int ram_size, int vga_ram_size,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    qemu_add_kbd_event_handler(palmte_button_event, cpu);
 | 
					    qemu_add_kbd_event_handler(palmte_button_event, cpu);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    omap_mmc_handlers(cpu->mmc,
 | 
					    palmte_gpio_setup(cpu);
 | 
				
			||||||
                    omap_gpio_in_get(cpu->gpio)[PALMTE_MMC_WP_GPIO],
 | 
					 | 
				
			||||||
                    qemu_irq_invert(omap_mpuio_in_get(cpu->mpuio)
 | 
					 | 
				
			||||||
                            [PALMTE_MMC_SWITCH_GPIO]));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Setup initial (reset) machine state */
 | 
					    /* Setup initial (reset) machine state */
 | 
				
			||||||
    if (nb_option_roms) {
 | 
					    if (nb_option_roms) {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * TI TSC2102 (touchscreen/sensors/audio controller) controller.
 | 
					 * TI TSC2102 (touchscreen/sensors/audio controller) emulator.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Copyright (c) 2006 Andrzej Zaborowski  <balrog@zabor.org>
 | 
					 * Copyright (c) 2006 Andrzej Zaborowski  <balrog@zabor.org>
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@ -171,7 +171,7 @@ static void tsc210x_reset(struct tsc210x_state_s *s)
 | 
				
			|||||||
    s->filter_data[0x12] = 0x7d83;
 | 
					    s->filter_data[0x12] = 0x7d83;
 | 
				
			||||||
    s->filter_data[0x13] = 0x84ee;
 | 
					    s->filter_data[0x13] = 0x84ee;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    qemu_set_irq(s->pint, s->irq);
 | 
					    qemu_set_irq(s->pint, !s->irq);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static uint16_t tsc2102_data_register_read(struct tsc210x_state_s *s, int reg)
 | 
					static uint16_t tsc2102_data_register_read(struct tsc210x_state_s *s, int reg)
 | 
				
			||||||
@ -572,7 +572,7 @@ static void tsc210x_pin_update(struct tsc210x_state_s *s)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (pin_state != s->irq) {
 | 
					    if (pin_state != s->irq) {
 | 
				
			||||||
        s->irq = pin_state;
 | 
					        s->irq = pin_state;
 | 
				
			||||||
        qemu_set_irq(s->pint, s->irq);
 | 
					        qemu_set_irq(s->pint, !s->irq);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (s->nextfunction) {
 | 
					    switch (s->nextfunction) {
 | 
				
			||||||
@ -810,7 +810,7 @@ static int tsc210x_load(QEMUFile *f, void *opaque, int version_id)
 | 
				
			|||||||
        qemu_get_be16s(f, &s->filter_data[i]);
 | 
					        qemu_get_be16s(f, &s->filter_data[i]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    s->busy = qemu_timer_pending(s->timer);
 | 
					    s->busy = qemu_timer_pending(s->timer);
 | 
				
			||||||
    qemu_set_irq(s->pint, s->irq);
 | 
					    qemu_set_irq(s->pint, !s->irq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user