static void camif_get_gpios(int *gpio_start, int *gpio_reset) { #ifdef CONFIG_ARCH_S3C24XX *gpio_start = S3C2410_GPJ(0); *gpio_reset = S3C2410_GPJ(12); #else /* s3c64xx */ *gpio_start = S3C64XX_GPF(0); *gpio_reset = S3C64XX_GPF(3); #endif }
static void rx1950_set_mmc_power(unsigned char power_mode, unsigned short vdd) { switch (power_mode) { case MMC_POWER_OFF: gpio_direction_output(S3C2410_GPJ(1), 0); break; case MMC_POWER_UP: case MMC_POWER_ON: gpio_direction_output(S3C2410_GPJ(1), 1); break; default: break; } }
static int lm4853_event(struct snd_soc_dapm_widget *w, struct snd_kcontrol *k, int event) { gpio_set_value(S3C2410_GPJ(1), SND_SOC_DAPM_EVENT_OFF(event)); return 0; }
static void __init rx1950_init_machine(void) { int i; s3c24xx_fb_set_platdata(&rx1950_lcd_cfg); s3c24xx_udc_set_platdata(&rx1950_udc_cfg); s3c24xx_ts_set_platdata(&rx1950_ts_cfg); s3c24xx_mci_set_platdata(&rx1950_mmc_cfg); s3c_i2c0_set_platdata(NULL); s3c_nand_set_platdata(&rx1950_nand_info); /* Turn off suspend on both USB ports, and switch the * selectable USB port to USB device mode. */ s3c2410_modify_misccr(S3C2410_MISCCR_USBHOST | S3C2410_MISCCR_USBSUSPND0 | S3C2410_MISCCR_USBSUSPND1, 0x0); /* mmc power is disabled by default */ WARN_ON(gpio_request(S3C2410_GPJ(1), "MMC power")); gpio_direction_output(S3C2410_GPJ(1), 0); for (i = 0; i < 8; i++) WARN_ON(gpio_request(S3C2410_GPC(i), "LCD power")); for (i = 10; i < 16; i++) WARN_ON(gpio_request(S3C2410_GPC(i), "LCD power")); for (i = 2; i < 8; i++) WARN_ON(gpio_request(S3C2410_GPD(i), "LCD power")); for (i = 11; i < 16; i++) WARN_ON(gpio_request(S3C2410_GPD(i), "LCD power")); WARN_ON(gpio_request(S3C2410_GPB(1), "LCD power")); WARN_ON(gpio_request(S3C2410_GPA(3), "Red blink")); WARN_ON(gpio_request(S3C2410_GPA(4), "Green blink")); WARN_ON(gpio_request(S3C2410_GPJ(6), "LED blink")); gpio_direction_output(S3C2410_GPA(3), 0); gpio_direction_output(S3C2410_GPA(4), 0); gpio_direction_output(S3C2410_GPJ(6), 0); platform_add_devices(rx1950_devices, ARRAY_SIZE(rx1950_devices)); i2c_register_board_info(0, rx1950_i2c_devices, ARRAY_SIZE(rx1950_i2c_devices)); }
static int rx1950_bat_init(void) { int ret; ret = gpio_request(S3C2410_GPJ(2), "rx1950-charger-enable-1"); if (ret) goto err_gpio1; ret = gpio_request(S3C2410_GPJ(3), "rx1950-charger-enable-2"); if (ret) goto err_gpio2; return 0; err_gpio2: gpio_free(S3C2410_GPJ(2)); err_gpio1: return ret; }
static int lm4853_set_spk(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol) { gta02_speaker_enabled = ucontrol->value.integer.value[0]; gpio_set_value(S3C2410_GPJ(2), !gta02_speaker_enabled); return 0; }
static int rx1950_led_blink_set(unsigned gpio, int state, unsigned long *delay_on, unsigned long *delay_off) { int blink_gpio, check_gpio; switch (gpio) { case S3C2410_GPA(6): blink_gpio = S3C2410_GPA(4); check_gpio = S3C2410_GPA(3); break; case S3C2410_GPA(7): blink_gpio = S3C2410_GPA(3); check_gpio = S3C2410_GPA(4); break; default: return -EINVAL; break; } if (delay_on && delay_off && !*delay_on && !*delay_off) *delay_on = *delay_off = 500; spin_lock(&rx1950_blink_spin); switch (state) { case GPIO_LED_NO_BLINK_LOW: case GPIO_LED_NO_BLINK_HIGH: if (!gpio_get_value(check_gpio)) gpio_set_value(S3C2410_GPJ(6), 0); gpio_set_value(blink_gpio, 0); gpio_set_value(gpio, state); break; case GPIO_LED_BLINK: gpio_set_value(gpio, 0); gpio_set_value(S3C2410_GPJ(6), 1); gpio_set_value(blink_gpio, 1); break; } spin_unlock(&rx1950_blink_spin); return 0; }
static void rx1950_disable_charger(void) { gpio_direction_output(S3C2410_GPJ(2), 0); gpio_direction_output(S3C2410_GPJ(3), 0); }
static void rx1950_bat_exit(void) { gpio_free(S3C2410_GPJ(2)); gpio_free(S3C2410_GPJ(3)); }
.partitions = rx1950_nand_part, }, }; static struct s3c2410_platform_nand rx1950_nand_info = { .tacls = 25, .twrph0 = 50, .twrph1 = 15, .nr_sets = ARRAY_SIZE(rx1950_nand_sets), .sets = rx1950_nand_sets, }; static struct s3c2410_udc_mach_info rx1950_udc_cfg __initdata = { .vbus_pin = S3C2410_GPG(5), .vbus_pin_inverted = 1, .pullup_pin = S3C2410_GPJ(5), }; static struct s3c2410_ts_mach_info rx1950_ts_cfg __initdata = { .delay = 10000, .presc = 49, .oversampling_shift = 3, }; static struct gpio_keys_button rx1950_gpio_keys_table[] = { { .code = KEY_POWER, .gpio = S3C2410_GPF(0), .active_low = 1, .desc = "Power button", .wakeup = 1,
.ngpio = 16, .to_irq = samsung_gpiolib_to_irq, }, }, { .chip = { .base = S3C2410_GPH(0), .owner = THIS_MODULE, .label = "GPIOH", .ngpio = 15, }, }, /* GPIOS for the S3C2443 and later devices. */ { .base = S3C2440_GPJCON, .chip = { .base = S3C2410_GPJ(0), .owner = THIS_MODULE, .label = "GPIOJ", .ngpio = 16, }, }, { .base = S3C2443_GPKCON, .chip = { .base = S3C2410_GPK(0), .owner = THIS_MODULE, .label = "GPIOK", .ngpio = 16, }, }, { .base = S3C2443_GPLCON, .chip = {
static struct snd_soc_aux_dev neo1973_aux_devs[] = { { .name = "dfbmcs320", .codec_name = "dfbmcs320.0", }, }; static struct snd_soc_codec_conf neo1973_codec_conf[] = { { .dev_name = "lm4857.0-007c", .name_prefix = "Amp", }, }; static const struct gpio neo1973_gta02_gpios[] = { { S3C2410_GPJ(2), GPIOF_OUT_INIT_HIGH, "GTA02_HP_IN" }, { S3C2410_GPJ(1), GPIOF_OUT_INIT_HIGH, "GTA02_AMP_SHUT" }, }; static struct snd_soc_card neo1973 = { .name = "neo1973", .owner = THIS_MODULE, .dai_link = neo1973_dai, .num_links = ARRAY_SIZE(neo1973_dai), .aux_dev = neo1973_aux_devs, .num_aux_devs = ARRAY_SIZE(neo1973_aux_devs), .codec_conf = neo1973_codec_conf, .num_configs = ARRAY_SIZE(neo1973_codec_conf), .controls = neo1973_wm8753_controls, .num_controls = ARRAY_SIZE(neo1973_wm8753_controls),