示例#1
0
static void setup_spi_fpga(void)
{
	int ret;
	printk(KERN_INFO "SPI: setup fpga initialization\n");
#if 0
	ret = gpio_request(S3C64XX_GPP(8), "FPGACS");
	if (ret) {
		printk(KERN_ERR "SPI: Setup FPGACS Error\n");
	}
	s3c_gpio_setpull(S3C64XX_GPP(8), S3C_GPIO_PULL_NONE);	// Manual chip select pin as used in 6410_set_cs
	s3c_gpio_cfgpin(S3C64XX_GPP(8), S3C_GPIO_OUTPUT);		// Manual chip select pin as used in 6410_set_cs
#endif
	ret = gpio_request(S3C64XX_GPP(12), "FPGAPRO");
	if (ret) {
		printk(KERN_ERR "SPI: Setup FPGAPRO Error\n");
	}
	s3c_gpio_setpull(S3C64XX_GPP(12), S3C_GPIO_PULL_UP);	// Manual chip select pin as used in 6410_set_cs
	s3c_gpio_cfgpin(S3C64XX_GPP(12), S3C_GPIO_OUTPUT);		// Manual chip select pin as used in 6410_set_cs

    	gpio_direction_output(S3C64XX_GPP(12), 1);
	mdelay(1);
    	gpio_direction_output(S3C64XX_GPP(12), 0);
	msleep(200);
    	gpio_direction_output(S3C64XX_GPP(12), 1);
};
示例#2
0
static void setup_pin_fpga(void)
{
	int ret;
	/* Initialize SPI GPIO for FPGA */
	ret = gpio_request(S3C64XX_GPP(8), "fpga");
	if (ret) {
		printk(KERN_ERR "SPI: Setup CS-Pin0 Error\n");
	}
	s3c_gpio_setpull(S3C64XX_GPP(8), S3C_GPIO_PULL_NONE);	// Manual chip select pin as used in 6410_set_cs
	s3c_gpio_cfgpin(S3C64XX_GPP(8), S3C_GPIO_OUTPUT);		// Manual chip select pin as used in 6410_set_cs
}
			.label	= "GPN",
			.to_irq = s3c64xx_gpio2int_gpn,
		},
	}, {
		.base	= S3C64XX_GPO_BASE,
		.config	= &gpio_2bit_cfg_eint11,
		.chip	= {
			.base	= S3C64XX_GPO(0),
			.ngpio	= S3C64XX_GPIO_O_NR,
			.label	= "GPO",
		},
	}, {
		.base	= S3C64XX_GPP_BASE,
		.config	= &gpio_2bit_cfg_eint11,
		.chip	= {
			.base	= S3C64XX_GPP(0),
			.ngpio	= S3C64XX_GPIO_P_NR,
			.label	= "GPP",
		},
	}, {
		.base	= S3C64XX_GPQ_BASE,
		.config	= &gpio_2bit_cfg_eint11,
		.chip	= {
			.base	= S3C64XX_GPQ(0),
			.ngpio	= S3C64XX_GPIO_Q_NR,
			.label	= "GPQ",
		},
	},
};

static __init void s3c64xx_gpiolib_add_2bit(struct s3c_gpio_chip *chip)
示例#4
0
static void cfg_fpga_pro(int val)
{
    	gpio_direction_output(S3C64XX_GPP(12), val);
}
示例#5
0
    	gpio_direction_output(S3C64XX_GPP(12), 0);
	msleep(200);
    	gpio_direction_output(S3C64XX_GPP(12), 1);
};

static struct s3c64xx_spi_csinfo s3c64xx_spi0_csinfo = {
  	.fb_delay=0x3,
  	.line=S3C64XX_GPC(3), /*used for FPGA now*/
  	//.line=S3C64XX_GPP(8),
  	.set_level=cs_set_level,
	.cfg_io = setup_pin_cs0,
	.cfg_fpga = cfg_fpga_pro,
};
static struct s3c64xx_spi_csinfo s3c64xx_spi0_fpga = {
  	.fb_delay=0x3,
  	.line=S3C64XX_GPP(8), /*used for FPGA now*/
  	.set_level=cs_set_level,
	.cfg_io = setup_pin_fpga,
	//.cfg_fpga = cfg_fpga_pro,
};

static int mcp251x_ioSetup(struct spi_device *spi)
{
	printk(KERN_INFO "mcp251x: setup gpio pins CS and External Int\n");
	s3c_gpio_setpull(S3C64XX_GPL(8), S3C_GPIO_PULL_UP);		// External interrupt from CAN controller
	s3c_gpio_cfgpin(S3C64XX_GPL(8), S3C_GPIO_SFN(3)); 		// External interrupt from CAN controller (hopefully external interrupt)
	//s3c_gpio_cfgpin(S3C64XX_GPL(8), S3C_GPIO_INPUT);		// External interrupt from CAN controller
	s3c_gpio_setpull(S3C64XX_GPC(7), S3C_GPIO_PULL_NONE);	// Manual chip select pin as used in 6410_set_cs
	s3c_gpio_cfgpin(S3C64XX_GPC(7), S3C_GPIO_OUTPUT);		// Manual chip select pin as used in 6410_set_cs
	return 0;
}