inline void s3cfb_spi_set_lcd_data(int ch)
{
	gpio_direction_output(S5P_FB_SPI_CLK(ch), 1);
	gpio_direction_output(S5P_FB_SPI_MOSI(ch), 1);
	gpio_direction_output(S5P_FB_SPI_nSS(ch), 1);

	gpio_pullup(S5P_FB_SPI_CLK(ch), S5P_GPIO_PUD_DISABLE);
	gpio_pullup(S5P_FB_SPI_MOSI(ch), S5P_GPIO_PUD_DISABLE);
	gpio_pullup(S5P_FB_SPI_nSS(ch), S5P_GPIO_PUD_DISABLE);
}
static int __init
s3c6410_leds_init(void)
{
	if (machine_is_smdk6410())
		leds_event = smdk6410_leds_event;
	else
		return -1;

	if (machine_is_smdk6410())
	{
		/*GPN12~15 used for LED*/
		/*Set GPN12~15 to output mode */
		gpio_direction_output(S3C_GPN12);
		if(gpio_get_pin(S3C_GPN12) == 0)
		{
			printk(KERN_WARNING "LED: can't set GPN12 output mode\n");
		}

		gpio_direction_output(S3C_GPN13);
		if(gpio_get_pin(S3C_GPN13) == 0)
		{
			printk(KERN_WARNING "LED: can't set GPN13 output mode\n");
		}

		gpio_direction_output(S3C_GPN14);
		if(gpio_get_pin(S3C_GPN14) == 0)
		{
			printk(KERN_WARNING "LED: can't set GPN14 output mode\n");
		}

		gpio_direction_output(S3C_GPN15);
		if(gpio_get_pin(S3C_GPN15) == 0)
		{
			printk(KERN_WARNING "LED: can't set GPN15 output mode\n");
		}

	}

	/* Get irqs */
	set_irq_type(IRQ_EINT9, IRQT_FALLING);
	gpio_pullup(S3C_GPN9, 0x0);
	if (request_irq(IRQ_EINT9, eint9_switch, SA_TRIGGER_FALLING, "EINT9", NULL)) {
		printk(KERN_ERR "leds.c: Could not allocate EINT9 !\n");
		return -EIO;
	}


	leds_event(led_start);
	return 0;
}
static void smdk6410_hsmmc_init (void)
{
    /* hsmmc data strength */
    writel(readl(S3C_SPCON) | (0x3 << 26), S3C_SPCON);

    /* jsgood: hsmmc0/1 card detect pin should be high before setup gpio. (GPG6 to Input) */
    writel(readl(S3C_GPGCON) & 0xf0ffffff, S3C_GPGCON);

    /* GPIO N 13 (external interrupt) : Chip detect */
    gpio_set_pin(S3C_GPN13, S3C_GPN13_EXTINT13);	/* GPN13 to EINT13 */
    gpio_pullup(S3C_GPN13, 0x2);	  	/* Pull-up Enable */

    /* jsgood: MUXmmc# to DOUTmpll for MPLL Clock Source */
    writel((readl(S3C_CLK_SRC) & ~(0x3f << 18)) | (0x15 << 18), S3C_CLK_SRC);
}
        /*--------------------------------------------------------------
         * HS-MMC GPIO Set function
         * the location of this function must be re-considered.
         * by scsuh
         *--------------------------------------------------------------*/
        void hsmmc_set_gpio (uint channel, uint width)
{
    switch (channel) {
    /* can supports 1 and 4 bit bus */
    case 0:
        /* GPIO G : Command, Clock */
        gpio_set_pin(S3C_GPG0, S3C_GPG0_MMC_CLK0);
        gpio_set_pin(S3C_GPG1, S3C_GPG1_MMC_CMD0);

        gpio_pullup(S3C_GPG0, 0x0);	  /* Pull-up/down disable */
        gpio_pullup(S3C_GPG1, 0x0);	  /* Pull-up/down disable */

        /* GPIO G : Chip detect + LED */
        gpio_set_pin(S3C_GPG6, S3C_GPG6_MMC_CD1);
        gpio_pullup(S3C_GPG6, 0x2);	  /* Pull-up Enable */

        if (width == 1) {
            /* GPIO G : MMC DATA1[0] */
            gpio_set_pin(S3C_GPG2, S3C_GPG2_MMC_DATA0_0);

            gpio_pullup(S3C_GPG2, 0x0);	  /* Pull-up/down disable */
        }
        else if (width == 4) {
            /* GPIO G : MMC DATA1[0:3] */
            gpio_set_pin(S3C_GPG2, S3C_GPG2_MMC_DATA0_0);
            gpio_set_pin(S3C_GPG3, S3C_GPG3_MMC_DATA0_1);
            gpio_set_pin(S3C_GPG4, S3C_GPG4_MMC_DATA0_2);
            gpio_set_pin(S3C_GPG5, S3C_GPG5_MMC_DATA0_3);

            gpio_pullup(S3C_GPG2, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPG3, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPG4, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPG5, 0x0);	  /* Pull-up/down disable */
        }
        break;

    /* can supports 1, 4, and 8 bit bus */
    case 1:
        /* GPIO H : Command, Clock */
        gpio_set_pin(S3C_GPH0, S3C_GPH0_MMC_CLK1);
        gpio_set_pin(S3C_GPH1, S3C_GPH1_MMC_CMD1);

        gpio_pullup(S3C_GPH0, 0x0);	  /* Pull-up/down disable */
        gpio_pullup(S3C_GPH1, 0x0);	  /* Pull-up/down disable */

        /* GPIO G : Chip detect + LED */
        gpio_set_pin(S3C_GPG6, S3C_GPG6_MMC_CD1);
        gpio_pullup(S3C_GPG6, 0x2);	  /* Pull-up Enable */

        if (width == 1) {
            /* GPIO H : MMC DATA1[0] */
            gpio_set_pin(S3C_GPH2, S3C_GPH2_MMC_DATA1_0);

            gpio_pullup(S3C_GPH2, 0x0);	  /* Pull-up/down disable */
        }
        else if (width == 4) {
            /* GPIO H : MMC DATA1[0:3] */
            gpio_set_pin(S3C_GPH2, S3C_GPH2_MMC_DATA1_0);
            gpio_set_pin(S3C_GPH3, S3C_GPH3_MMC_DATA1_1);
            gpio_set_pin(S3C_GPH4, S3C_GPH4_MMC_DATA1_2);
            gpio_set_pin(S3C_GPH5, S3C_GPH5_MMC_DATA1_3);

            gpio_pullup(S3C_GPH2, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH3, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH4, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH5, 0x0);	  /* Pull-up/down disable */
        }
        else if (width == 8) {
            /* GPIO H : MMC DATA1[0:7] */
            gpio_set_pin(S3C_GPH2, S3C_GPH2_MMC_DATA1_0);
            gpio_set_pin(S3C_GPH3, S3C_GPH3_MMC_DATA1_1);
            gpio_set_pin(S3C_GPH4, S3C_GPH4_MMC_DATA1_2);
            gpio_set_pin(S3C_GPH5, S3C_GPH5_MMC_DATA1_3);
            gpio_set_pin(S3C_GPH6, S3C_GPH6_MMC_DATA1_4);
            gpio_set_pin(S3C_GPH7, S3C_GPH7_MMC_DATA1_5);
            gpio_set_pin(S3C_GPH8, S3C_GPH8_MMC_DATA1_6);
            gpio_set_pin(S3C_GPH9, S3C_GPH9_MMC_DATA1_7);

            gpio_pullup(S3C_GPH2, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH3, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH4, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH5, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH6, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH7, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH8, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH9, 0x0);	  /* Pull-up/down disable */
        }
        break;

    /* can supports 1 and 4 bit bus, no irq_cd */
    case 2:
        /* GPIO H : Command, Clock */
        gpio_set_pin(S3C_GPH0, S3C_GPH0_MMC_CLK1);
        gpio_set_pin(S3C_GPH1, S3C_GPH1_MMC_CMD1);

        gpio_pullup(S3C_GPH0, 0x0);	  /* Pull-up/down disable */
        gpio_pullup(S3C_GPH1, 0x0);	  /* Pull-up/down disable */

        /* GPIO G : Chip detect + LED */
        gpio_set_pin(S3C_GPG6, S3C_GPG6_MMC_CD1);
        gpio_pullup(S3C_GPG6, 0x2);	  /* Pull-up Enable */

        if (width == 1) {
            /* GPIO H : MMC DATA1[0] */
            gpio_set_pin(S3C_GPH6, S3C_GPH6_MMC_DATA2_0);

            gpio_pullup(S3C_GPH6, 0x0);	  /* Pull-up/down disable */
        }
        else if (width == 4) {
            /* GPIO H : MMC DATA1[0:3] */
            gpio_set_pin(S3C_GPH6, S3C_GPH6_MMC_DATA2_0);
            gpio_set_pin(S3C_GPH7, S3C_GPH7_MMC_DATA2_1);
            gpio_set_pin(S3C_GPH8, S3C_GPH8_MMC_DATA2_2);
            gpio_set_pin(S3C_GPH9, S3C_GPH9_MMC_DATA2_3);

            gpio_pullup(S3C_GPH6, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH7, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH8, 0x0);	  /* Pull-up/down disable */
            gpio_pullup(S3C_GPH9, 0x0);	  /* Pull-up/down disable */
        }

        break;

    default:
        break;
    }
}