Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87b9b0e0 authored by Ashish Jangam's avatar Ashish Jangam Committed by Grant Likely
Browse files

gpio: Fix DA9052 GPIO build errors.



This patch is functionally tested on Samsung SMDKV6410.

Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: default avatarDavid Dajun Chen <dchen@diasemi.com>
Signed-off-by: default avatarAshish Jangam <ashish.jangam@kpitcummins.com>
[grant.likely: don't create an unnecessary header file]
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 28538df0
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@
#include <linux/mfd/da9052/da9052.h>
#include <linux/mfd/da9052/reg.h>
#include <linux/mfd/da9052/pdata.h>
#include <linux/mfd/da9052/gpio.h>

#define DA9052_INPUT				1
#define DA9052_OUTPUT_OPENDRAIN		2
@@ -43,6 +42,9 @@
#define DA9052_GPIO_MASK_UPPER_NIBBLE		0xF0
#define DA9052_GPIO_MASK_LOWER_NIBBLE		0x0F
#define DA9052_GPIO_NIBBLE_SHIFT		4
#define DA9052_IRQ_GPI0			16
#define DA9052_GPIO_ODD_SHIFT			7
#define DA9052_GPIO_EVEN_SHIFT			3

struct da9052_gpio {
	struct da9052 *da9052;
@@ -104,35 +106,28 @@ static int da9052_gpio_get(struct gpio_chip *gc, unsigned offset)
static void da9052_gpio_set(struct gpio_chip *gc, unsigned offset, int value)
{
	struct da9052_gpio *gpio = to_da9052_gpio(gc);
	unsigned char register_value = 0;
	int ret;

	if (da9052_gpio_port_odd(offset)) {
		if (value) {
			register_value = DA9052_GPIO_ODD_PORT_MODE;
			ret = da9052_reg_update(gpio->da9052, (offset >> 1) +
						DA9052_GPIO_0_1_REG,
						DA9052_GPIO_ODD_PORT_MODE,
						register_value);
						value << DA9052_GPIO_ODD_SHIFT);
			if (ret != 0)
				dev_err(gpio->da9052->dev,
					"Failed to updated gpio odd reg,%d",
					ret);
		}
	} else {
		if (value) {
			register_value = DA9052_GPIO_EVEN_PORT_MODE;
			ret = da9052_reg_update(gpio->da9052, (offset >> 1) +
						DA9052_GPIO_0_1_REG,
						DA9052_GPIO_EVEN_PORT_MODE,
						register_value);
						value << DA9052_GPIO_EVEN_SHIFT);
			if (ret != 0)
				dev_err(gpio->da9052->dev,
					"Failed to updated gpio even reg,%d",
					ret);
	}
}
}

static int da9052_gpio_direction_input(struct gpio_chip *gc, unsigned offset)
{
@@ -201,9 +196,9 @@ static struct gpio_chip reference_gp __devinitdata = {
	.direction_input = da9052_gpio_direction_input,
	.direction_output = da9052_gpio_direction_output,
	.to_irq = da9052_gpio_to_irq,
	.can_sleep = 1;
	.ngpio = 16;
	.base = -1;
	.can_sleep = 1,
	.ngpio = 16,
	.base = -1,
};

static int __devinit da9052_gpio_probe(struct platform_device *pdev)