[ARM] 3847/2: Convert LOMOMO to use struct device for GPIOs
Convert LOMOMO to use struct device * for GPIOs instead of struct locomo_dev. This enables access to the GPIOs from code which is not a locomo device itself (such as audio). Access for gpio 31 is removed for error handling (no such hardware exists). Signed-off-by: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
committed by
Russell King
parent
2dc94310bd
commit
8d48427ecb
@@ -814,12 +814,15 @@ static inline struct locomo *locomo_chip_driver(struct locomo_dev *ldev)
|
||||
return (struct locomo *)dev_get_drvdata(ldev->dev.parent);
|
||||
}
|
||||
|
||||
void locomo_gpio_set_dir(struct locomo_dev *ldev, unsigned int bits, unsigned int dir)
|
||||
void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir)
|
||||
{
|
||||
struct locomo *lchip = locomo_chip_driver(ldev);
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
unsigned long flags;
|
||||
unsigned int r;
|
||||
|
||||
if (!lchip)
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
|
||||
r = locomo_readl(lchip->base + LOCOMO_GPD);
|
||||
@@ -836,12 +839,15 @@ void locomo_gpio_set_dir(struct locomo_dev *ldev, unsigned int bits, unsigned in
|
||||
spin_unlock_irqrestore(&lchip->lock, flags);
|
||||
}
|
||||
|
||||
unsigned int locomo_gpio_read_level(struct locomo_dev *ldev, unsigned int bits)
|
||||
int locomo_gpio_read_level(struct device *dev, unsigned int bits)
|
||||
{
|
||||
struct locomo *lchip = locomo_chip_driver(ldev);
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
unsigned long flags;
|
||||
unsigned int ret;
|
||||
|
||||
if (!lchip)
|
||||
return -ENODEV;
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
ret = locomo_readl(lchip->base + LOCOMO_GPL);
|
||||
spin_unlock_irqrestore(&lchip->lock, flags);
|
||||
@@ -850,12 +856,15 @@ unsigned int locomo_gpio_read_level(struct locomo_dev *ldev, unsigned int bits)
|
||||
return ret;
|
||||
}
|
||||
|
||||
unsigned int locomo_gpio_read_output(struct locomo_dev *ldev, unsigned int bits)
|
||||
int locomo_gpio_read_output(struct device *dev, unsigned int bits)
|
||||
{
|
||||
struct locomo *lchip = locomo_chip_driver(ldev);
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
unsigned long flags;
|
||||
unsigned int ret;
|
||||
|
||||
if (!lchip)
|
||||
return -ENODEV;
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
ret = locomo_readl(lchip->base + LOCOMO_GPO);
|
||||
spin_unlock_irqrestore(&lchip->lock, flags);
|
||||
@@ -864,12 +873,15 @@ unsigned int locomo_gpio_read_output(struct locomo_dev *ldev, unsigned int bits)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void locomo_gpio_write(struct locomo_dev *ldev, unsigned int bits, unsigned int set)
|
||||
void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set)
|
||||
{
|
||||
struct locomo *lchip = locomo_chip_driver(ldev);
|
||||
struct locomo *lchip = dev_get_drvdata(dev);
|
||||
unsigned long flags;
|
||||
unsigned int r;
|
||||
|
||||
if (!lchip)
|
||||
return;
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
|
||||
r = locomo_readl(lchip->base + LOCOMO_GPO);
|
||||
@@ -1058,9 +1070,9 @@ void locomo_frontlight_set(struct locomo_dev *dev, int duty, int vr, int bpwf)
|
||||
struct locomo *lchip = locomo_chip_driver(dev);
|
||||
|
||||
if (vr)
|
||||
locomo_gpio_write(dev, LOCOMO_GPIO_FL_VR, 1);
|
||||
locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 1);
|
||||
else
|
||||
locomo_gpio_write(dev, LOCOMO_GPIO_FL_VR, 0);
|
||||
locomo_gpio_write(dev->dev.parent, LOCOMO_GPIO_FL_VR, 0);
|
||||
|
||||
spin_lock_irqsave(&lchip->lock, flags);
|
||||
locomo_writel(bpwf, lchip->base + LOCOMO_FRONTLIGHT + LOCOMO_ALS);
|
||||
|
Reference in New Issue
Block a user