summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/drivers/gpio/gpio-da9052.c
diff options
context:
space:
mode:
authorSrikant Patnaik2015-01-11 12:28:04 +0530
committerSrikant Patnaik2015-01-11 12:28:04 +0530
commit871480933a1c28f8a9fed4c4d34d06c439a7a422 (patch)
tree8718f573808810c2a1e8cb8fb6ac469093ca2784 /ANDROID_3.4.5/drivers/gpio/gpio-da9052.c
parent9d40ac5867b9aefe0722bc1f110b965ff294d30d (diff)
downloadFOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.gz
FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.bz2
FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.zip
Moved, renamed, and deleted files
The original directory structure was scattered and unorganized. Changes are basically to make it look like kernel structure.
Diffstat (limited to 'ANDROID_3.4.5/drivers/gpio/gpio-da9052.c')
-rw-r--r--ANDROID_3.4.5/drivers/gpio/gpio-da9052.c262
1 files changed, 0 insertions, 262 deletions
diff --git a/ANDROID_3.4.5/drivers/gpio/gpio-da9052.c b/ANDROID_3.4.5/drivers/gpio/gpio-da9052.c
deleted file mode 100644
index 56dd047d..00000000
--- a/ANDROID_3.4.5/drivers/gpio/gpio-da9052.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * GPIO Driver for Dialog DA9052 PMICs.
- *
- * Copyright(c) 2011 Dialog Semiconductor Ltd.
- *
- * Author: David Dajun Chen <dchen@diasemi.com>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- */
-#include <linux/module.h>
-#include <linux/fs.h>
-#include <linux/uaccess.h>
-#include <linux/platform_device.h>
-#include <linux/gpio.h>
-#include <linux/syscalls.h>
-#include <linux/seq_file.h>
-
-#include <linux/mfd/da9052/da9052.h>
-#include <linux/mfd/da9052/reg.h>
-#include <linux/mfd/da9052/pdata.h>
-
-#define DA9052_INPUT 1
-#define DA9052_OUTPUT_OPENDRAIN 2
-#define DA9052_OUTPUT_PUSHPULL 3
-
-#define DA9052_SUPPLY_VDD_IO1 0
-
-#define DA9052_DEBOUNCING_OFF 0
-#define DA9052_DEBOUNCING_ON 1
-
-#define DA9052_OUTPUT_LOWLEVEL 0
-
-#define DA9052_ACTIVE_LOW 0
-#define DA9052_ACTIVE_HIGH 1
-
-#define DA9052_GPIO_MAX_PORTS_PER_REGISTER 8
-#define DA9052_GPIO_SHIFT_COUNT(no) (no%8)
-#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;
- struct gpio_chip gp;
-};
-
-static inline struct da9052_gpio *to_da9052_gpio(struct gpio_chip *chip)
-{
- return container_of(chip, struct da9052_gpio, gp);
-}
-
-static unsigned char da9052_gpio_port_odd(unsigned offset)
-{
- return offset % 2;
-}
-
-static int da9052_gpio_get(struct gpio_chip *gc, unsigned offset)
-{
- struct da9052_gpio *gpio = to_da9052_gpio(gc);
- int da9052_port_direction = 0;
- int ret;
-
- ret = da9052_reg_read(gpio->da9052,
- DA9052_GPIO_0_1_REG + (offset >> 1));
- if (ret < 0)
- return ret;
-
- if (da9052_gpio_port_odd(offset)) {
- da9052_port_direction = ret & DA9052_GPIO_ODD_PORT_PIN;
- da9052_port_direction >>= 4;
- } else {
- da9052_port_direction = ret & DA9052_GPIO_EVEN_PORT_PIN;
- }
-
- switch (da9052_port_direction) {
- case DA9052_INPUT:
- if (offset < DA9052_GPIO_MAX_PORTS_PER_REGISTER)
- ret = da9052_reg_read(gpio->da9052,
- DA9052_STATUS_C_REG);
- else
- ret = da9052_reg_read(gpio->da9052,
- DA9052_STATUS_D_REG);
- if (ret < 0)
- return ret;
- if (ret & (1 << DA9052_GPIO_SHIFT_COUNT(offset)))
- return 1;
- else
- return 0;
- case DA9052_OUTPUT_PUSHPULL:
- if (da9052_gpio_port_odd(offset))
- return ret & DA9052_GPIO_ODD_PORT_MODE;
- else
- return ret & DA9052_GPIO_EVEN_PORT_MODE;
- default:
- return -EINVAL;
- }
-}
-
-static void da9052_gpio_set(struct gpio_chip *gc, unsigned offset, int value)
-{
- struct da9052_gpio *gpio = to_da9052_gpio(gc);
- int ret;
-
- if (da9052_gpio_port_odd(offset)) {
- ret = da9052_reg_update(gpio->da9052, (offset >> 1) +
- DA9052_GPIO_0_1_REG,
- DA9052_GPIO_ODD_PORT_MODE,
- value << DA9052_GPIO_ODD_SHIFT);
- if (ret != 0)
- dev_err(gpio->da9052->dev,
- "Failed to updated gpio odd reg,%d",
- ret);
- } else {
- ret = da9052_reg_update(gpio->da9052, (offset >> 1) +
- DA9052_GPIO_0_1_REG,
- DA9052_GPIO_EVEN_PORT_MODE,
- 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)
-{
- struct da9052_gpio *gpio = to_da9052_gpio(gc);
- unsigned char register_value;
- int ret;
-
- /* Format: function - 2 bits type - 1 bit mode - 1 bit */
- register_value = DA9052_INPUT | DA9052_ACTIVE_LOW << 2 |
- DA9052_DEBOUNCING_ON << 3;
-
- if (da9052_gpio_port_odd(offset))
- ret = da9052_reg_update(gpio->da9052, (offset >> 1) +
- DA9052_GPIO_0_1_REG,
- DA9052_GPIO_MASK_UPPER_NIBBLE,
- (register_value <<
- DA9052_GPIO_NIBBLE_SHIFT));
- else
- ret = da9052_reg_update(gpio->da9052, (offset >> 1) +
- DA9052_GPIO_0_1_REG,
- DA9052_GPIO_MASK_LOWER_NIBBLE,
- register_value);
-
- return ret;
-}
-
-static int da9052_gpio_direction_output(struct gpio_chip *gc,
- unsigned offset, int value)
-{
- struct da9052_gpio *gpio = to_da9052_gpio(gc);
- unsigned char register_value;
- int ret;
-
- /* Format: Function - 2 bits Type - 1 bit Mode - 1 bit */
- register_value = DA9052_OUTPUT_PUSHPULL | DA9052_SUPPLY_VDD_IO1 << 2 |
- value << 3;
-
- if (da9052_gpio_port_odd(offset))
- ret = da9052_reg_update(gpio->da9052, (offset >> 1) +
- DA9052_GPIO_0_1_REG,
- DA9052_GPIO_MASK_UPPER_NIBBLE,
- (register_value <<
- DA9052_GPIO_NIBBLE_SHIFT));
- else
- ret = da9052_reg_update(gpio->da9052, (offset >> 1) +
- DA9052_GPIO_0_1_REG,
- DA9052_GPIO_MASK_LOWER_NIBBLE,
- register_value);
-
- return ret;
-}
-
-static int da9052_gpio_to_irq(struct gpio_chip *gc, u32 offset)
-{
- struct da9052_gpio *gpio = to_da9052_gpio(gc);
- struct da9052 *da9052 = gpio->da9052;
-
- return da9052->irq_base + DA9052_IRQ_GPI0 + offset;
-}
-
-static struct gpio_chip reference_gp __devinitdata = {
- .label = "da9052-gpio",
- .owner = THIS_MODULE,
- .get = da9052_gpio_get,
- .set = da9052_gpio_set,
- .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,
-};
-
-static int __devinit da9052_gpio_probe(struct platform_device *pdev)
-{
- struct da9052_gpio *gpio;
- struct da9052_pdata *pdata;
- int ret;
-
- gpio = kzalloc(sizeof(*gpio), GFP_KERNEL);
- if (gpio == NULL)
- return -ENOMEM;
-
- gpio->da9052 = dev_get_drvdata(pdev->dev.parent);
- pdata = gpio->da9052->dev->platform_data;
-
- gpio->gp = reference_gp;
- if (pdata && pdata->gpio_base)
- gpio->gp.base = pdata->gpio_base;
-
- ret = gpiochip_add(&gpio->gp);
- if (ret < 0) {
- dev_err(&pdev->dev, "Could not register gpiochip, %d\n", ret);
- goto err_mem;
- }
-
- platform_set_drvdata(pdev, gpio);
-
- return 0;
-
-err_mem:
- kfree(gpio);
- return ret;
-}
-
-static int __devexit da9052_gpio_remove(struct platform_device *pdev)
-{
- struct da9052_gpio *gpio = platform_get_drvdata(pdev);
- int ret;
-
- ret = gpiochip_remove(&gpio->gp);
- if (ret == 0)
- kfree(gpio);
-
- return ret;
-}
-
-static struct platform_driver da9052_gpio_driver = {
- .probe = da9052_gpio_probe,
- .remove = __devexit_p(da9052_gpio_remove),
- .driver = {
- .name = "da9052-gpio",
- .owner = THIS_MODULE,
- },
-};
-
-module_platform_driver(da9052_gpio_driver);
-
-MODULE_AUTHOR("David Dajun Chen <dchen@diasemi.com>");
-MODULE_DESCRIPTION("DA9052 GPIO Device Driver");
-MODULE_LICENSE("GPL");
-MODULE_ALIAS("platform:da9052-gpio");