Example #1
0
static int e740_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	skt->irq = skt->nr == 0 ? IRQ_GPIO(GPIO_E740_PCMCIA_RDY0) :
				IRQ_GPIO(GPIO_E740_PCMCIA_RDY1);

	return soc_pcmcia_request_irqs(skt, &cd_irqs[skt->nr], 1);
}
Example #2
0
static int cmx270_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	GPSR(GPIO48_nPOE) = GPIO_bit(GPIO48_nPOE) |
		GPIO_bit(GPIO49_nPWE) |
		GPIO_bit(GPIO50_nPIOR) |
		GPIO_bit(GPIO51_nPIOW) |
		GPIO_bit(GPIO85_nPCE_1) |
		GPIO_bit(GPIO54_nPCE_2);

	pxa_gpio_mode(GPIO48_nPOE_MD);
	pxa_gpio_mode(GPIO49_nPWE_MD);
	pxa_gpio_mode(GPIO50_nPIOR_MD);
	pxa_gpio_mode(GPIO51_nPIOW_MD);
	pxa_gpio_mode(GPIO85_nPCE_1_MD);
	pxa_gpio_mode(GPIO54_nPCE_2_MD);
	pxa_gpio_mode(GPIO55_nPREG_MD);
	pxa_gpio_mode(GPIO56_nPWAIT_MD);
	pxa_gpio_mode(GPIO57_nIOIS16_MD);

	/* Reset signal */
	pxa_gpio_mode(GPIO53_nPCE_2 | GPIO_OUT);
	GPCR(GPIO53_nPCE_2) = GPIO_bit(GPIO53_nPCE_2);

	set_irq_type(PCMCIA_S0_CD_VALID, IRQ_TYPE_EDGE_BOTH);
	set_irq_type(PCMCIA_S1_CD_VALID, IRQ_TYPE_EDGE_BOTH);

	/* irq's for slots: */
	set_irq_type(PCMCIA_S0_RDYINT, IRQ_TYPE_EDGE_FALLING);
	set_irq_type(PCMCIA_S1_RDYINT, IRQ_TYPE_EDGE_FALLING);

	skt->irq = (skt->nr == 0) ? PCMCIA_S0_RDYINT : PCMCIA_S1_RDYINT;
	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #3
