Exemplo n.º 1
0
static void tosa_gpio_setup(PXA2xxState *cpu,
                DeviceState *scp0,
                DeviceState *scp1,
                TC6393xbState *tmio)
{
    qemu_irq *outsignals = qemu_allocate_irqs(tosa_out_switch, cpu, 4);
    /* MMC/SD host */
    pxa2xx_mmci_handlers(cpu->mmc,
                    qdev_get_gpio_in(scp0, TOSA_GPIO_SD_WP),
                    qemu_irq_invert(qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_nSD_DETECT)));

    /* Handle reset */
    qdev_connect_gpio_out(cpu->gpio, TOSA_GPIO_ON_RESET, cpu->reset);

    /* PCMCIA signals: card's IRQ and Card-Detect */
    pxa2xx_pcmcia_set_irq_cb(cpu->pcmcia[0],
                        qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_CF_IRQ),
                        qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_CF_CD));

    pxa2xx_pcmcia_set_irq_cb(cpu->pcmcia[1],
                        qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_JC_CF_IRQ),
                        NULL);

    qdev_connect_gpio_out(scp1, TOSA_GPIO_BT_LED, outsignals[0]);
    qdev_connect_gpio_out(scp1, TOSA_GPIO_NOTE_LED, outsignals[1]);
    qdev_connect_gpio_out(scp1, TOSA_GPIO_CHRG_ERR_LED, outsignals[2]);
    qdev_connect_gpio_out(scp1, TOSA_GPIO_WLAN_LED, outsignals[3]);

    qdev_connect_gpio_out(scp1, TOSA_GPIO_TC6393XB_L3V_ON, tc6393xb_l3v_get(tmio));

    /* UDC Vbus */
    qemu_irq_raise(qdev_get_gpio_in(cpu->gpio, TOSA_GPIO_USB_IN));
}
Exemplo n.º 2
0
static void tosa_gpio_setup(PXA2xxState *cpu,
                ScoopInfo *scp0,
                ScoopInfo *scp1,
                TC6393xbState *tmio)
{
    qemu_irq *outsignals = qemu_allocate_irqs(tosa_out_switch, cpu, 4);
    /* MMC/SD host */
    pxa2xx_mmci_handlers(cpu->mmc,
                    scoop_gpio_in_get(scp0)[TOSA_GPIO_SD_WP],
                    qemu_irq_invert(pxa2xx_gpio_in_get(cpu->gpio)[TOSA_GPIO_nSD_DETECT]));

    /* Handle reset */
    pxa2xx_gpio_out_set(cpu->gpio, TOSA_GPIO_ON_RESET, cpu->reset);

    /* PCMCIA signals: card's IRQ and Card-Detect */
    pxa2xx_pcmcia_set_irq_cb(cpu->pcmcia[0],
                        pxa2xx_gpio_in_get(cpu->gpio)[TOSA_GPIO_CF_IRQ],
                        pxa2xx_gpio_in_get(cpu->gpio)[TOSA_GPIO_CF_CD]);

    pxa2xx_pcmcia_set_irq_cb(cpu->pcmcia[1],
                        pxa2xx_gpio_in_get(cpu->gpio)[TOSA_GPIO_JC_CF_IRQ],
                        NULL);

    scoop_gpio_out_set(scp1, TOSA_GPIO_BT_LED, outsignals[0]);
    scoop_gpio_out_set(scp1, TOSA_GPIO_NOTE_LED, outsignals[1]);
    scoop_gpio_out_set(scp1, TOSA_GPIO_CHRG_ERR_LED, outsignals[2]);
    scoop_gpio_out_set(scp1, TOSA_GPIO_WLAN_LED, outsignals[3]);

    scoop_gpio_out_set(scp1, TOSA_GPIO_TC6393XB_L3V_ON, tc6393xb_l3v_get(tmio));
}
Exemplo n.º 3
0
Arquivo: palm.c Projeto: hackndev/qemu
static void tc_gpio_setup(struct pxa2xx_state_s *cpu)
{
    qemu_irq *pcmcia_cb;
    int g;

    /* PCMCIA signals: card's IRQ and Card-Detect*/
    pcmcia_cb = qemu_allocate_irqs(tc_pcmcia_cb, cpu, 2);
    pxa2xx_pcmcia_set_irq_cb(cpu->pcmcia[0], pcmcia_cb[0], pcmcia_cb[1]);

    /* Input pins levels */
    pxa2xx_gpio_set(cpu->gpio, 0, 1);
    pxa2xx_gpio_set(cpu->gpio, 1, 0);
    pxa2xx_gpio_set(cpu->gpio, 2, 1);
    pxa2xx_gpio_set(cpu->gpio, 3, 0);
    pxa2xx_gpio_set(cpu->gpio, 4, 1);
    pxa2xx_gpio_set(cpu->gpio, 5, 0);
    pxa2xx_gpio_set(cpu->gpio, 6, 1);
    pxa2xx_gpio_set(cpu->gpio, 7, 1);
    pxa2xx_gpio_set(cpu->gpio, 8, 1);
    pxa2xx_gpio_set(cpu->gpio, 9, 1);
    pxa2xx_gpio_set(cpu->gpio, 10, 1);
    pxa2xx_gpio_set(cpu->gpio, 11, 0);
    pxa2xx_gpio_set(cpu->gpio, 12, 0);
    pxa2xx_gpio_set(cpu->gpio, 13, 0);
    pxa2xx_gpio_set(cpu->gpio, 14, 0);
    pxa2xx_gpio_set(cpu->gpio, 15, 0);
    pxa2xx_gpio_set(cpu->gpio, 16, 1);
    pxa2xx_gpio_set(cpu->gpio, 17, 0);
    pxa2xx_gpio_set(cpu->gpio, 18, 0);
    pxa2xx_gpio_set(cpu->gpio, 19, 0);
    pxa2xx_gpio_set(cpu->gpio, 20, 0);
    pxa2xx_gpio_set(cpu->gpio, 21, 0);
    pxa2xx_gpio_set(cpu->gpio, 22, 0);
    pxa2xx_gpio_set(cpu->gpio, 23, 0);
    pxa2xx_gpio_set(cpu->gpio, 24, 0);
    pxa2xx_gpio_set(cpu->gpio, 25, 0);
    pxa2xx_gpio_set(cpu->gpio, 26, 0);
    pxa2xx_gpio_set(cpu->gpio, 27, 0);
    pxa2xx_gpio_set(cpu->gpio, 28, 1);
    pxa2xx_gpio_set(cpu->gpio, 29, 0);
    pxa2xx_gpio_set(cpu->gpio, 30, 0);
    pxa2xx_gpio_set(cpu->gpio, 31, 0);

    pxa2xx_gpio_set(cpu->gpio, 32, 1);
    pxa2xx_gpio_set(cpu->gpio, 33, 0);
    pxa2xx_gpio_set(cpu->gpio, 34, 1);
    pxa2xx_gpio_set(cpu->gpio, 35, 1);
    pxa2xx_gpio_set(cpu->gpio, 36, 0);
    pxa2xx_gpio_set(cpu->gpio, 37, 0);
    pxa2xx_gpio_set(cpu->gpio, 38, 1);
    pxa2xx_gpio_set(cpu->gpio, 39, 1);
    pxa2xx_gpio_set(cpu->gpio, 40, 1);
    pxa2xx_gpio_set(cpu->gpio, 41, 1);
    pxa2xx_gpio_set(cpu->gpio, 42, 1);
    pxa2xx_gpio_set(cpu->gpio, 43, 1);
    pxa2xx_gpio_set(cpu->gpio, 44, 1);
    pxa2xx_gpio_set(cpu->gpio, 45, 0);
    pxa2xx_gpio_set(cpu->gpio, 46, 1);
    pxa2xx_gpio_set(cpu->gpio, 47, 0);
    pxa2xx_gpio_set(cpu->gpio, 48, 1);
    pxa2xx_gpio_set(cpu->gpio, 49, 1);
    pxa2xx_gpio_set(cpu->gpio, 50, 1);
    pxa2xx_gpio_set(cpu->gpio, 51, 1);
    pxa2xx_gpio_set(cpu->gpio, 52, 1);
    pxa2xx_gpio_set(cpu->gpio, 53, 1);
    pxa2xx_gpio_set(cpu->gpio, 54, 0);
    pxa2xx_gpio_set(cpu->gpio, 55, 1);
    pxa2xx_gpio_set(cpu->gpio, 56, 0);
    pxa2xx_gpio_set(cpu->gpio, 57, 0);
    pxa2xx_gpio_set(cpu->gpio, 58, 0);
    pxa2xx_gpio_set(cpu->gpio, 59, 0);
    pxa2xx_gpio_set(cpu->gpio, 60, 0);
    pxa2xx_gpio_set(cpu->gpio, 61, 0);
    pxa2xx_gpio_set(cpu->gpio, 62, 0);
    pxa2xx_gpio_set(cpu->gpio, 63, 0);

    pxa2xx_gpio_set(cpu->gpio, 64, 0);
    pxa2xx_gpio_set(cpu->gpio, 65, 0);
    pxa2xx_gpio_set(cpu->gpio, 66, 0);
    pxa2xx_gpio_set(cpu->gpio, 67, 0);
    pxa2xx_gpio_set(cpu->gpio, 68, 0);
    pxa2xx_gpio_set(cpu->gpio, 69, 0);
    pxa2xx_gpio_set(cpu->gpio, 70, 0);
    pxa2xx_gpio_set(cpu->gpio, 71, 0);
    pxa2xx_gpio_set(cpu->gpio, 72, 0);
    pxa2xx_gpio_set(cpu->gpio, 73, 0);
    pxa2xx_gpio_set(cpu->gpio, 74, 1);
    pxa2xx_gpio_set(cpu->gpio, 75, 1);
    pxa2xx_gpio_set(cpu->gpio, 76, 0);
    pxa2xx_gpio_set(cpu->gpio, 77, 1);
    pxa2xx_gpio_set(cpu->gpio, 78, 0);
    pxa2xx_gpio_set(cpu->gpio, 79, 0);
    pxa2xx_gpio_set(cpu->gpio, 80, 0);
    pxa2xx_gpio_set(cpu->gpio, 81, 1);
    pxa2xx_gpio_set(cpu->gpio, 82, 1);
    pxa2xx_gpio_set(cpu->gpio, 83, 1);
    pxa2xx_gpio_set(cpu->gpio, 84, 1);
    pxa2xx_gpio_set(cpu->gpio, 85, 1);
    pxa2xx_gpio_set(cpu->gpio, 86, 1);
    pxa2xx_gpio_set(cpu->gpio, 87, 1);
    pxa2xx_gpio_set(cpu->gpio, 88, 1);
    pxa2xx_gpio_set(cpu->gpio, 89, 1);
    pxa2xx_gpio_set(cpu->gpio, 90, 0);
    pxa2xx_gpio_set(cpu->gpio, 91, 0);
    pxa2xx_gpio_set(cpu->gpio, 92, 0);
    pxa2xx_gpio_set(cpu->gpio, 93, 0);
    pxa2xx_gpio_set(cpu->gpio, 94, 0);
    pxa2xx_gpio_set(cpu->gpio, 95, 0);

    pxa2xx_gpio_set(cpu->gpio, 96, 1);
    pxa2xx_gpio_set(cpu->gpio, 97, 1);
    pxa2xx_gpio_set(cpu->gpio, 98, 1);
    pxa2xx_gpio_set(cpu->gpio, 99, 0);
    pxa2xx_gpio_set(cpu->gpio, 100, 1);
    pxa2xx_gpio_set(cpu->gpio, 101, 0);
    pxa2xx_gpio_set(cpu->gpio, 102, 1);
    pxa2xx_gpio_set(cpu->gpio, 103, 1);
    pxa2xx_gpio_set(cpu->gpio, 104, 1);
    pxa2xx_gpio_set(cpu->gpio, 105, 1);
    pxa2xx_gpio_set(cpu->gpio, 106, 1);
    pxa2xx_gpio_set(cpu->gpio, 107, 0);
    pxa2xx_gpio_set(cpu->gpio, 108, 0);
    pxa2xx_gpio_set(cpu->gpio, 109, 0);
    pxa2xx_gpio_set(cpu->gpio, 110, 0);
    pxa2xx_gpio_set(cpu->gpio, 111, 0);
    pxa2xx_gpio_set(cpu->gpio, 112, 1);
    pxa2xx_gpio_set(cpu->gpio, 113, 0);
    pxa2xx_gpio_set(cpu->gpio, 114, 0);
    pxa2xx_gpio_set(cpu->gpio, 115, 0);
    pxa2xx_gpio_set(cpu->gpio, 116, 0);
    pxa2xx_gpio_set(cpu->gpio, 117, 0);
    pxa2xx_gpio_set(cpu->gpio, 118, 0);
    pxa2xx_gpio_set(cpu->gpio, 119, 0);
    pxa2xx_gpio_set(cpu->gpio, 120, 0);

    for (g=0;g<=120;g++)
    pxa2xx_gpio_handler_set(cpu->gpio, g,
                    tc_gpio_switch, cpu);

}
Exemplo n.º 4
0
Arquivo: palm.c Projeto: hackndev/qemu
static void ld_gpio_setup(struct pxa2xx_state_s *cpu)
{
    int g;
    qemu_irq *pcmcia_cb;

    /* PCMCIA signals: card's IRQ and Card-Detect*/
    pcmcia_cb = qemu_allocate_irqs(ld_pcmcia_cb, cpu, 2);
    pxa2xx_pcmcia_set_irq_cb(cpu->pcmcia[0], pcmcia_cb[0], pcmcia_cb[1]);

    /* Input pins levels */
    pxa2xx_gpio_set(cpu->gpio, 0, 1);
    pxa2xx_gpio_set(cpu->gpio, 1, 1);
    pxa2xx_gpio_set(cpu->gpio, 2, 1);
    pxa2xx_gpio_set(cpu->gpio, 3, 1);
    pxa2xx_gpio_set(cpu->gpio, 4, 1);
    pxa2xx_gpio_set(cpu->gpio, 5, 1);
    pxa2xx_gpio_set(cpu->gpio, 6, 1);
    pxa2xx_gpio_set(cpu->gpio, 7, 1);
    pxa2xx_gpio_set(cpu->gpio, 8, 1);
    pxa2xx_gpio_set(cpu->gpio, 9, 0);
    pxa2xx_gpio_set(cpu->gpio, 10, 0); /* hotsync, deassert for recovery console */
    pxa2xx_gpio_set(cpu->gpio, 11, 0);
    pxa2xx_gpio_set(cpu->gpio, 12, 0); /* <--- power switch, for hard reset :D */
    pxa2xx_gpio_set(cpu->gpio, 13, 0);
    pxa2xx_gpio_set(cpu->gpio, 14, 0);
    pxa2xx_gpio_set(cpu->gpio, 15, 0);
    pxa2xx_gpio_set(cpu->gpio, 18, 1);
    pxa2xx_gpio_set(cpu->gpio, 20, 1);
    pxa2xx_gpio_set(cpu->gpio, 23, 1);
    pxa2xx_gpio_set(cpu->gpio, 24, 1);
    pxa2xx_gpio_set(cpu->gpio, 26, 1);
    pxa2xx_gpio_set(cpu->gpio, 27, 0);
    pxa2xx_gpio_set(cpu->gpio, 28, 1);
    pxa2xx_gpio_set(cpu->gpio, 29, 0);
    pxa2xx_gpio_set(cpu->gpio, 34, 1);
    pxa2xx_gpio_set(cpu->gpio, 35, 1);
    pxa2xx_gpio_set(cpu->gpio, 37, 1);
    pxa2xx_gpio_set(cpu->gpio, 38, 1);
    pxa2xx_gpio_set(cpu->gpio, 39, 1);
    pxa2xx_gpio_set(cpu->gpio, 40, 0);
    pxa2xx_gpio_set(cpu->gpio, 42, 1);
    pxa2xx_gpio_set(cpu->gpio, 44, 1);
    pxa2xx_gpio_set(cpu->gpio, 46, 1);
    pxa2xx_gpio_set(cpu->gpio, 53, 0);
    pxa2xx_gpio_set(cpu->gpio, 56, 1);
    pxa2xx_gpio_set(cpu->gpio, 57, 0);
    pxa2xx_gpio_set(cpu->gpio, 80, 1);
    pxa2xx_gpio_set(cpu->gpio, 82, 1);
    pxa2xx_gpio_set(cpu->gpio, 86, 1);
    pxa2xx_gpio_set(cpu->gpio, 90, 1);
    pxa2xx_gpio_set(cpu->gpio, 95, 0);
    pxa2xx_gpio_set(cpu->gpio, 97, 0);
    pxa2xx_gpio_set(cpu->gpio, 100, 0);
    pxa2xx_gpio_set(cpu->gpio, 101, 0);
    pxa2xx_gpio_set(cpu->gpio, 102, 0);
    pxa2xx_gpio_set(cpu->gpio, 104, 0);
    pxa2xx_gpio_set(cpu->gpio, 106, 0);
    pxa2xx_gpio_set(cpu->gpio, 107, 0);
    pxa2xx_gpio_set(cpu->gpio, 116, 0);
    pxa2xx_gpio_set(cpu->gpio, 119, 1);
    pxa2xx_gpio_set(cpu->gpio, 120, 1);

    /* Misc */
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_BT1_PWR,
                    ld_btpwr1_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_LCD1_PWR,
                    ld_lcdpwr1_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_WLAN_PWR,
                    ld_wlanpwr_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_GREEN_LED,
                    ld_greenled_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_WLAN_RST,
                    ld_wlan_reset, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_BT2_PWR,
                    ld_btpwr2_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_BL_PWR,
                    ld_blpwr_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_UART_PWR,
                    ld_serialpwr_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_ORANGE_LED,
                    ld_orangeled_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_LCD2_PWR,
                    ld_lcdpwr2_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_HDD_RST,
                    ld_hdd_reset, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_USB_PWR,
                    ld_usbpwr_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_IR_PWR,
                    ld_irpwr_switch, cpu);
    pxa2xx_gpio_handler_set(cpu->gpio, LD_GPIO_HDD_PWR,
                    ld_hddpwr_switch, cpu);

