rk30:modify gpio pull up or down operation
authorlw <lw@rock-chips.com>
Sat, 7 Apr 2012 03:48:59 +0000 (11:48 +0800)
committerlw <lw@rock-chips.com>
Sat, 7 Apr 2012 03:48:59 +0000 (11:48 +0800)
drivers/gpio/gpio-rk30.c

index 8db816e8c44705715153aa7eb386621265ac783b..3d30d7341fb7ca26074e921fdbe83fd09e529073 100755 (executable)
@@ -304,9 +304,9 @@ static int rk30_gpiolib_pull_updown(struct gpio_chip *chip, unsigned offset, uns
 
        spin_lock_irqsave(&bank->lock, flags);
        if(offset>=16)  
-       rk30_gpio_bit_op((void *__iomem) RK30_GRF_BASE, GRF_GPIO0H_PULL + bank->id * 8, offset_to_bit(offset-16), !enable);
-       else
-       rk30_gpio_bit_op((void *__iomem) RK30_GRF_BASE, GRF_GPIO0L_PULL + bank->id * 8, offset_to_bit(offset), !enable);
+       rk30_gpio_bit_op((void *__iomem) RK30_GRF_BASE, GRF_GPIO0H_PULL + bank->id * 8, (1<<offset) | offset_to_bit(offset-16), !enable);
+       else    
+       rk30_gpio_bit_op((void *__iomem) RK30_GRF_BASE, GRF_GPIO0L_PULL + bank->id * 8, (1<<(offset+16)) | offset_to_bit(offset), !enable);
        spin_unlock_irqrestore(&bank->lock, flags);
 
        return 0;