0
static int mst_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{


    skt->irq = (skt->nr == 0) ? MAINSTONE_S0_IRQ : MAINSTONE_S1_IRQ;
    return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #4
0
static int hx2750_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	/*
	 * Setup default state of GPIO outputs
	 * before we enable them as outputs.
	 */
	GPSR(GPIO48_nPOE) =
		GPIO_bit(GPIO48_nPOE) |
		GPIO_bit(GPIO49_nPWE) |
		GPIO_bit(GPIO50_nPIOR) |
		GPIO_bit(GPIO51_nPIOW) |
		GPIO_bit(GPIO85_nPCE_1) |
		GPIO_bit(GPIO54_nPCE_2);

	pxa_gpio_mode(GPIO48_nPOE_MD);
	pxa_gpio_mode(GPIO49_nPWE_MD);
	pxa_gpio_mode(GPIO50_nPIOR_MD);
	pxa_gpio_mode(GPIO51_nPIOW_MD);
	pxa_gpio_mode(GPIO85_nPCE_1_MD);
	pxa_gpio_mode(GPIO54_nPCE_2_MD);
	pxa_gpio_mode(GPIO79_pSKTSEL_MD);
	pxa_gpio_mode(GPIO55_nPREG_MD);
	pxa_gpio_mode(GPIO56_nPWAIT_MD);
	pxa_gpio_mode(GPIO57_nIOIS16_MD);

	skt->irq = (skt->nr == 0) ? HX2750_IRQ_GPIO_CF_IRQ : HX2750_IRQ_GPIO_CF_WIFIIRQ;
	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #5
0
static int palmtx_pcmcia_hw_init (struct soc_pcmcia_socket *skt)
{
        GPSR(GPIO48_nPOE_MD) =	GPIO_bit(GPIO48_nPOE_MD) |
				GPIO_bit(GPIO49_nPWE_MD) |
				GPIO_bit(GPIO50_nPIOR_MD) |
				GPIO_bit(GPIO51_nPIOW_MD) |
				GPIO_bit(GPIO85_nPCE_1_MD) |
				GPIO_bit(GPIO53_nPCE_2_MD) |
				GPIO_bit(GPIO54_pSKTSEL_MD) |
				GPIO_bit(GPIO55_nPREG_MD) |
				GPIO_bit(GPIO56_nPWAIT_MD) |
				GPIO_bit(GPIO57_nIOIS16_MD);

        pxa_gpio_mode(GPIO48_nPOE_MD);
        pxa_gpio_mode(GPIO49_nPWE_MD);
        pxa_gpio_mode(GPIO50_nPIOR_MD);
        pxa_gpio_mode(GPIO51_nPIOW_MD);
        pxa_gpio_mode(GPIO85_nPCE_1_MD);
        pxa_gpio_mode(GPIO53_nPCE_2_MD);
        pxa_gpio_mode(GPIO54_pSKTSEL_MD);
        pxa_gpio_mode(GPIO55_nPREG_MD);
        pxa_gpio_mode(GPIO56_nPWAIT_MD);
        pxa_gpio_mode(GPIO57_nIOIS16_MD);

	skt->irq = IRQ_GPIO(GPIO_NR_PALMTX_PCMCIA_READY);

	palmtx_pcmcia_dbg("%s:%i, Socket:%d\n", __FUNCTION__, __LINE__, skt->nr);
        return soc_pcmcia_request_irqs(skt, palmtx_socket_state_irqs,
				       ARRAY_SIZE(palmtx_socket_state_irqs));
}
static int sharpsl_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	int ret;

	if (platform_scoop_config->pcmcia_init)
		platform_scoop_config->pcmcia_init();

	/* Register interrupts */
	if (SCOOP_DEV[skt->nr].cd_irq >= 0) {
		struct pcmcia_irqs cd_irq;

		cd_irq.sock = skt->nr;
		cd_irq.irq  = SCOOP_DEV[skt->nr].cd_irq;
		cd_irq.str  = SCOOP_DEV[skt->nr].cd_irq_str;
		ret = soc_pcmcia_request_irqs(skt, &cd_irq, 1);

		if (ret) {
			printk(KERN_ERR "Request for Compact Flash IRQ failed\n");
			return ret;
		}
	}

	skt->irq = SCOOP_DEV[skt->nr].irq;

	return 0;
}
int sa1111_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	if (skt->irq == NO_IRQ)
		skt->irq = skt->nr ? IRQ_S1_READY_NINT : IRQ_S0_READY_NINT;

	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #8
0
static int h3600_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	skt->irq = skt->nr ? IRQ_GPIO_H3600_PCMCIA_IRQ1
			   : IRQ_GPIO_H3600_PCMCIA_IRQ0;


	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