/* Uncomment this to monitor all GPIOs */
/*    for (g=0;g<=120;g++)
    pxa2xx_gpio_handler_set(cpu->gpio, g,
                    ld_gpio_switch, cpu);
*/
}
Exemplo n.º 5
0
static void mainstone_common_init(MemoryRegion *address_space_mem,
                ram_addr_t ram_size,
                const char *kernel_filename,
                const char *kernel_cmdline, const char *initrd_filename,
                const char *cpu_model, enum mainstone_model_e model, int arm_id)
{
    uint32_t sector_len = 256 * 1024;
    hwaddr mainstone_flash_base[] = { MST_FLASH_0, MST_FLASH_1 };
    PXA2xxState *mpu;
    DeviceState *mst_irq;
    DriveInfo *dinfo;
    int i;
    int be;
    MemoryRegion *rom = g_new(MemoryRegion, 1);

    if (!cpu_model)
        cpu_model = "pxa270-c5";

    /* Setup CPU & memory */
    mpu = pxa270_init(address_space_mem, mainstone_binfo.ram_size, cpu_model);
    memory_region_init_ram(rom, "mainstone.rom", MAINSTONE_ROM);
    vmstate_register_ram_global(rom);
    memory_region_set_readonly(rom, true);
    memory_region_add_subregion(address_space_mem, 0, rom);

#ifdef TARGET_WORDS_BIGENDIAN
    be = 1;
#else
    be = 0;
#endif
    /* There are two 32MiB flash devices on the board */
    for (i = 0; i < 2; i ++) {
        dinfo = drive_get(IF_PFLASH, 0, i);
        if (!dinfo) {
            fprintf(stderr, "Two flash images must be given with the "
                    "'pflash' parameter\n");
            exit(1);
        }

        if (!pflash_cfi01_register(mainstone_flash_base[i], NULL,
                                   i ? "mainstone.flash1" : "mainstone.flash0",
                                   MAINSTONE_FLASH,
                                   dinfo->bdrv, sector_len,
                                   MAINSTONE_FLASH / sector_len, 4, 0, 0, 0, 0,
                                   be)) {
            fprintf(stderr, "qemu: Error registering flash memory.\n");
            exit(1);
        }
    }

    mst_irq = sysbus_create_simple("mainstone-fpga", MST_FPGA_PHYS,
                    qdev_get_gpio_in(mpu->gpio, 0));

    /* setup keypad */
    printf("map addr %p\n", &map);
    pxa27x_register_keypad(mpu->kp, map, 0xe0);

    /* MMC/SD host */
    pxa2xx_mmci_handlers(mpu->mmc, NULL, qdev_get_gpio_in(mst_irq, MMC_IRQ));

    pxa2xx_pcmcia_set_irq_cb(mpu->pcmcia[0],
            qdev_get_gpio_in(mst_irq, S0_IRQ),
            qdev_get_gpio_in(mst_irq, S0_CD_IRQ));
    pxa2xx_pcmcia_set_irq_cb(mpu->pcmcia[1],
            qdev_get_gpio_in(mst_irq, S1_IRQ),
            qdev_get_gpio_in(mst_irq, S1_CD_IRQ));

    smc91c111_init(&nd_table[0], MST_ETH_PHYS,
                    qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));

    mainstone_binfo.kernel_filename = kernel_filename;
    mainstone_binfo.kernel_cmdline = kernel_cmdline;
    mainstone_binfo.initrd_filename = initrd_filename;
    mainstone_binfo.board_id = arm_id;
    arm_load_kernel(mpu->cpu, &mainstone_binfo);
}