Skip to content

Commit

Permalink
pinctrl/abx500: beautify the ABX500 pin control driver
Browse files Browse the repository at this point in the history
This patch provides some superficial changes to the driver to
aid with readability and maintainability. We're mostly fixing
things like white-space errors, spreading out code which as
been clumped together impeding readability and comment layout,
such as using the new "/**" comment start for function headers
etc. No code semantics were harmed in the making of this patch.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
  • Loading branch information
Lee Jones authored and Linus Walleij committed Feb 5, 2013
1 parent 1abeebe commit 83b423c
Showing 1 changed file with 59 additions and 35 deletions.
94 changes: 59 additions & 35 deletions drivers/pinctrl/pinctrl-abx500.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ static inline struct abx500_pinctrl *to_abx500_pinctrl(struct gpio_chip *chip)
}

static int abx500_gpio_get_bit(struct gpio_chip *chip, u8 reg,
unsigned offset, bool *bit)
unsigned offset, bool *bit)
{
struct abx500_pinctrl *pct = to_abx500_pinctrl(chip);
u8 pos = offset % 8;
Expand All @@ -149,7 +149,7 @@ static int abx500_gpio_get_bit(struct gpio_chip *chip, u8 reg,
}

static int abx500_gpio_set_bits(struct gpio_chip *chip, u8 reg,
unsigned offset, int val)
unsigned offset, int val)
{
struct abx500_pinctrl *pct = to_abx500_pinctrl(chip);
u8 pos = offset % 8;
Expand All @@ -160,12 +160,14 @@ static int abx500_gpio_set_bits(struct gpio_chip *chip, u8 reg,
AB8500_MISC, reg, BIT(pos), val << pos);
if (ret < 0)
dev_err(pct->dev, "%s write failed\n", __func__);

return ret;
}

/**
* abx500_gpio_get() - Get the particular GPIO value
* @chip: Gpio device
* @offset: GPIO number to read
* @chip: Gpio device
* @offset: GPIO number to read
*/
static int abx500_gpio_get(struct gpio_chip *chip, unsigned offset)
{
Expand All @@ -179,6 +181,7 @@ static int abx500_gpio_get(struct gpio_chip *chip, unsigned offset)
dev_err(pct->dev, "%s failed\n", __func__);
return ret;
}

return bit;
}

Expand All @@ -193,7 +196,7 @@ static void abx500_gpio_set(struct gpio_chip *chip, unsigned offset, int val)
}

static int abx500_config_pull_updown(struct abx500_pinctrl *pct,
int offset, enum abx500_gpio_pull_updown val)
int offset, enum abx500_gpio_pull_updown val)
{
u8 pos;
int ret;
Expand Down Expand Up @@ -223,6 +226,7 @@ static int abx500_config_pull_updown(struct abx500_pinctrl *pct,
out:
if (ret < 0)
dev_err(pct->dev, "%s failed (%d)\n", __func__, ret);

return ret;
}

Expand All @@ -234,6 +238,7 @@ static int abx500_gpio_direction_output(struct gpio_chip *chip,
struct pullud *pullud = pct->soc->pullud;
unsigned gpio;
int ret;

/* set direction as output */
ret = abx500_gpio_set_bits(chip, AB8500_GPIO_DIR1_REG, offset, 1);
if (ret < 0)
Expand All @@ -253,6 +258,7 @@ static int abx500_gpio_direction_output(struct gpio_chip *chip,
if (ret < 0)
return ret;
}

/* set the output as 1 or 0 */
return abx500_gpio_set_bits(chip, AB8500_GPIO_OUT1_REG, offset, val);
}
Expand Down Expand Up @@ -284,13 +290,14 @@ static int abx500_gpio_to_irq(struct gpio_chip *chip, unsigned offset)
}

static int abx500_set_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,
unsigned gpio, int alt_setting)
unsigned gpio, int alt_setting)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);
struct alternate_functions af = pct->soc->alternate_functions[gpio];
int ret;
int val;
unsigned offset;

