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); };
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)
static void cfg_fpga_pro(int val) { gpio_direction_output(S3C64XX_GPP(12), val); }
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; }