Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 372527
b: refs/heads/master
c: a373ed0
h: refs/heads/master
i:
  372525: 7281f20
  372523: 296d3fc
  372519: 00a81a6
  372511: 4927e08
v: v3
  • Loading branch information
Laurent Pinchart committed Mar 15, 2013
1 parent 109cd69 commit 4e0ae28
Show file tree
Hide file tree
Showing 21 changed files with 194 additions and 107 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 24d6b36e91b0503cd1c88b34fa793c0c65fa767d
refs/heads/master: a373ed0aa229f06e7d699797669b664ef39d97c1
21 changes: 13 additions & 8 deletions trunk/drivers/pinctrl/sh-pfc/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,14 @@ static int sh_pfc_enum_in_range(pinmux_enum_t enum_id, struct pinmux_range *r)
static bool sh_pfc_gpio_is_pin(struct sh_pfc *pfc, unsigned int gpio)
{
return (gpio < pfc->info->nr_pins) &&
(pfc->info->gpios[gpio].enum_id != 0);
(pfc->info->pins[gpio].enum_id != 0);
}

bool sh_pfc_gpio_is_function(struct sh_pfc *pfc, unsigned int gpio)
{
return (gpio >= pfc->info->nr_pins) && (gpio < pfc->info->nr_gpios) &&
(pfc->info->gpios[gpio].enum_id != 0);
return (gpio >= pfc->info->nr_pins) &&
(gpio < pfc->info->nr_pins + pfc->info->nr_func_gpios) &&
(pfc->info->func_gpios[gpio - pfc->info->nr_pins].enum_id != 0);
}