const char *modes[] = {
[ABX500_DEFAULT] = "default",
[ABX500_ALT_A] = "altA",
Expand All @@ -309,6 +316,7 @@ static int abx500_set_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,

/* on ABx5xx, there is no GPIO0, so adjust the offset */
offset = gpio - 1;

switch (alt_setting) {
case ABX500_DEFAULT:
/*
Expand All @@ -324,6 +332,7 @@ static int abx500_set_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,
ret = abx500_gpio_set_bits(chip, AB8500_GPIO_SEL1_REG,
offset, val);
break;

case ABX500_ALT_A:
/*
* for ABx5xx family, alt_a mode is always selected by
Expand All @@ -348,6 +357,7 @@ static int abx500_set_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,
ret = abx500_gpio_set_bits(chip, AB8500_GPIO_SEL1_REG,
offset, 1);
break;

case ABX500_ALT_B:
ret = abx500_gpio_set_bits(chip, AB8500_GPIO_SEL1_REG,
offset, 0);
Expand All @@ -359,6 +369,7 @@ static int abx500_set_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,
af.alt_bit2,
!!(af.altb_val && BIT(1)));
break;

case ABX500_ALT_C:
ret = abx500_gpio_set_bits(chip, AB8500_GPIO_SEL1_REG,
offset, 0);
Expand All @@ -370,13 +381,15 @@ static int abx500_set_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,

default:
dev_dbg(pct->dev, "unknow alt_setting %d\n", alt_setting);

return -EINVAL;
}

return ret;
}

static u8 abx500_get_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,
unsigned gpio)
unsigned gpio)
{
u8 mode;
bool bit_mode;
Expand Down Expand Up @@ -404,6 +417,7 @@ static u8 abx500_get_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,
"alt_bitX value not in correct range (-1 to 7)\n");
return -EINVAL;
}

/* if alt_bit2 is used, alt_bit1 must be used too */
if ((af.alt_bit2 != UNUSED) && (af.alt_bit1 == UNUSED)) {
dev_err(pct->dev,
Expand All @@ -420,6 +434,7 @@ static u8 abx500_get_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,
*/
if (mode)
return ABX500_DEFAULT;

/*
* pin use the AlternatFunction register
* read alt_bit1 value
Expand Down Expand Up @@ -448,15 +463,17 @@ static u8 abx500_get_mode(struct pinctrl_dev *pctldev, struct gpio_chip *chip,
#include <linux/seq_file.h>

static void abx500_gpio_dbg_show_one(struct seq_file *s,
struct pinctrl_dev *pctldev, struct gpio_chip *chip,
unsigned offset, unsigned gpio)
struct pinctrl_dev *pctldev,
struct gpio_chip *chip,
unsigned offset, unsigned gpio)
{
struct abx500_pinctrl *pct = to_abx500_pinctrl(chip);
const char *label = gpiochip_is_requested(chip, offset - 1);
u8 gpio_offset = offset - 1;
int mode = -1;
bool is_out;
bool pull;

const char *modes[] = {
[ABX500_DEFAULT] = "default",
[ABX500_ALT_A] = "altA",
Expand Down Expand Up @@ -516,9 +533,9 @@ static void abx500_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)

#else
static inline void abx500_gpio_dbg_show_one(struct seq_file *s,
struct pinctrl_dev *pctldev,
struct gpio_chip *chip,
unsigned offset, unsigned gpio)
struct pinctrl_dev *pctldev,
struct gpio_chip *chip,
unsigned offset, unsigned gpio)
{
}
#define abx500_gpio_dbg_show NULL
Expand Down Expand Up @@ -780,9 +797,9 @@ static const char *abx500_pmx_get_func_name(struct pinctrl_dev *pctldev,
}

static int abx500_pmx_get_func_groups(struct pinctrl_dev *pctldev,
unsigned function,
const char * const **groups,
unsigned * const num_groups)
unsigned function,
const char * const **groups,
unsigned * const num_groups)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);

Expand Down Expand Up @@ -830,7 +847,7 @@ static void abx500_disable_lazy_irq(struct gpio_chip *chip, unsigned gpio)
}

static int abx500_pmx_enable(struct pinctrl_dev *pctldev, unsigned function,
unsigned group)
unsigned group)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);
struct gpio_chip *chip = &pct->chip;
Expand All @@ -851,11 +868,12 @@ static int abx500_pmx_enable(struct pinctrl_dev *pctldev, unsigned function,
abx500_disable_lazy_irq(chip, g->pins[i]);
ret = abx500_set_mode(pctldev, chip, g->pins[i], g->altsetting);
}

return ret;
}

static void abx500_pmx_disable(struct pinctrl_dev *pctldev,
unsigned function, unsigned group)
unsigned function, unsigned group)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);
const struct abx500_pingroup *g;
Expand All @@ -869,8 +887,8 @@ static void abx500_pmx_disable(struct pinctrl_dev *pctldev,
}

int abx500_gpio_request_enable(struct pinctrl_dev *pctldev,
struct pinctrl_gpio_range *range,
unsigned offset)
struct pinctrl_gpio_range *range,
unsigned offset)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);
const struct abx500_pinrange *p;
Expand Down Expand Up @@ -908,8 +926,8 @@ int abx500_gpio_request_enable(struct pinctrl_dev *pctldev,
}

static void abx500_gpio_disable_free(struct pinctrl_dev *pctldev,
struct pinctrl_gpio_range *range,
unsigned offset)
struct pinctrl_gpio_range *range,
unsigned offset)
{
}

Expand All @@ -931,27 +949,28 @@ static int abx500_get_groups_cnt(struct pinctrl_dev *pctldev)
}

static const char *abx500_get_group_name(struct pinctrl_dev *pctldev,
unsigned selector)
unsigned selector)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);

return pct->soc->groups[selector].name;
}

static int abx500_get_group_pins(struct pinctrl_dev *pctldev,
unsigned selector,
const unsigned **pins,
unsigned *num_pins)
unsigned selector,
const unsigned **pins,
unsigned *num_pins)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);

*pins = pct->soc->groups[selector].pins;
*num_pins = pct->soc->groups[selector].npins;

return 0;
}

static void abx500_pin_dbg_show(struct pinctrl_dev *pctldev,
struct seq_file *s, unsigned offset)
struct seq_file *s, unsigned offset)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);
struct gpio_chip *chip = &pct->chip;
Expand All @@ -968,15 +987,15 @@ static struct pinctrl_ops abx500_pinctrl_ops = {
};

int abx500_pin_config_get(struct pinctrl_dev *pctldev,
unsigned pin,
unsigned long *config)
unsigned pin,
unsigned long *config)
{
return -ENOSYS;
}

int abx500_pin_config_set(struct pinctrl_dev *pctldev,
unsigned pin,
unsigned long config)
unsigned pin,
unsigned long config)
{
struct abx500_pinctrl *pct = pinctrl_dev_get_drvdata(pctldev);
struct pullud *pullud = pct->soc->pullud;
Expand All @@ -990,6 +1009,7 @@ int abx500_pin_config_set(struct pinctrl_dev *pctldev,
pin, config, (param == PIN_CONFIG_OUTPUT) ? "output " : "input",
(param == PIN_CONFIG_OUTPUT) ? (argument ? "high" : "low") :
(argument ? "pull up" : "pull down"));

/* on ABx500, there is no GPIO0, so adjust the offset */
offset = pin - 1;

Expand Down Expand Up @@ -1018,13 +1038,18 @@ int abx500_pin_config_set(struct pinctrl_dev *pctldev,
ret = abx500_gpio_set_bits(chip, AB8500_GPIO_PUD1_REG,
offset, argument ? 0 : 1);
break;

case PIN_CONFIG_OUTPUT:
ret = abx500_gpio_direction_output(chip, offset, argument);

break;

default:
dev_err(chip->dev, "illegal configuration requested\n");

return -EINVAL;
}

return ret;
}

Expand Down Expand Up @@ -1090,7 +1115,7 @@ static int abx500_gpio_probe(struct platform_device *pdev)
int i;

pdata = abx500_pdata->gpio;
if (!pdata) {
if (!pdata) {
dev_err(&pdev->dev, "gpio platform data missing\n");
return -ENODEV;
}
Expand Down Expand Up @@ -1150,8 +1175,7 @@ static int abx500_gpio_probe(struct platform_device *pdev)
goto out_free;
ret = gpiochip_add(&pct->chip);
if (ret) {
dev_err(&pdev->dev, "unable to add gpiochip: %d\n",
ret);
dev_err(&pdev->dev, "unable to add gpiochip: %d\n", ret);
goto out_rem_irq;
}
dev_info(&pdev->dev, "added gpiochip\n");
Expand Down Expand Up @@ -1193,9 +1217,9 @@ static int abx500_gpio_probe(struct platform_device *pdev)
return ret;
}

/*
/**
* abx500_gpio_remove() - remove Ab8500-gpio driver
* @pdev : Platform device registered
* @pdev: Platform device registered
*/
static int abx500_gpio_remove(struct platform_device *pdev)
{
Expand Down

0 comments on commit 83b423c

Please sign in to comment.