static void pxa2xx_gpio_write(void *opaque,

                target_phys_addr_t offset, uint32_t value)

{

    struct pxa2xx_gpio_info_s *s = (struct pxa2xx_gpio_info_s *) opaque;

    int bank;

    offset -= s->base;

    if (offset >= 0x200)

        return;



    bank = pxa2xx_gpio_regs[offset].bank;

    switch (pxa2xx_gpio_regs[offset].reg) {

    case GPDR:		/* GPIO Pin-Direction registers */

        s->dir[bank] = value;

        pxa2xx_gpio_handler_update(s);

        break;



    case GPSR:		/* GPIO Pin-Output Set registers */

        s->olevel[bank] |= value;

        pxa2xx_gpio_handler_update(s);


        break;



    case GPCR:		/* GPIO Pin-Output Clear registers */

        s->olevel[bank] &= ~value;

        pxa2xx_gpio_handler_update(s);

        break;



    case GRER:		/* GPIO Rising-Edge Detect Enable registers */

        s->rising[bank] = value;

        break;



    case GFER:		/* GPIO Falling-Edge Detect Enable registers */

        s->falling[bank] = value;

        break;



    case GAFR_L:	/* GPIO Alternate Function registers */

        s->gafr[bank * 2] = value;

        break;



    case GAFR_U:	/* GPIO Alternate Function registers */

        s->gafr[bank * 2 + 1] = value;

        break;



    case GEDR:		/* GPIO Edge Detect Status registers */

        s->status[bank] &= ~value;

        pxa2xx_gpio_irq_update(s);

        break;



    default:

        cpu_abort(cpu_single_env,

                "%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);

    }

}
static void pxa2xx_gpio_write(void *opaque,

                target_phys_addr_t offset, uint32_t value)

{

    struct pxa2xx_gpio_info_s *s = (struct pxa2xx_gpio_info_s *) opaque;

    int bank;

    offset -= s->base;

    if (offset >= 0x200)

        return;



    bank = pxa2xx_gpio_regs[offset].bank;

    switch (pxa2xx_gpio_regs[offset].reg) {

    case GPDR:		

        s->dir[bank] = value;

        pxa2xx_gpio_handler_update(s);

        break;



    case GPSR:		

        s->olevel[bank] |= value;

        pxa2xx_gpio_handler_update(s);


        break;



    case GPCR:		

        s->olevel[bank] &= ~value;

        pxa2xx_gpio_handler_update(s);

        break;



    case GRER:		

        s->rising[bank] = value;

        break;



    case GFER:		

        s->falling[bank] = value;

        break;



    case GAFR_L:	

        s->gafr[bank * 2] = value;

        break;



    case GAFR_U:	

        s->gafr[bank * 2 + 1] = value;

        break;



    case GEDR:		

        s->status[bank] &= ~value;

        pxa2xx_gpio_irq_update(s);

        break;



    default:

        cpu_abort(cpu_single_env,

                "%s: Bad offset " REG_FMT "\n", __FUNCTION__, offset);

    }

}
static void FUNC_0(void *VAR_0,

                target_phys_addr_t VAR_1, uint32_t VAR_2)

{

    struct pxa2xx_gpio_info_s *VAR_3 = (struct pxa2xx_gpio_info_s *) VAR_0;

    int VAR_4;

    VAR_1 -= VAR_3->base;

    if (VAR_1 >= 0x200)

        return;



    VAR_4 = pxa2xx_gpio_regs[VAR_1].VAR_4;

    switch (pxa2xx_gpio_regs[VAR_1].reg) {

    case GPDR:		

        VAR_3->dir[VAR_4] = VAR_2;

        pxa2xx_gpio_handler_update(VAR_3);

        break;



    case GPSR:		

        VAR_3->olevel[VAR_4] |= VAR_2;

        pxa2xx_gpio_handler_update(VAR_3);


        break;



    case GPCR:		

        VAR_3->olevel[VAR_4] &= ~VAR_2;

        pxa2xx_gpio_handler_update(VAR_3);

        break;



    case GRER:		

        VAR_3->rising[VAR_4] = VAR_2;

        break;



    case GFER:		

        VAR_3->falling[VAR_4] = VAR_2;

        break;



    case GAFR_L:	

        VAR_3->gafr[VAR_4 * 2] = VAR_2;

        break;



    case GAFR_U:	

        VAR_3->gafr[VAR_4 * 2 + 1] = VAR_2;

        break;



    case GEDR:		

        VAR_3->status[VAR_4] &= ~VAR_2;

        pxa2xx_gpio_irq_update(VAR_3);

        break;



    default:

        cpu_abort(cpu_single_env,

                "%VAR_3: Bad VAR_1 " REG_FMT "\n", __FUNCTION__, VAR_1);

    }

}
static void FUNC_0(void *VAR_0,
target_phys_addr_t VAR_1, uint32_t VAR_2)
{ struct pxa2xx_gpio_info_s *VAR_3 = (struct pxa2xx_gpio_info_s *) VAR_0; int VAR_4; VAR_1 -= VAR_3->base; if (VAR_1 >= 0x200)
return; VAR_4 = pxa2xx_gpio_regs[VAR_1].VAR_4; switch (pxa2xx_gpio_regs[VAR_1].reg) { case GPDR:
VAR_3->dir[VAR_4] = VAR_2; pxa2xx_gpio_handler_update(VAR_3); break; case GPSR:
VAR_3->olevel[VAR_4] |= VAR_2; pxa2xx_gpio_handler_update(VAR_3); break; case GPCR:
VAR_3->olevel[VAR_4] &= ~VAR_2; pxa2xx_gpio_handler_update(VAR_3); break; case GRER:
VAR_3->rising[VAR_4] = VAR_2; break; case GFER:
VAR_3->falling[VAR_4] = VAR_2; break; case GAFR_L:
VAR_3->gafr[VAR_4 * 2] = VAR_2; break; case GAFR_U:
VAR_3->gafr[VAR_4 * 2 + 1] = VAR_2; break; case GEDR:
VAR_3->status[VAR_4] &= ~VAR_2; pxa2xx_gpio_irq_update(VAR_3); break; default:
cpu_abort(cpu_single_env,
"%VAR_3: Bad VAR_1 " REG_FMT "\n", __FUNCTION__, VAR_1); } }