On Tue, Jan 27, 2009 at 06:22:25PM +0200, Vasily Khoruzhick wrote:
Btw, on rx1950 there're 4 gpio pins involved: GPJ0 controls codec power GPA1 controls amplifier power GPG12 is jack sense pin, it's value depends whether headphone jack is inserted
You might want to have a look at the jack reporting API that was recently added, it should save you a bit of code:
http://git.kernel.org/?p=linux/kernel/git/broonie/sound-2.6.git;a=commit;h=8...
It'll need a little helper for GPIOs adding to the core but that should be reusable.
down(&rx1950_power_mutex); printk("%s: enable == %d\n", __func__, enable); if (enable) { if (s3c2410_gpio_getpin(S3C2440_GPJ0)) goto done; //spin_lock(&cmpl_lock); //waiting_for_completion = 1; //spin_unlock(&cmpl_lock); s3c2410_gpio_setpin(S3C2410_GPD0, 0); s3c2410_gpio_setpin(S3C2440_GPJ0, 0); s3c2410_gpio_setpin(S3C2440_GPJ0, 1);
/* Wait for EINT20 irq to ensure uda1380 is powered */ //printk("%s: waiting for compeltion...\n", __func__); //wait_for_completion(&rx1950_sound_completion); //printk("%s: completed\n", __func__); //printk("%s: GPG12: %d\n", __func__, // s3c2410_gpio_getpin(S3C2410_GPG12)); mdelay(50); s3c2410_gpio_setpin(S3C2410_GPD0, 1); s3c2410_gpio_setpin(S3C2410_GPD0, 0);
Hrm. The completion makes this look more like it could use a full blown regulator - it's certainly a pattern that will get reused often enough.
/* configure some gpios */ s3c2410_gpio_cfgpin(S3C2410_GPD0, S3C2410_GPIO_OUTPUT); s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPIO_IRQ); s3c2410_gpio_cfgpin(S3C2440_GPJ0, S3C2410_GPIO_OUTPUT);
The S3C24xx now supports gpiolib so you should be able to use that - the platform specific GPIO API will probably get killed at some point.