static int simpad_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{

	clear_cs3_bit(VCC_3V_EN|VCC_5V_EN|EN0|EN1);

	skt->socket.pci_irq = IRQ_GPIO_CF_IRQ;

	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #10
0
static int mst_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	/*
	 * Setup default state of GPIO outputs
	 * before we enable them as outputs.
	 */

	skt->irq = (skt->nr == 0) ? MAINSTONE_S0_IRQ : MAINSTONE_S1_IRQ;
	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #11
0
static int shannon_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	/* All those are inputs */
	GPDR &= ~(SHANNON_GPIO_EJECT_0 | SHANNON_GPIO_EJECT_1 | 
		  SHANNON_GPIO_RDY_0 | SHANNON_GPIO_RDY_1);
	GAFR &= ~(SHANNON_GPIO_EJECT_0 | SHANNON_GPIO_EJECT_1 | 
		  SHANNON_GPIO_RDY_0 | SHANNON_GPIO_RDY_1);

	skt->irq = skt->nr ? SHANNON_IRQ_GPIO_RDY_1 : SHANNON_IRQ_GPIO_RDY_0;

	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #12
0
static int balloon3_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	uint16_t ver;

	ver = __raw_readw(BALLOON3_FPGA_VER);
	if (ver < 0x4f08)
		pr_warn("The FPGA code, version 0x%04x, is too old. "
			"PCMCIA/CF support might be broken in this version!",
			ver);

	skt->socket.pci_irq = BALLOON3_BP_CF_NRDY_IRQ;
	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
static int cmx255_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	int ret = gpio_request(GPIO_PCMCIA_RESET, "PCCard reset");
	if (ret)
		return ret;
	gpio_direction_output(GPIO_PCMCIA_RESET, 0);

	skt->socket.pci_irq = skt->nr == 0 ? PCMCIA_S0_RDYINT : PCMCIA_S1_RDYINT;
	ret = soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
	if (!ret)
		gpio_free(GPIO_PCMCIA_RESET);

	return ret;
}
Example #14
0
static int balloon3_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	uint16_t ver;
	int ret;
	static void __iomem *fpga_ver;

	ver = __raw_readw(BALLOON3_FPGA_VER);
	if (ver > 0x0201)
		pr_warn("The FPGA code, version 0x%04x, is newer than rel-0.3. "
			"PCMCIA/CF support might be broken in this version!",
			ver);

	skt->socket.pci_irq = BALLOON3_BP_CF_NRDY_IRQ;
	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
static int vpac270_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	int ret;

	if (skt->nr == 0) {
		ret = gpio_request_array(vpac270_pcmcia_gpios,
				ARRAY_SIZE(vpac270_pcmcia_gpios));

		skt->socket.pci_irq = gpio_to_irq(GPIO35_VPAC270_PCMCIA_RDY);

		if (!ret)
			ret = soc_pcmcia_request_irqs(skt, &cd_irqs[0], 1);
	} else {
		ret = gpio_request_array(vpac270_cf_gpios,
				ARRAY_SIZE(vpac270_cf_gpios));

		skt->socket.pci_irq = gpio_to_irq(GPIO12_VPAC270_CF_RDY);

		if (!ret)
			ret = soc_pcmcia_request_irqs(skt, &cd_irqs[1], 1);
	}

	return ret;
}
Example #16
0
static int roverp5p_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	unsigned long flags;
	
	skt->irq = IRQ_GPIO(GPIO_NR_ROVERP5P_PXA_PRDY);
	
	local_irq_save (flags);
	pxa_gpio_mode (GPIO_NR_ROVERP5P_CF_RESET | GPIO_OUT);
	pxa_gpio_mode (GPIO_NR_ROVERP5P_CF_PWR_ON | GPIO_OUT);
	pxa_gpio_mode (GPIO_NR_ROVERP5P_CF_BUS_nON | GPIO_OUT);
	pxa_gpio_mode (GPIO_NR_ROVERP5P_CF_DETECT | GPIO_IN);
        pxa_gpio_mode (GPIO_NR_ROVERP5P_PXA_PRDY | GPIO_IN);
	local_irq_restore (flags);

	return soc_pcmcia_request_irqs(skt, cd_irqs, ARRAY_SIZE(cd_irqs));
}
Example #17
0
static int viper_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	struct arcom_pcmcia_pdata *pdata = viper_get_pdata();
	unsigned long flags;

	skt->socket.pci_irq = gpio_to_irq(pdata->rdy_gpio);
	irqs[0].irq = gpio_to_irq(pdata->cd_gpio);

	if (gpio_request(pdata->cd_gpio, "CF detect"))
		goto err_request_cd;

	if (gpio_request(pdata->rdy_gpio, "CF ready"))
		goto err_request_rdy;

	if (gpio_request(pdata->pwr_gpio, "CF power"))
		goto err_request_pwr;

	local_irq_save(flags);

	if (gpio_direction_output(pdata->pwr_gpio, 0) ||
	    gpio_direction_input(pdata->cd_gpio) ||
	    gpio_direction_input(pdata->rdy_gpio)) {
		local_irq_restore(flags);
		goto err_dir;
	}

	local_irq_restore(flags);

	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));