static unsigned long sh_pfc_read_raw_reg(void __iomem *mapped_reg,
Expand Down Expand Up @@ -234,7 +235,7 @@ static void sh_pfc_write_config_reg(struct sh_pfc *pfc,

static int sh_pfc_setup_data_reg(struct sh_pfc *pfc, unsigned gpio)
{
struct pinmux_gpio *gpiop = &pfc->info->gpios[gpio];
struct pinmux_pin *gpiop = &pfc->info->pins[gpio];
struct pinmux_data_reg *data_reg;
int k, n;

Expand Down Expand Up @@ -291,7 +292,7 @@ static void sh_pfc_setup_data_regs(struct sh_pfc *pfc)
int sh_pfc_get_data_reg(struct sh_pfc *pfc, unsigned gpio,
struct pinmux_data_reg **drp, int *bitp)
{
struct pinmux_gpio *gpiop = &pfc->info->gpios[gpio];
struct pinmux_pin *gpiop = &pfc->info->pins[gpio];
int k, n;

if (!sh_pfc_gpio_is_pin(pfc, gpio))
Expand Down Expand Up @@ -352,12 +353,16 @@ static int sh_pfc_get_config_reg(struct sh_pfc *pfc, pinmux_enum_t enum_id,
int sh_pfc_gpio_to_enum(struct sh_pfc *pfc, unsigned gpio, int pos,
pinmux_enum_t *enum_idp)
{
pinmux_enum_t enum_id = pfc->info->gpios[gpio].enum_id;
pinmux_enum_t *data = pfc->info->gpio_data;
pinmux_enum_t enum_id;
int k;

if (!sh_pfc_gpio_is_pin(pfc, gpio) &&
!sh_pfc_gpio_is_function(pfc, gpio)) {
if (sh_pfc_gpio_is_pin(pfc, gpio)) {
enum_id = pfc->info->pins[gpio].enum_id;
} else if (sh_pfc_gpio_is_function(pfc, gpio)) {
unsigned int offset = gpio - pfc->info->nr_pins;
enum_id = pfc->info->func_gpios[offset].enum_id;
} else {
pr_err("non data/mark enum_id for gpio %d\n", gpio);
return -1;
}
Expand Down
5 changes: 3 additions & 2 deletions trunk/drivers/pinctrl/sh-pfc/gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ static void sh_pfc_gpio_setup(struct sh_pfc_chip *chip)
gc->label = pfc->info->name;
gc->owner = THIS_MODULE;
gc->base = 0;
gc->ngpio = pfc->info->nr_gpios;
gc->ngpio = pfc->info->nr_pins + pfc->info->nr_func_gpios;
}

int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
Expand All @@ -206,7 +206,8 @@ int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
pfc->gpio = chip;

pr_info("%s handling gpio 0 -> %u\n",
pfc->info->name, pfc->info->nr_gpios - 1);
pfc->info->name,
pfc->info->nr_pins + pfc->info->nr_func_gpios - 1);

return 0;
}
Expand Down
15 changes: 9 additions & 6 deletions trunk/drivers/pinctrl/sh-pfc/pfc-r8a7740.c
Original file line number Diff line number Diff line change
Expand Up @@ -1654,11 +1654,13 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_DATA(TRACEAUD_FROM_MEMC_MARK, MSEL5CR_30_1, MSEL5CR_29_0),
};

static struct pinmux_gpio pinmux_gpios[] = {

/* PORT */
static struct pinmux_pin pinmux_pins[] = {
GPIO_PORT_ALL(),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
/* IRQ */
GPIO_FN(IRQ0_PORT2), GPIO_FN(IRQ0_PORT13),
GPIO_FN(IRQ1),
Expand Down Expand Up @@ -2592,9 +2594,10 @@ struct sh_pfc_soc_info r8a7740_pinmux_info = {
.function = { PINMUX_FUNCTION_BEGIN,
PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_PORT211 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
14 changes: 10 additions & 4 deletions trunk/drivers/pinctrl/sh-pfc/pfc-r8a7779.c
Original file line number Diff line number Diff line change
Expand Up @@ -1450,8 +1450,13 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_IPSR_MODSEL_DATA(IP12_17_15, SCK4_B, SEL_SCIF4_1),
};

static struct pinmux_gpio pinmux_gpios[] = {
static struct pinmux_pin pinmux_pins[] = {
PINMUX_GPIO_GP_ALL(),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
GPIO_FN(AVS1), GPIO_FN(AVS2), GPIO_FN(A17), GPIO_FN(A18),
GPIO_FN(A19),

Expand Down Expand Up @@ -2609,9 +2614,10 @@ struct sh_pfc_soc_info r8a7779_pinmux_info = {
.output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_GP_6_8 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
13 changes: 9 additions & 4 deletions trunk/drivers/pinctrl/sh-pfc/pfc-sh7203.c
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,7 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_DATA(SSCK0_PF_MARK, PF0MD_11),
};

static struct pinmux_gpio pinmux_gpios[] = {
static struct pinmux_pin pinmux_pins[] = {

/* PA */
PINMUX_GPIO(GPIO_PA7, PA7_DATA),
Expand Down Expand Up @@ -815,7 +815,11 @@ static struct pinmux_gpio pinmux_gpios[] = {
PINMUX_GPIO(GPIO_PF2, PF2_DATA),
PINMUX_GPIO(GPIO_PF1, PF1_DATA),
PINMUX_GPIO(GPIO_PF0, PF0_DATA),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
/* INTC */
GPIO_FN(PINT7_PB),
GPIO_FN(PINT6_PB),
Expand Down Expand Up @@ -1577,9 +1581,10 @@ struct sh_pfc_soc_info sh7203_pinmux_info = {
.output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END, FORCE_OUT },
.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_PF0 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
13 changes: 9 additions & 4 deletions trunk/drivers/pinctrl/sh-pfc/pfc-sh7264.c
Original file line number Diff line number Diff line change
Expand Up @@ -1072,7 +1072,7 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_DATA(SD_D2_MARK, PK0MD_10),
};

static struct pinmux_gpio pinmux_gpios[] = {
static struct pinmux_pin pinmux_pins[] = {

/* Port A */
PINMUX_GPIO(GPIO_PA3, PA3_DATA),
Expand Down Expand Up @@ -1216,7 +1216,11 @@ static struct pinmux_gpio pinmux_gpios[] = {
PINMUX_GPIO(GPIO_PK2, PK2_DATA),
PINMUX_GPIO(GPIO_PK1, PK1_DATA),
PINMUX_GPIO(GPIO_PK0, PK0_DATA),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
/* INTC */
GPIO_FN(PINT7_PG),
GPIO_FN(PINT6_PG),
Expand Down Expand Up @@ -2116,9 +2120,10 @@ struct sh_pfc_soc_info sh7264_pinmux_info = {
.output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END, FORCE_OUT },
.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_PK0 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
13 changes: 9 additions & 4 deletions trunk/drivers/pinctrl/sh-pfc/pfc-sh7269.c
Original file line number Diff line number Diff line change
Expand Up @@ -1452,7 +1452,7 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_DATA(PWM1A_MARK, PJ0MD_100),
};

static struct pinmux_gpio pinmux_gpios[] = {
static struct pinmux_pin pinmux_pins[] = {
/* Port A */
PINMUX_GPIO(GPIO_PA1, PA1_DATA),
PINMUX_GPIO(GPIO_PA0, PA0_DATA),
Expand Down Expand Up @@ -1613,7 +1613,11 @@ static struct pinmux_gpio pinmux_gpios[] = {
PINMUX_GPIO(GPIO_PJ2, PJ2_DATA),
PINMUX_GPIO(GPIO_PJ1, PJ1_DATA),
PINMUX_GPIO(GPIO_PJ0, PJ0_DATA),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
/* INTC */
GPIO_FN(IRQ7_PG),
GPIO_FN(IRQ6_PG),
Expand Down Expand Up @@ -2819,9 +2823,10 @@ struct sh_pfc_soc_info sh7269_pinmux_info = {
.output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END, FORCE_OUT },
.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_PJ0 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
15 changes: 9 additions & 6 deletions trunk/drivers/pinctrl/sh-pfc/pfc-sh7372.c
Original file line number Diff line number Diff line change
Expand Up @@ -929,11 +929,13 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_DATA(MFIv4_MARK, MSEL4CR_6_1),
};

static struct pinmux_gpio pinmux_gpios[] = {

/* PORT */
static struct pinmux_pin pinmux_pins[] = {
GPIO_PORT_ALL(),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
/* IRQ */
GPIO_FN(IRQ0_6), GPIO_FN(IRQ0_162), GPIO_FN(IRQ1),
GPIO_FN(IRQ2_4), GPIO_FN(IRQ2_5), GPIO_FN(IRQ3_8),
Expand Down Expand Up @@ -1640,9 +1642,10 @@ struct sh_pfc_soc_info sh7372_pinmux_info = {
.output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_PORT190 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
13 changes: 9 additions & 4 deletions trunk/drivers/pinctrl/sh-pfc/pfc-sh73a0.c
Original file line number Diff line number Diff line change
Expand Up @@ -1539,9 +1539,13 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_DATA(FSIAISLD_PU_MARK, PORT55_FN1, PORT55_IN_PU),
};

static struct pinmux_gpio pinmux_gpios[] = {
static struct pinmux_pin pinmux_pins[] = {
GPIO_PORT_ALL(),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
/* Table 25-1 (Functions 0-7) */
GPIO_FN(VBUS_0),
GPIO_FN(GPI0),
Expand Down Expand Up @@ -2776,9 +2780,10 @@ struct sh_pfc_soc_info sh73a0_pinmux_info = {
.output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_PORT309 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
13 changes: 9 additions & 4 deletions trunk/drivers/pinctrl/sh-pfc/pfc-sh7720.c
Original file line number Diff line number Diff line change
Expand Up @@ -606,7 +606,7 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_DATA(SIM_CLK_MARK, PSELD_1_0_10, PTV0_FN),
};

static struct pinmux_gpio pinmux_gpios[] = {
static struct pinmux_pin pinmux_pins[] = {
/* PTA */
PINMUX_GPIO(GPIO_PTA7, PTA7_DATA),
PINMUX_GPIO(GPIO_PTA6, PTA6_DATA),
Expand Down Expand Up @@ -759,7 +759,11 @@ static struct pinmux_gpio pinmux_gpios[] = {
PINMUX_GPIO(GPIO_PTV2, PTV2_DATA),
PINMUX_GPIO(GPIO_PTV1, PTV1_DATA),
PINMUX_GPIO(GPIO_PTV0, PTV0_DATA),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
/* BSC */
GPIO_FN(D31),
GPIO_FN(D30),
Expand Down Expand Up @@ -1220,9 +1224,10 @@ struct sh_pfc_soc_info sh7720_pinmux_info = {
.output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_PTV0 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
13 changes: 9 additions & 4 deletions trunk/drivers/pinctrl/sh-pfc/pfc-sh7722.c
Original file line number Diff line number Diff line change
Expand Up @@ -787,7 +787,7 @@ static pinmux_enum_t pinmux_data[] = {
PINMUX_DATA(KEYOUT5_IN5_MARK, HIZA14_KEYSC, KEYOUT5_IN5),
};

static struct pinmux_gpio pinmux_gpios[] = {
static struct pinmux_pin pinmux_pins[] = {
/* PTA */
PINMUX_GPIO(GPIO_PTA7, PTA7_DATA),
PINMUX_GPIO(GPIO_PTA6, PTA6_DATA),
Expand Down Expand Up @@ -982,7 +982,11 @@ static struct pinmux_gpio pinmux_gpios[] = {
PINMUX_GPIO(GPIO_PTZ3, PTZ3_DATA),
PINMUX_GPIO(GPIO_PTZ2, PTZ2_DATA),
PINMUX_GPIO(GPIO_PTZ1, PTZ1_DATA),
};

#define PINMUX_FN_BASE ARRAY_SIZE(pinmux_pins)

static struct pinmux_func pinmux_func_gpios[] = {
/* SCIF0 */
GPIO_FN(SCIF0_TXD),
GPIO_FN(SCIF0_RXD),
Expand Down Expand Up @@ -1764,9 +1768,10 @@ struct sh_pfc_soc_info sh7722_pinmux_info = {
.output = { PINMUX_OUTPUT_BEGIN, PINMUX_OUTPUT_END },
.function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },

.gpios = pinmux_gpios,
.nr_pins = GPIO_PTZ1 + 1,
.nr_gpios = ARRAY_SIZE(pinmux_gpios),
.pins = pinmux_pins,
.nr_pins = ARRAY_SIZE(pinmux_pins),
.func_gpios = pinmux_func_gpios,
.nr_func_gpios = ARRAY_SIZE(pinmux_func_gpios),

.cfg_regs = pinmux_config_regs,
.data_regs = pinmux_data_regs,
Expand Down
Loading

0 comments on commit 4e0ae28

Please sign in to comment.