Commit 4d01688f authored by Raag Jadav's avatar Raag Jadav Committed by Andy Shevchenko
Browse files

pinctrl: baytrail: reuse common functions from pinctrl-intel

parent 25018ace
Loading
Loading
Loading
Loading
+11 −79
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
@@ -551,25 +552,10 @@ static const struct intel_pinctrl_soc_data *byt_soc_data[] = {

static DEFINE_RAW_SPINLOCK(byt_lock);

static struct intel_community *byt_get_community(struct intel_pinctrl *vg,
						 unsigned int pin)
{
	struct intel_community *comm;
	int i;

	for (i = 0; i < vg->ncommunities; i++) {
		comm = vg->communities + i;
		if (pin < comm->pin_base + comm->npins && pin >= comm->pin_base)
			return comm;
	}

	return NULL;
}

static void __iomem *byt_gpio_reg(struct intel_pinctrl *vg, unsigned int offset,
				  int reg)
{
	struct intel_community *comm = byt_get_community(vg, offset);
	struct intel_community *comm = intel_get_community(vg, offset);
	u32 reg_offset;

	if (!comm)
@@ -591,68 +577,12 @@ static void __iomem *byt_gpio_reg(struct intel_pinctrl *vg, unsigned int offset,
	return comm->pad_regs + reg_offset + reg;
}

static int byt_get_groups_count(struct pinctrl_dev *pctldev)
{
	struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev);

	return vg->soc->ngroups;
}

static const char *byt_get_group_name(struct pinctrl_dev *pctldev,
				      unsigned int selector)
{
	struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev);

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

static int byt_get_group_pins(struct pinctrl_dev *pctldev,
			      unsigned int selector,
			      const unsigned int **pins,
			      unsigned int *num_pins)
{
	struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev);

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

	return 0;
}

static const struct pinctrl_ops byt_pinctrl_ops = {
	.get_groups_count	= byt_get_groups_count,
	.get_group_name		= byt_get_group_name,
	.get_group_pins		= byt_get_group_pins,
	.get_groups_count	= intel_get_groups_count,
	.get_group_name		= intel_get_group_name,
	.get_group_pins		= intel_get_group_pins,
};

static int byt_get_functions_count(struct pinctrl_dev *pctldev)
{
	struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev);

	return vg->soc->nfunctions;
}

static const char *byt_get_function_name(struct pinctrl_dev *pctldev,
					 unsigned int selector)
{
	struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev);

	return vg->soc->functions[selector].func.name;
}

static int byt_get_function_groups(struct pinctrl_dev *pctldev,
				   unsigned int selector,
				   const char * const **groups,
				   unsigned int *ngroups)
{
	struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev);

	*groups		= vg->soc->functions[selector].func.groups;
	*ngroups	= vg->soc->functions[selector].func.ngroups;

	return 0;
}

static void byt_set_group_simple_mux(struct intel_pinctrl *vg,
				     const struct intel_pingroup group,
				     unsigned int func)
@@ -851,9 +781,9 @@ static int byt_gpio_set_direction(struct pinctrl_dev *pctl_dev,
}

static const struct pinmux_ops byt_pinmux_ops = {
	.get_functions_count	= byt_get_functions_count,
	.get_function_name	= byt_get_function_name,
	.get_function_groups	= byt_get_function_groups,
	.get_functions_count	= intel_get_functions_count,
	.get_function_name	= intel_get_function_name,
	.get_function_groups	= intel_get_function_groups,
	.set_mux		= byt_set_mux,
	.gpio_request_enable	= byt_gpio_request_enable,
	.gpio_disable_free	= byt_gpio_disable_free,
@@ -1265,7 +1195,7 @@ static void byt_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)
		val = readl(val_reg);
		raw_spin_unlock_irqrestore(&byt_lock, flags);

		comm = byt_get_community(vg, pin);
		comm = intel_get_community(vg, pin);
		if (!comm) {
			seq_printf(s, "Pin %i: can't retrieve community\n", pin);
			continue;
@@ -1852,3 +1782,5 @@ static int __init byt_gpio_init(void)
	return platform_driver_register(&byt_gpio_driver);
}
subsys_initcall(byt_gpio_init);

MODULE_IMPORT_NS(PINCTRL_INTEL);