err_dir:
	gpio_free(pdata->pwr_gpio);
err_request_pwr:
	gpio_free(pdata->rdy_gpio);
err_request_rdy:
	gpio_free(pdata->cd_gpio);
err_request_cd:
	dev_err(&arcom_pcmcia_dev->dev, "Failed to setup PCMCIA GPIOs\n");
	return -1;
}
Example #18
0
static int viper_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	unsigned long flags;

	skt->irq = gpio_to_irq(VIPER_CF_RDY_GPIO);

	if (gpio_request(VIPER_CF_CD_GPIO, "CF detect"))
		goto err_request_cd;

	if (gpio_request(VIPER_CF_RDY_GPIO, "CF ready"))
		goto err_request_rdy;

	if (gpio_request(VIPER_CF_POWER_GPIO, "CF power"))
		goto err_request_pwr;

	local_irq_save(flags);

	
	if (gpio_direction_output(VIPER_CF_POWER_GPIO, 0) ||
	    gpio_direction_input(VIPER_CF_CD_GPIO) ||
	    gpio_direction_input(VIPER_CF_RDY_GPIO)) {
		local_irq_restore(flags);
		goto err_dir;
	}

	local_irq_restore(flags);

	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));

err_dir:
	gpio_free(VIPER_CF_POWER_GPIO);
err_request_pwr:
	gpio_free(VIPER_CF_RDY_GPIO);
err_request_rdy:
	gpio_free(VIPER_CF_CD_GPIO);
err_request_cd:
	printk(KERN_ERR "viper: Failed to setup PCMCIA GPIOs\n");
	return -1;
}
Example #19
0
static int assabet_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	skt->irq = ASSABET_IRQ_GPIO_CF_IRQ;

	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
static int vpac270_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	int ret;

	if (skt->nr == 0) {
		ret = gpio_request(GPIO84_VPAC270_PCMCIA_CD, "PCMCIA CD");
		if (ret)
			goto err1;
		ret = gpio_direction_input(GPIO84_VPAC270_PCMCIA_CD);
		if (ret)
			goto err2;

		ret = gpio_request(GPIO35_VPAC270_PCMCIA_RDY, "PCMCIA RDY");
		if (ret)
			goto err2;
		ret = gpio_direction_input(GPIO35_VPAC270_PCMCIA_RDY);
		if (ret)
			goto err3;

		ret = gpio_request(GPIO107_VPAC270_PCMCIA_PPEN, "PCMCIA PPEN");
		if (ret)
			goto err3;
		ret = gpio_direction_output(GPIO107_VPAC270_PCMCIA_PPEN, 0);
		if (ret)
			goto err4;

		ret = gpio_request(GPIO11_VPAC270_PCMCIA_RESET, "PCMCIA RESET");
		if (ret)
			goto err4;
		ret = gpio_direction_output(GPIO11_VPAC270_PCMCIA_RESET, 0);
		if (ret)
			goto err5;

		skt->socket.pci_irq = gpio_to_irq(GPIO35_VPAC270_PCMCIA_RDY);

		return soc_pcmcia_request_irqs(skt, &cd_irqs[0], 1);

err5:
		gpio_free(GPIO11_VPAC270_PCMCIA_RESET);
err4:
		gpio_free(GPIO107_VPAC270_PCMCIA_PPEN);
err3:
		gpio_free(GPIO35_VPAC270_PCMCIA_RDY);
err2:
		gpio_free(GPIO84_VPAC270_PCMCIA_CD);
err1:
		return ret;

	} else {
		ret = gpio_request(GPIO17_VPAC270_CF_CD, "CF CD");
		if (ret)
			goto err6;
		ret = gpio_direction_input(GPIO17_VPAC270_CF_CD);
		if (ret)
			goto err7;

		ret = gpio_request(GPIO12_VPAC270_CF_RDY, "CF RDY");
		if (ret)
			goto err7;
		ret = gpio_direction_input(GPIO12_VPAC270_CF_RDY);
		if (ret)
			goto err8;

		ret = gpio_request(GPIO16_VPAC270_CF_RESET, "CF RESET");
		if (ret)
			goto err8;
		ret = gpio_direction_output(GPIO16_VPAC270_CF_RESET, 0);
		if (ret)
			goto err9;

		skt->socket.pci_irq = gpio_to_irq(GPIO12_VPAC270_CF_RDY);

		return soc_pcmcia_request_irqs(skt, &cd_irqs[1], 1);

err9:
		gpio_free(GPIO16_VPAC270_CF_RESET);
err8:
		gpio_free(GPIO12_VPAC270_CF_RDY);
err7:
		gpio_free(GPIO17_VPAC270_CF_CD);
err6:
		return ret;

	}
}
Example #21
0
static int cerf_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	skt->irq = CERF_IRQ_GPIO_CF_IRQ;

	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #22
0
static int e750_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	skt->irq = IRQ_GPIO(GPIO_E750_PCMCIA_RDY0);

        return soc_pcmcia_request_irqs(skt, cd_irqs, ARRAY_SIZE(cd_irqs));
}
static int sg2_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	skt->socket.pci_irq = IRQ_GPIO(SG2_S0_GPIO_READY);
	return soc_pcmcia_request_irqs(skt, irqs, ARRAY_SIZE(irqs));
}
Example #24
0
static int colibri_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
	int ret;

	ret = gpio_request(colibri_pcmcia_gpio.detect_gpio, "DETECT");
	if (ret)
		goto err1;
	ret = gpio_direction_input(colibri_pcmcia_gpio.detect_gpio);
	if (ret)
		goto err2;

	ret = gpio_request(colibri_pcmcia_gpio.ready_gpio, "READY");
	if (ret)
		goto err2;
	ret = gpio_direction_input(colibri_pcmcia_gpio.ready_gpio);
	if (ret)
		goto err3;

	ret = gpio_request(colibri_pcmcia_gpio.bvd1_gpio, "BVD1");
	if (ret)
		goto err3;
	ret = gpio_direction_input(colibri_pcmcia_gpio.bvd1_gpio);
	if (ret)
		goto err4;

	ret = gpio_request(colibri_pcmcia_gpio.bvd2_gpio, "BVD2");
	if (ret)
		goto err4;
	ret = gpio_direction_input(colibri_pcmcia_gpio.bvd2_gpio);
	if (ret)
		goto err5;

	ret = gpio_request(colibri_pcmcia_gpio.ppen_gpio, "PPEN");
	if (ret)
		goto err5;
	ret = gpio_direction_output(colibri_pcmcia_gpio.ppen_gpio, 0);
	if (ret)
		goto err6;

	ret = gpio_request(colibri_pcmcia_gpio.reset_gpio, "RESET");
	if (ret)
		goto err6;
	ret = gpio_direction_output(colibri_pcmcia_gpio.reset_gpio, 1);
	if (ret)
		goto err7;

	colibri_irqs[0].irq = gpio_to_irq(colibri_pcmcia_gpio.detect_gpio);
	skt->socket.pci_irq = gpio_to_irq(colibri_pcmcia_gpio.ready_gpio);

	return soc_pcmcia_request_irqs(skt, colibri_irqs,
					ARRAY_SIZE(colibri_irqs));

err7:
	gpio_free(colibri_pcmcia_gpio.detect_gpio);
err6:
	gpio_free(colibri_pcmcia_gpio.ready_gpio);
err5:
	gpio_free(colibri_pcmcia_gpio.bvd1_gpio);
err4:
	gpio_free(colibri_pcmcia_gpio.bvd2_gpio);
err3:
	gpio_free(colibri_pcmcia_gpio.reset_gpio);
err2:
	gpio_free(colibri_pcmcia_gpio.ppen_gpio);
err1:
	return ret;
}