mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
pinctrl: add pinctrl&gpio support for axg
PD#142470: add pinctrl&gpio support for axg 1. meson8b keeps the same pin numbers as the gxl/gxm/axg 2. using base address of registers(Eg: mux gpio irq) instead of offset address in dts for gxl/gxm Change-Id: Ib64f9dc0e234884ec9ccab7673da5f2a3fdc1a98 Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com>
This commit is contained in:
@@ -9,6 +9,8 @@ Required properties for the root node:
|
||||
"amlogic,meson-gxbb-aobus-pinctrl"
|
||||
"amlogic,meson-gxl-periphs-pinctrl"
|
||||
"amlogic,meson-gxl-aobus-pinctrl"
|
||||
"amlogic,meson-axg-periphs-pinctrl"
|
||||
"amlogic,meson-axg-aobus-pinctrl"
|
||||
- reg: address and size of registers controlling irq functionality
|
||||
|
||||
=== GPIO sub-nodes ===
|
||||
|
||||
@@ -13890,3 +13890,8 @@ F: sound/soc/codecs/amlogic/Kconfig
|
||||
F: sound/soc/codecs/amlogic/Makefile
|
||||
F: sound/soc/codecs/amlogic/tas5707.c
|
||||
F: sound/soc/codecs/amlogic/tas5707.h
|
||||
|
||||
AMLOGIC PINCTRL SUPPORT FOR AXG
|
||||
M: Xingyu Chen <xingyu.chen@amlogic.com>
|
||||
F: drivers/amlogic/pinctrl/pinctrl-mesonaxg.c
|
||||
F: include/dt-bindings/gpio/mesonaxg-gpio.h
|
||||
|
||||
@@ -193,6 +193,59 @@
|
||||
sys_poweroff = <0x84000008>;
|
||||
};
|
||||
|
||||
pinctrl_aobus: pinctrl@ff800014{
|
||||
compatible = "amlogic,meson-axg-aobus-pinctrl";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
gpio_ao: ao-bank@ff800014{
|
||||
reg = <0x0 0xff800014 0x0 0x8>,
|
||||
<0x0 0xff80002c 0x0 0x4>,
|
||||
<0x0 0xff800024 0x0 0x8>,
|
||||
<0x0 0xff800084 0x0 0x4>;
|
||||
interrupts = <0 200 1>,
|
||||
<0 201 1>;
|
||||
reg-names = "mux", "pull", "gpio", "irq";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_periphs: pinctrl@ff634480{
|
||||
compatible = "amlogic,meson-axg-periphs-pinctrl";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
gpio: banks@ff634480{
|
||||
reg = <0x0 0xff634480 0x0 0x40>,
|
||||
<0x0 0xff6344e8 0x0 0x14>,
|
||||
<0x0 0xff634520 0x0 0x14>,
|
||||
<0x0 0xff634430 0x0 0x3c>,
|
||||
<0x0 0xffd0f080 0x0 0x10>;
|
||||
interrupts = <0 64 1>,
|
||||
<0 65 1>,
|
||||
<0 66 1>,
|
||||
<0 67 1>,
|
||||
<0 68 1>,
|
||||
<0 69 1>,
|
||||
<0 70 1>,
|
||||
<0 71 1>;
|
||||
reg-names = "mux",
|
||||
"pull",
|
||||
"pull-enable",
|
||||
"gpio",
|
||||
"irq";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
compatible = "simple-bus";
|
||||
#address-cells = <2>;
|
||||
@@ -225,12 +278,21 @@
|
||||
};
|
||||
};/* end of aobus */
|
||||
|
||||
hiubus: hiubus@ff600000 {
|
||||
periphs: periphs@ff634400 {
|
||||
compatible = "simple-bus";
|
||||
reg = <0x0 0xff600000 0x0 0x4c000>;
|
||||
reg = <0x0 0xff634400 0x0 0x1c00>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x0 0x0 0x0 0xff600000 0x0 0x4c000>;
|
||||
ranges = <0x0 0x0 0x0 0xff634400 0x0 0x1c00>;
|
||||
|
||||
};/* end of periphs */
|
||||
|
||||
hiubus: hiubus@ff63c000 {
|
||||
compatible = "simple-bus";
|
||||
reg = <0x0 0xff63c000 0x0 0x10000>;
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges = <0x0 0x0 0x0 0xff63c000 0x0 0x10000>;
|
||||
|
||||
clkc: clock-controller@0 {
|
||||
compatible = "amlogic,axg-clkc";
|
||||
@@ -238,9 +300,32 @@
|
||||
reg = <0x0 0x3c000 0x0 0x320>;
|
||||
};
|
||||
};/* end of hiubus*/
|
||||
|
||||
|
||||
}; /* end of soc*/
|
||||
|
||||
};/* end of / */
|
||||
|
||||
&pinctrl_aobus {
|
||||
remote_pins:remote_pin {
|
||||
mux {
|
||||
pins = "GPIOAO_6";
|
||||
function = "ir_in";
|
||||
};
|
||||
};
|
||||
}; /* end of pinctrl_aobus */
|
||||
|
||||
&pinctrl_periphs {
|
||||
a_i2c_master:a_i2c {
|
||||
mux {
|
||||
pins = "GPIOZ_6","GPIOZ_7";
|
||||
function = "i2c_a";
|
||||
};
|
||||
};
|
||||
|
||||
b_i2c_master:b_i2c {
|
||||
mux {
|
||||
pins = "GPIOZ_8","GPIOZ_9";
|
||||
function = "i2c_b";
|
||||
};
|
||||
|
||||
};
|
||||
}; /* end of pinctrl_periphs */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
#
|
||||
#Makefile for the gpio dirver
|
||||
#
|
||||
obj-$(CONFIG_AMLOGIC_PINCTRL) += pinctrl-meson.o pinctrl_gxl.o pinctrl-meson8b.o
|
||||
obj-$(CONFIG_AMLOGIC_PINCTRL) += pinctrl-meson.o pinctrl_gxl.o pinctrl-meson8b.o pinctrl-mesonaxg.o
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
#include "../../pinctrl/core.h"
|
||||
#include "../../pinctrl/pinctrl-utils.h"
|
||||
#include "pinctrl-meson.h"
|
||||
@@ -217,7 +218,7 @@ static void meson_pmx_disable_other_groups(struct meson_pinctrl *pc,
|
||||
}
|
||||
}
|
||||
|
||||
static int meson_pmx_set_mux(struct pinctrl_dev *pcdev,
|
||||
static int meson_pmx_v1_set_mux(struct pinctrl_dev *pcdev,
|
||||
unsigned int func_num, unsigned int group_num)
|
||||
{
|
||||
struct meson_pinctrl *pc = pinctrl_dev_get_drvdata(pcdev);
|
||||
@@ -282,14 +283,79 @@ static int meson_pmx_get_groups(struct pinctrl_dev *pcdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct pinmux_ops meson_pmx_ops = {
|
||||
.set_mux = meson_pmx_set_mux,
|
||||
static const struct pinmux_ops meson_pmx_v1_ops = {
|
||||
.set_mux = meson_pmx_v1_set_mux,
|
||||
.get_functions_count = meson_pmx_get_funcs_count,
|
||||
.get_function_name = meson_pmx_get_func_name,
|
||||
.get_function_groups = meson_pmx_get_groups,
|
||||
.gpio_request_enable = meson_pmx_request_gpio,
|
||||
};
|
||||
|
||||
static struct meson_desc_function *
|
||||
meson_pinctrl_desc_find_function_by_name(struct meson_pinctrl *pc,
|
||||
const char *pin_name,
|
||||
const char *func_name)
|
||||
{
|
||||
int i;
|
||||
const struct meson_desc_pin *pin;
|
||||
struct meson_desc_function *func;
|
||||
|
||||
for (i = 0; i < pc->data->num_pins; i++) {
|
||||
pin = pc->data->meson_pins + i;
|
||||
if (!strcmp(pin->pin.name, pin_name)) {
|
||||
func = pin->functions;
|
||||
while (func->name) {
|
||||
if (!strcmp(func->name, func_name))
|
||||
return func;
|
||||
|
||||
func++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int meson_pmx_v2_set_mux(struct pinctrl_dev *pcdev,
|
||||
unsigned int func_num, unsigned int group_num)
|
||||
{
|
||||
struct meson_pinctrl *pc = pinctrl_dev_get_drvdata(pcdev);
|
||||
struct meson_pmx_func *func = &pc->data->funcs[func_num];
|
||||
struct meson_pmx_group *group = &pc->data->groups[group_num];
|
||||
struct meson_domain *domain = pc->domain;
|
||||
struct meson_desc_function *desc;
|
||||
int ret = 0;
|
||||
|
||||
dev_dbg(pc->dev, "enable function %s, group %s\n", func->name,
|
||||
group->name);
|
||||
|
||||
desc = meson_pinctrl_desc_find_function_by_name(pc,
|
||||
group->name,
|
||||
func->name);
|
||||
if (!desc)
|
||||
return -EINVAL;
|
||||
|
||||
dev_dbg(pc->dev,
|
||||
"group->reg = 0x%x; group->bit = %d; desc->muxval = %d\n",
|
||||
group->reg, group->bit, desc->muxval);
|
||||
|
||||
/* Function 0 (GPIO) doesn't need any additional setting */
|
||||
if (func_num && (group->bit != 0xff)) {
|
||||
ret = regmap_update_bits(domain->reg_mux, group->reg * 4,
|
||||
MESON_MUX_V2_MASK(group->bit),
|
||||
MESON_MUX_V2_VAL(desc->muxval, group->bit));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct pinmux_ops meson_pmx_v2_ops = {
|
||||
.set_mux = meson_pmx_v2_set_mux,
|
||||
.get_functions_count = meson_pmx_get_funcs_count,
|
||||
.get_function_name = meson_pmx_get_func_name,
|
||||
.get_function_groups = meson_pmx_get_groups,
|
||||
};
|
||||
|
||||
static int meson_pinconf_set(struct pinctrl_dev *pcdev, unsigned int pin,
|
||||
unsigned long *configs, unsigned int num_configs)
|
||||
{
|
||||
@@ -679,11 +745,7 @@ static int meson_ee_gpio_irq_type(struct irq_data *irqd, unsigned int type)
|
||||
trigger_type[type_cnt] << cnt);
|
||||
|
||||
/*the gpio hwirq eqaul to gpio offset in gpio chip*/
|
||||
#ifdef CONFIG_ARM64
|
||||
pin = domain->data->pin_base + irqd->hwirq;
|
||||
#else /*for m8b platform*/
|
||||
pin = domain->data->pin_base + irqd->hwirq + 14;
|
||||
#endif
|
||||
|
||||
/*set pin select register*/
|
||||
start_bit = (cnt & 3) << 3;
|
||||
@@ -793,11 +855,8 @@ static int meson_ao_gpio_irq_type(struct irq_data *irqd, unsigned int type)
|
||||
trigger_type[type_cnt] << cnt);
|
||||
|
||||
/*the gpio hwirq eqaul to gpio offset in gpio chip*/
|
||||
#ifdef CONFIG_ARM64
|
||||
pin = domain->data->pin_base + irqd->hwirq;
|
||||
#else /*for m8b platform*/
|
||||
pin = irqd->hwirq;
|
||||
#endif
|
||||
|
||||
/*set pin select register*/
|
||||
start_bit = cnt << 2;
|
||||
regmap_update_bits(domain->reg_irq, 0,
|
||||
@@ -856,25 +915,41 @@ static struct irq_chip meson_ao_gpio_irq_chip = {
|
||||
};
|
||||
|
||||
struct meson_pinctrl_private meson_gxl_periphs = {
|
||||
.pinmux_type = PINMUX_V1,
|
||||
.pinctrl_data = &meson_gxl_periphs_pinctrl_data,
|
||||
.irq_chip = &meson_ee_gpio_irq_chip,
|
||||
};
|
||||
|
||||
struct meson_pinctrl_private meson_gxl_aobus = {
|
||||
.pinmux_type = PINMUX_V1,
|
||||
.pinctrl_data = &meson_gxl_aobus_pinctrl_data,
|
||||
.irq_chip = &meson_ao_gpio_irq_chip,
|
||||
};
|
||||
|
||||
struct meson_pinctrl_private meson_m8b_cbus = {
|
||||
.pinmux_type = PINMUX_V1,
|
||||
.pinctrl_data = &meson8b_cbus_pinctrl_data,
|
||||
.irq_chip = &meson_ee_gpio_irq_chip,
|
||||
};
|
||||
|
||||
struct meson_pinctrl_private meson_m8b_aobus = {
|
||||
.pinmux_type = PINMUX_V1,
|
||||
.pinctrl_data = &meson8b_aobus_pinctrl_data,
|
||||
.irq_chip = &meson_ao_gpio_irq_chip,
|
||||
};
|
||||
|
||||
struct meson_pinctrl_private meson_axg_periphs = {
|
||||
.pinmux_type = PINMUX_V2,
|
||||
.pinctrl_data = &meson_axg_periphs_pinctrl_data,
|
||||
.irq_chip = &meson_ee_gpio_irq_chip,
|
||||
};
|
||||
|
||||
struct meson_pinctrl_private meson_axg_aobus = {
|
||||
.pinmux_type = PINMUX_V2,
|
||||
.pinctrl_data = &meson_axg_aobus_pinctrl_data,
|
||||
.irq_chip = &meson_ao_gpio_irq_chip,
|
||||
};
|
||||
|
||||
static const struct of_device_id meson_pinctrl_dt_match[] = {
|
||||
{
|
||||
.compatible = "amlogic,meson-gxl-periphs-pinctrl",
|
||||
@@ -892,6 +967,14 @@ static const struct of_device_id meson_pinctrl_dt_match[] = {
|
||||
.compatible = "amlogic,meson8b-aobus-pinctrl",
|
||||
.data = &meson_m8b_aobus,
|
||||
},
|
||||
{
|
||||
.compatible = "amlogic,meson-axg-periphs-pinctrl",
|
||||
.data = &meson_axg_periphs,
|
||||
},
|
||||
{
|
||||
.compatible = "amlogic,meson-axg-aobus-pinctrl",
|
||||
.data = &meson_axg_aobus,
|
||||
},
|
||||
{ },
|
||||
};
|
||||
|
||||
@@ -972,33 +1055,6 @@ static struct regmap *meson_map_resource(struct meson_pinctrl *pc,
|
||||
return devm_regmap_init_mmio(pc->dev, base, &meson_regmap_config);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
static struct regmap *meson_irq_map_resource(struct meson_pinctrl *pc,
|
||||
struct device_node *node, char *name)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
struct resource *res;
|
||||
void __iomem *base;
|
||||
pdev = of_find_device_by_node(of_get_parent(node));
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
|
||||
if (IS_ERR(res)) {
|
||||
dev_err(&pdev->dev, "reg: cannot obtain I/O memory region");
|
||||
return ERR_CAST(res);
|
||||
}
|
||||
base = devm_ioremap_resource(pc->dev, res);
|
||||
if (IS_ERR(base))
|
||||
return ERR_CAST(base);
|
||||
|
||||
meson_regmap_config.max_register = resource_size(res) - 4;
|
||||
meson_regmap_config.name = devm_kasprintf(pc->dev, GFP_KERNEL,
|
||||
"%s-%s", node->name,
|
||||
name);
|
||||
if (!meson_regmap_config.name)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
return devm_regmap_init_mmio(pc->dev, base, &meson_regmap_config);
|
||||
}
|
||||
#endif
|
||||
static int meson_irq_parse_and_map(struct meson_pinctrl *pc,
|
||||
struct device_node *node)
|
||||
{
|
||||
@@ -1049,14 +1105,6 @@ static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc,
|
||||
domain = pc->domain;
|
||||
domain->data = pc->data->domain_data;
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
domain->reg_irq = meson_irq_map_resource(pc, node, "irq");
|
||||
if (IS_ERR(domain->reg_irq)) {
|
||||
dev_err(pc->dev, "gpio irq registers not found\n");
|
||||
return PTR_ERR(domain->reg_irq);
|
||||
}
|
||||
#endif
|
||||
|
||||
for_each_child_of_node(node, np) {
|
||||
if (!of_find_property(np, "gpio-controller", NULL))
|
||||
continue;
|
||||
@@ -1086,13 +1134,12 @@ static int meson_pinctrl_parse_dt(struct meson_pinctrl *pc,
|
||||
return PTR_ERR(domain->reg_gpio);
|
||||
}
|
||||
|
||||
#ifndef CONFIG_ARM64 /*for m8b platform*/
|
||||
domain->reg_irq = meson_map_resource(pc, np, "irq");
|
||||
if (IS_ERR(domain->reg_irq)) {
|
||||
dev_err(pc->dev, "gpio irq registers not found\n");
|
||||
return PTR_ERR(domain->reg_irq);
|
||||
}
|
||||
#endif
|
||||
|
||||
meson_irq_parse_and_map(pc, np);
|
||||
|
||||
break;
|
||||
@@ -1157,13 +1204,144 @@ static int meson_irq_setup(struct meson_pinctrl *pc, struct irq_chip *irq_chip)
|
||||
|
||||
}
|
||||
|
||||
static int meson_pinctrl_add_function(struct meson_pinctrl *pc,
|
||||
const char *name)
|
||||
{
|
||||
struct meson_pmx_func *func = pc->data->funcs;
|
||||
|
||||
while (func->name) {
|
||||
/* function already there */
|
||||
if (strcmp(func->name, name) == 0) {
|
||||
func->num_groups++;
|
||||
return -EEXIST;
|
||||
}
|
||||
func++;
|
||||
}
|
||||
|
||||
func->name = name;
|
||||
func->num_groups = 1;
|
||||
|
||||
pc->data->num_funcs++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct meson_pmx_func *
|
||||
meson_pinctrl_find_function_by_name(struct meson_pinctrl *pc,
|
||||
const char *name)
|
||||
{
|
||||
struct meson_pmx_func *func = pc->data->funcs;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < pc->data->num_funcs; i++) {
|
||||
if (!func[i].name)
|
||||
break;
|
||||
|
||||
if (!strcmp(func[i].name, name))
|
||||
return func + i;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int meson_pinctrl_build_state(struct meson_pinctrl *pc)
|
||||
{
|
||||
const struct meson_desc_pin *pin;
|
||||
struct meson_pmx_group *group;
|
||||
struct meson_desc_function *func;
|
||||
struct meson_pmx_func *funcs_tmp;
|
||||
struct meson_pmx_func *func_item;
|
||||
const char **func_grp;
|
||||
int i;
|
||||
|
||||
/* Allocate pin groups */
|
||||
pc->data->num_groups = pc->data->num_pins;
|
||||
pc->data->groups = devm_kzalloc(pc->dev,
|
||||
pc->data->num_groups * sizeof(*pc->data->groups),
|
||||
GFP_KERNEL);
|
||||
if (!pc->data->groups)
|
||||
return -ENOMEM;
|
||||
|
||||
for (i = 0; i < pc->data->num_pins; i++) {
|
||||
pin = pc->data->meson_pins + i;
|
||||
group = pc->data->groups + i;
|
||||
group->name = pin->pin.name;
|
||||
group->pins = &(pin->pin.number);
|
||||
/*per pin group only include one pin*/
|
||||
group->num_pins = 1;
|
||||
group->reg = pin->reg;
|
||||
group->bit = pin->bit;
|
||||
}
|
||||
|
||||
/*
|
||||
* We suppose that we won't have any more functions than pins,
|
||||
* we'll reallocate that later anyway
|
||||
*/
|
||||
pc->data->funcs = devm_kzalloc(pc->dev,
|
||||
pc->data->num_pins * sizeof(*pc->data->funcs),
|
||||
GFP_KERNEL);
|
||||
if (!pc->data->funcs)
|
||||
return -ENOMEM;
|
||||
|
||||
/* Count functions and their associated groups */
|
||||
for (i = 0; i < pc->data->num_pins; i++) {
|
||||
pin = pc->data->meson_pins + i;
|
||||
func = pin->functions;
|
||||
while (func->name) {
|
||||
meson_pinctrl_add_function(pc, func->name);
|
||||
func++;
|
||||
}
|
||||
}
|
||||
|
||||
funcs_tmp = krealloc(pc->data->funcs,
|
||||
pc->data->num_funcs * sizeof(*pc->data->funcs),
|
||||
GFP_KERNEL);
|
||||
if (!funcs_tmp)
|
||||
return -ENOMEM;
|
||||
|
||||
pc->data->funcs = funcs_tmp;
|
||||
|
||||
for (i = 0; i < pc->data->num_pins; i++) {
|
||||
pin = pc->data->meson_pins + i;
|
||||
func = pin->functions;
|
||||
|
||||
while (func->name) {
|
||||
func_item = meson_pinctrl_find_function_by_name(pc,
|
||||
func->name);
|
||||
if (!func_item)
|
||||
return -EINVAL;
|
||||
|
||||
if (!func_item->groups) {
|
||||
func_item->groups =
|
||||
devm_kzalloc(pc->dev,
|
||||
func_item->num_groups *
|
||||
sizeof(*func_item->groups),
|
||||
GFP_KERNEL);
|
||||
if (!func_item->groups)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
func_grp = (const char **)func_item->groups;
|
||||
while (*func_grp)
|
||||
func_grp++;
|
||||
|
||||
*func_grp = pin->pin.name;
|
||||
func++;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int meson_pinctrl_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct meson_pinctrl_private *priv;
|
||||
const struct of_device_id *match;
|
||||
struct pinctrl_pin_desc *pins;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct meson_pinctrl *pc;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
pc = devm_kzalloc(dev, sizeof(struct meson_pinctrl), GFP_KERNEL);
|
||||
if (!pc)
|
||||
@@ -1178,12 +1356,29 @@ static int meson_pinctrl_probe(struct platform_device *pdev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (priv->pinmux_type == PINMUX_V2) {
|
||||
ret = meson_pinctrl_build_state(pc);
|
||||
if (ret)
|
||||
dev_err(pc->dev, "can't register pinctrl device\n");
|
||||
|
||||
pins = devm_kzalloc(pc->dev, pc->data->num_pins * sizeof(*pins),
|
||||
GFP_KERNEL);
|
||||
if (!pins)
|
||||
return -ENOMEM;
|
||||
for (i = 0; i < pc->data->num_pins; i++)
|
||||
pins[i] = pc->data->meson_pins[i].pin;
|
||||
|
||||
pc->desc.pins = (const struct pinctrl_pin_desc *)pins;
|
||||
pc->desc.pmxops = &meson_pmx_v2_ops;
|
||||
} else {
|
||||
pc->desc.pmxops = &meson_pmx_v1_ops;
|
||||
pc->desc.pins = pc->data->pins;
|
||||
}
|
||||
|
||||
pc->desc.name = "pinctrl-meson";
|
||||
pc->desc.owner = THIS_MODULE;
|
||||
pc->desc.pctlops = &meson_pctrl_ops;
|
||||
pc->desc.pmxops = &meson_pmx_ops;
|
||||
pc->desc.confops = &meson_pinconf_ops;
|
||||
pc->desc.pins = pc->data->pins;
|
||||
pc->desc.npins = pc->data->num_pins;
|
||||
|
||||
pc->pcdev = pinctrl_register(&pc->desc, pc->dev, pc);
|
||||
|
||||
@@ -182,6 +182,7 @@ struct meson_pinctrl_data {
|
||||
const struct pinctrl_pin_desc *pins;
|
||||
struct meson_pmx_group *groups;
|
||||
struct meson_pmx_func *funcs;
|
||||
const struct meson_desc_pin *meson_pins;
|
||||
struct meson_domain_data *domain_data;
|
||||
unsigned int num_pins;
|
||||
unsigned int num_groups;
|
||||
@@ -189,6 +190,7 @@ struct meson_pinctrl_data {
|
||||
};
|
||||
|
||||
struct meson_pinctrl_private {
|
||||
unsigned char pinmux_type;
|
||||
struct meson_pinctrl_data *pinctrl_data;
|
||||
struct irq_chip *irq_chip;
|
||||
};
|
||||
@@ -201,7 +203,35 @@ struct meson_pinctrl {
|
||||
struct meson_domain *domain;
|
||||
};
|
||||
|
||||
struct meson_desc_function {
|
||||
const char *name;
|
||||
unsigned char muxval;
|
||||
};
|
||||
|
||||
struct meson_desc_pin {
|
||||
struct pinctrl_pin_desc pin;
|
||||
unsigned int reg;
|
||||
unsigned int bit;
|
||||
struct meson_desc_function *functions;
|
||||
};
|
||||
|
||||
/* enum PINMUX_TYPE - pinmux type
|
||||
*
|
||||
*@PINMUX_V1: use more bits that maybe from different registers to choose
|
||||
* function for per gpio
|
||||
*@PINMUX_V2: use continuous 4bit to choose function for per gpio
|
||||
*
|
||||
*/
|
||||
enum PINMUX_TYPE {
|
||||
PINMUX_V1 = 0,
|
||||
PINMUX_V2,
|
||||
PINMUX_MAX,
|
||||
};
|
||||
|
||||
#define PIN(x, b) (b + x)
|
||||
#define MESON_MUX_V2_MASK(x) (0xf << x)
|
||||
#define MESON_MUX_V2_VAL(y, x) ((y & 0xf) << x)
|
||||
#define MESON_PIN(x, b) PINCTRL_PIN(PIN(x, b), #x)
|
||||
|
||||
#define GROUP(grp, r, b) \
|
||||
{ \
|
||||
@@ -241,7 +271,20 @@ struct meson_pinctrl {
|
||||
}, \
|
||||
}
|
||||
|
||||
#define MESON_PIN(x, b) PINCTRL_PIN(PIN(x, b), #x)
|
||||
#define MESON_FUNCTION(_val, _name) \
|
||||
{ \
|
||||
.name = _name, \
|
||||
.muxval = _val, \
|
||||
}
|
||||
|
||||
#define MESON_PINCTRL_PIN(_pin, r, b, ...) \
|
||||
{ \
|
||||
.pin = _pin, \
|
||||
.reg = r, \
|
||||
.bit = b, \
|
||||
.functions = (struct meson_desc_function[]){ \
|
||||
__VA_ARGS__, { } }, \
|
||||
}
|
||||
|
||||
extern struct meson_pinctrl_data meson8_cbus_pinctrl_data;
|
||||
extern struct meson_pinctrl_data meson8_aobus_pinctrl_data;
|
||||
@@ -249,3 +292,5 @@ extern struct meson_pinctrl_data meson8b_cbus_pinctrl_data;
|
||||
extern struct meson_pinctrl_data meson8b_aobus_pinctrl_data;
|
||||
extern struct meson_pinctrl_data meson_gxl_periphs_pinctrl_data;
|
||||
extern struct meson_pinctrl_data meson_gxl_aobus_pinctrl_data;
|
||||
extern struct meson_pinctrl_data meson_axg_periphs_pinctrl_data;
|
||||
extern struct meson_pinctrl_data meson_axg_aobus_pinctrl_data;
|
||||
|
||||
@@ -18,401 +18,399 @@
|
||||
#include <dt-bindings/gpio/meson8b-gpio.h>
|
||||
#include "pinctrl-meson.h"
|
||||
|
||||
#define AO_OFF 115
|
||||
#define EE_OFF 14
|
||||
|
||||
static const struct pinctrl_pin_desc meson8b_cbus_pins[] = {
|
||||
MESON_PIN(GPIOX_0, 0),
|
||||
MESON_PIN(GPIOX_1, 0),
|
||||
MESON_PIN(GPIOX_2, 0),
|
||||
MESON_PIN(GPIOX_3, 0),
|
||||
MESON_PIN(GPIOX_4, 0),
|
||||
MESON_PIN(GPIOX_5, 0),
|
||||
MESON_PIN(GPIOX_6, 0),
|
||||
MESON_PIN(GPIOX_7, 0),
|
||||
MESON_PIN(GPIOX_8, 0),
|
||||
MESON_PIN(GPIOX_9, 0),
|
||||
MESON_PIN(GPIOX_10, 0),
|
||||
MESON_PIN(GPIOX_11, 0),
|
||||
MESON_PIN(GPIOX_16, 0),
|
||||
MESON_PIN(GPIOX_17, 0),
|
||||
MESON_PIN(GPIOX_18, 0),
|
||||
MESON_PIN(GPIOX_19, 0),
|
||||
MESON_PIN(GPIOX_20, 0),
|
||||
MESON_PIN(GPIOX_21, 0),
|
||||
MESON_PIN(GPIOX_0, EE_OFF),
|
||||
MESON_PIN(GPIOX_1, EE_OFF),
|
||||
MESON_PIN(GPIOX_2, EE_OFF),
|
||||
MESON_PIN(GPIOX_3, EE_OFF),
|
||||
MESON_PIN(GPIOX_4, EE_OFF),
|
||||
MESON_PIN(GPIOX_5, EE_OFF),
|
||||
MESON_PIN(GPIOX_6, EE_OFF),
|
||||
MESON_PIN(GPIOX_7, EE_OFF),
|
||||
MESON_PIN(GPIOX_8, EE_OFF),
|
||||
MESON_PIN(GPIOX_9, EE_OFF),
|
||||
MESON_PIN(GPIOX_10, EE_OFF),
|
||||
MESON_PIN(GPIOX_11, EE_OFF),
|
||||
MESON_PIN(GPIOX_16, EE_OFF),
|
||||
MESON_PIN(GPIOX_17, EE_OFF),
|
||||
MESON_PIN(GPIOX_18, EE_OFF),
|
||||
MESON_PIN(GPIOX_19, EE_OFF),
|
||||
MESON_PIN(GPIOX_20, EE_OFF),
|
||||
MESON_PIN(GPIOX_21, EE_OFF),
|
||||
|
||||
MESON_PIN(GPIOY_0, 0),
|
||||
MESON_PIN(GPIOY_1, 0),
|
||||
MESON_PIN(GPIOY_3, 0),
|
||||
MESON_PIN(GPIOY_6, 0),
|
||||
MESON_PIN(GPIOY_7, 0),
|
||||
MESON_PIN(GPIOY_8, 0),
|
||||
MESON_PIN(GPIOY_9, 0),
|
||||
MESON_PIN(GPIOY_10, 0),
|
||||
MESON_PIN(GPIOY_11, 0),
|
||||
MESON_PIN(GPIOY_12, 0),
|
||||
MESON_PIN(GPIOY_13, 0),
|
||||
MESON_PIN(GPIOY_14, 0),
|
||||
MESON_PIN(GPIOY_0, EE_OFF),
|
||||
MESON_PIN(GPIOY_1, EE_OFF),
|
||||
MESON_PIN(GPIOY_3, EE_OFF),
|
||||
MESON_PIN(GPIOY_6, EE_OFF),
|
||||
MESON_PIN(GPIOY_7, EE_OFF),
|
||||
MESON_PIN(GPIOY_8, EE_OFF),
|
||||
MESON_PIN(GPIOY_9, EE_OFF),
|
||||
MESON_PIN(GPIOY_10, EE_OFF),
|
||||
MESON_PIN(GPIOY_11, EE_OFF),
|
||||
MESON_PIN(GPIOY_12, EE_OFF),
|
||||
MESON_PIN(GPIOY_13, EE_OFF),
|
||||
MESON_PIN(GPIOY_14, EE_OFF),
|
||||
|
||||
MESON_PIN(GPIODV_9, 0),
|
||||
MESON_PIN(GPIODV_24, 0),
|
||||
MESON_PIN(GPIODV_25, 0),
|
||||
MESON_PIN(GPIODV_26, 0),
|
||||
MESON_PIN(GPIODV_27, 0),
|
||||
MESON_PIN(GPIODV_28, 0),
|
||||
MESON_PIN(GPIODV_29, 0),
|
||||
MESON_PIN(GPIODV_9, EE_OFF),
|
||||
MESON_PIN(GPIODV_24, EE_OFF),
|
||||
MESON_PIN(GPIODV_25, EE_OFF),
|
||||
MESON_PIN(GPIODV_26, EE_OFF),
|
||||
MESON_PIN(GPIODV_27, EE_OFF),
|
||||
MESON_PIN(GPIODV_28, EE_OFF),
|
||||
MESON_PIN(GPIODV_29, EE_OFF),
|
||||
|
||||
MESON_PIN(GPIOH_0, 0),
|
||||
MESON_PIN(GPIOH_1, 0),
|
||||
MESON_PIN(GPIOH_2, 0),
|
||||
MESON_PIN(GPIOH_3, 0),
|
||||
MESON_PIN(GPIOH_4, 0),
|
||||
MESON_PIN(GPIOH_5, 0),
|
||||
MESON_PIN(GPIOH_6, 0),
|
||||
MESON_PIN(GPIOH_7, 0),
|
||||
MESON_PIN(GPIOH_8, 0),
|
||||
MESON_PIN(GPIOH_9, 0),
|
||||
MESON_PIN(GPIOH_0, EE_OFF),
|
||||
MESON_PIN(GPIOH_1, EE_OFF),
|
||||
MESON_PIN(GPIOH_2, EE_OFF),
|
||||
MESON_PIN(GPIOH_3, EE_OFF),
|
||||
MESON_PIN(GPIOH_4, EE_OFF),
|
||||
MESON_PIN(GPIOH_5, EE_OFF),
|
||||
MESON_PIN(GPIOH_6, EE_OFF),
|
||||
MESON_PIN(GPIOH_7, EE_OFF),
|
||||
MESON_PIN(GPIOH_8, EE_OFF),
|
||||
MESON_PIN(GPIOH_9, EE_OFF),
|
||||
|
||||
MESON_PIN(CARD_0, 0),
|
||||
MESON_PIN(CARD_1, 0),
|
||||
MESON_PIN(CARD_2, 0),
|
||||
MESON_PIN(CARD_3, 0),
|
||||
MESON_PIN(CARD_4, 0),
|
||||
MESON_PIN(CARD_5, 0),
|
||||
MESON_PIN(CARD_6, 0),
|
||||
MESON_PIN(CARD_0, EE_OFF),
|
||||
MESON_PIN(CARD_1, EE_OFF),
|
||||
MESON_PIN(CARD_2, EE_OFF),
|
||||
MESON_PIN(CARD_3, EE_OFF),
|
||||
MESON_PIN(CARD_4, EE_OFF),
|
||||
MESON_PIN(CARD_5, EE_OFF),
|
||||
MESON_PIN(CARD_6, EE_OFF),
|
||||
|
||||
MESON_PIN(BOOT_0, 0),
|
||||
MESON_PIN(BOOT_1, 0),
|
||||
MESON_PIN(BOOT_2, 0),
|
||||
MESON_PIN(BOOT_3, 0),
|
||||
MESON_PIN(BOOT_4, 0),
|
||||
MESON_PIN(BOOT_5, 0),
|
||||
MESON_PIN(BOOT_6, 0),
|
||||
MESON_PIN(BOOT_7, 0),
|
||||
MESON_PIN(BOOT_8, 0),
|
||||
MESON_PIN(BOOT_9, 0),
|
||||
MESON_PIN(BOOT_10, 0),
|
||||
MESON_PIN(BOOT_11, 0),
|
||||
MESON_PIN(BOOT_12, 0),
|
||||
MESON_PIN(BOOT_13, 0),
|
||||
MESON_PIN(BOOT_14, 0),
|
||||
MESON_PIN(BOOT_15, 0),
|
||||
MESON_PIN(BOOT_16, 0),
|
||||
MESON_PIN(BOOT_17, 0),
|
||||
MESON_PIN(BOOT_18, 0),
|
||||
MESON_PIN(BOOT_0, EE_OFF),
|
||||
MESON_PIN(BOOT_1, EE_OFF),
|
||||
MESON_PIN(BOOT_2, EE_OFF),
|
||||
MESON_PIN(BOOT_3, EE_OFF),
|
||||
MESON_PIN(BOOT_4, EE_OFF),
|
||||
MESON_PIN(BOOT_5, EE_OFF),
|
||||
MESON_PIN(BOOT_6, EE_OFF),
|
||||
MESON_PIN(BOOT_7, EE_OFF),
|
||||
MESON_PIN(BOOT_8, EE_OFF),
|
||||
MESON_PIN(BOOT_9, EE_OFF),
|
||||
MESON_PIN(BOOT_10, EE_OFF),
|
||||
MESON_PIN(BOOT_11, EE_OFF),
|
||||
MESON_PIN(BOOT_12, EE_OFF),
|
||||
MESON_PIN(BOOT_13, EE_OFF),
|
||||
MESON_PIN(BOOT_14, EE_OFF),
|
||||
MESON_PIN(BOOT_15, EE_OFF),
|
||||
MESON_PIN(BOOT_16, EE_OFF),
|
||||
MESON_PIN(BOOT_17, EE_OFF),
|
||||
MESON_PIN(BOOT_18, EE_OFF),
|
||||
|
||||
MESON_PIN(DIF_0_P, 0),
|
||||
MESON_PIN(DIF_0_N, 0),
|
||||
MESON_PIN(DIF_1_P, 0),
|
||||
MESON_PIN(DIF_1_N, 0),
|
||||
MESON_PIN(DIF_2_P, 0),
|
||||
MESON_PIN(DIF_2_N, 0),
|
||||
MESON_PIN(DIF_3_P, 0),
|
||||
MESON_PIN(DIF_3_N, 0),
|
||||
MESON_PIN(DIF_4_P, 0),
|
||||
MESON_PIN(DIF_4_N, 0),
|
||||
MESON_PIN(DIF_0_P, EE_OFF),
|
||||
MESON_PIN(DIF_0_N, EE_OFF),
|
||||
MESON_PIN(DIF_1_P, EE_OFF),
|
||||
MESON_PIN(DIF_1_N, EE_OFF),
|
||||
MESON_PIN(DIF_2_P, EE_OFF),
|
||||
MESON_PIN(DIF_2_N, EE_OFF),
|
||||
MESON_PIN(DIF_3_P, EE_OFF),
|
||||
MESON_PIN(DIF_3_N, EE_OFF),
|
||||
MESON_PIN(DIF_4_P, EE_OFF),
|
||||
MESON_PIN(DIF_4_N, EE_OFF),
|
||||
};
|
||||
|
||||
static const struct pinctrl_pin_desc meson8b_aobus_pins[] = {
|
||||
MESON_PIN(GPIOAO_0, AO_OFF),
|
||||
MESON_PIN(GPIOAO_1, AO_OFF),
|
||||
MESON_PIN(GPIOAO_2, AO_OFF),
|
||||
MESON_PIN(GPIOAO_3, AO_OFF),
|
||||
MESON_PIN(GPIOAO_4, AO_OFF),
|
||||
MESON_PIN(GPIOAO_5, AO_OFF),
|
||||
MESON_PIN(GPIOAO_6, AO_OFF),
|
||||
MESON_PIN(GPIOAO_7, AO_OFF),
|
||||
MESON_PIN(GPIOAO_8, AO_OFF),
|
||||
MESON_PIN(GPIOAO_9, AO_OFF),
|
||||
MESON_PIN(GPIOAO_10, AO_OFF),
|
||||
MESON_PIN(GPIOAO_11, AO_OFF),
|
||||
MESON_PIN(GPIOAO_12, AO_OFF),
|
||||
MESON_PIN(GPIOAO_13, AO_OFF),
|
||||
MESON_PIN(GPIO_BSD_EN, AO_OFF),
|
||||
MESON_PIN(GPIO_TEST_N, AO_OFF),
|
||||
MESON_PIN(GPIOAO_0, 0),
|
||||
MESON_PIN(GPIOAO_1, 0),
|
||||
MESON_PIN(GPIOAO_2, 0),
|
||||
MESON_PIN(GPIOAO_3, 0),
|
||||
MESON_PIN(GPIOAO_4, 0),
|
||||
MESON_PIN(GPIOAO_5, 0),
|
||||
MESON_PIN(GPIOAO_6, 0),
|
||||
MESON_PIN(GPIOAO_7, 0),
|
||||
MESON_PIN(GPIOAO_8, 0),
|
||||
MESON_PIN(GPIOAO_9, 0),
|
||||
MESON_PIN(GPIOAO_10, 0),
|
||||
MESON_PIN(GPIOAO_11, 0),
|
||||
MESON_PIN(GPIOAO_12, 0),
|
||||
MESON_PIN(GPIOAO_13, 0),
|
||||
};
|
||||
|
||||
/* bank X */
|
||||
static const unsigned int sd_d0_a_pins[] = { PIN(GPIOX_0, 0) };
|
||||
static const unsigned int sd_d1_a_pins[] = { PIN(GPIOX_1, 0) };
|
||||
static const unsigned int sd_d2_a_pins[] = { PIN(GPIOX_2, 0) };
|
||||
static const unsigned int sd_d3_a_pins[] = { PIN(GPIOX_3, 0) };
|
||||
static const unsigned int sdxc_d0_0_a_pins[] = { PIN(GPIOX_4, 0) };
|
||||
static const unsigned int sdxc_d47_a_pins[] = { PIN(GPIOX_4, 0),
|
||||
PIN(GPIOX_5, 0), PIN(GPIOX_6, 0), PIN(GPIOX_7, 0) };
|
||||
static const unsigned int sdxc_d13_0_a_pins[] = { PIN(GPIOX_5, 0),
|
||||
PIN(GPIOX_6, 0), PIN(GPIOX_7, 0) };
|
||||
static const unsigned int sd_clk_a_pins[] = { PIN(GPIOX_8, 0) };
|
||||
static const unsigned int sd_cmd_a_pins[] = { PIN(GPIOX_9, 0) };
|
||||
static const unsigned int xtal_32k_out_pins[] = { PIN(GPIOX_10, 0) };
|
||||
static const unsigned int xtal_24m_out_pins[] = { PIN(GPIOX_11, 0) };
|
||||
static const unsigned int uart_tx_b0_pins[] = { PIN(GPIOX_16, 0) };
|
||||
static const unsigned int uart_rx_b0_pins[] = { PIN(GPIOX_17, 0) };
|
||||
static const unsigned int uart_cts_b0_pins[] = { PIN(GPIOX_18, 0) };
|
||||
static const unsigned int uart_rts_b0_pins[] = { PIN(GPIOX_19, 0) };
|
||||
static const unsigned int sd_d0_a_pins[] = { PIN(GPIOX_0, EE_OFF) };
|
||||
static const unsigned int sd_d1_a_pins[] = { PIN(GPIOX_1, EE_OFF) };
|
||||
static const unsigned int sd_d2_a_pins[] = { PIN(GPIOX_2, EE_OFF) };
|
||||
static const unsigned int sd_d3_a_pins[] = { PIN(GPIOX_3, EE_OFF) };
|
||||
static const unsigned int sdxc_d0_0_a_pins[] = { PIN(GPIOX_4, EE_OFF) };
|
||||
static const unsigned int sdxc_d47_a_pins[] = { PIN(GPIOX_4, EE_OFF),
|
||||
PIN(GPIOX_5, EE_OFF), PIN(GPIOX_6, EE_OFF), PIN(GPIOX_7, EE_OFF) };
|
||||
static const unsigned int sdxc_d13_0_a_pins[] = { PIN(GPIOX_5, EE_OFF),
|
||||
PIN(GPIOX_6, EE_OFF), PIN(GPIOX_7, EE_OFF) };
|
||||
static const unsigned int sd_clk_a_pins[] = { PIN(GPIOX_8, EE_OFF) };
|
||||
static const unsigned int sd_cmd_a_pins[] = { PIN(GPIOX_9, EE_OFF) };
|
||||
static const unsigned int xtal_32k_out_pins[] = { PIN(GPIOX_10, EE_OFF) };
|
||||
static const unsigned int xtal_24m_out_pins[] = { PIN(GPIOX_11, EE_OFF) };
|
||||
static const unsigned int uart_tx_b0_pins[] = { PIN(GPIOX_16, EE_OFF) };
|
||||
static const unsigned int uart_rx_b0_pins[] = { PIN(GPIOX_17, EE_OFF) };
|
||||
static const unsigned int uart_cts_b0_pins[] = { PIN(GPIOX_18, EE_OFF) };
|
||||
static const unsigned int uart_rts_b0_pins[] = { PIN(GPIOX_19, EE_OFF) };
|
||||
|
||||
static const unsigned int sdxc_d0_1_a_pins[] = { PIN(GPIOX_0, 0) };
|
||||
static const unsigned int sdxc_d13_1_a_pins[] = { PIN(GPIOX_1, 0),
|
||||
PIN(GPIOX_2, 0), PIN(GPIOX_3, 0) };
|
||||
static const unsigned int pcm_out_a_pins[] = { PIN(GPIOX_4, 0) };
|
||||
static const unsigned int pcm_in_a_pins[] = { PIN(GPIOX_5, 0) };
|
||||
static const unsigned int pcm_fs_a_pins[] = { PIN(GPIOX_6, 0) };
|
||||
static const unsigned int pcm_clk_a_pins[] = { PIN(GPIOX_7, 0) };
|
||||
static const unsigned int sdxc_clk_a_pins[] = { PIN(GPIOX_8, 0) };
|
||||
static const unsigned int sdxc_cmd_a_pins[] = { PIN(GPIOX_9, 0) };
|
||||
static const unsigned int pwm_vs_0_pins[] = { PIN(GPIOX_10, 0) };
|
||||
static const unsigned int pwm_e_pins[] = { PIN(GPIOX_10, 0) };
|
||||
static const unsigned int pwm_vs_1_pins[] = { PIN(GPIOX_11, 0) };
|
||||
static const unsigned int sdxc_d0_1_a_pins[] = { PIN(GPIOX_0, EE_OFF) };
|
||||
static const unsigned int sdxc_d13_1_a_pins[] = { PIN(GPIOX_1, EE_OFF),
|
||||
PIN(GPIOX_2, EE_OFF), PIN(GPIOX_3, EE_OFF) };
|
||||
static const unsigned int pcm_out_a_pins[] = { PIN(GPIOX_4, EE_OFF) };
|
||||
static const unsigned int pcm_in_a_pins[] = { PIN(GPIOX_5, EE_OFF) };
|
||||
static const unsigned int pcm_fs_a_pins[] = { PIN(GPIOX_6, EE_OFF) };
|
||||
static const unsigned int pcm_clk_a_pins[] = { PIN(GPIOX_7, EE_OFF) };
|
||||
static const unsigned int sdxc_clk_a_pins[] = { PIN(GPIOX_8, EE_OFF) };
|
||||
static const unsigned int sdxc_cmd_a_pins[] = { PIN(GPIOX_9, EE_OFF) };
|
||||
static const unsigned int pwm_vs_0_pins[] = { PIN(GPIOX_10, EE_OFF) };
|
||||
static const unsigned int pwm_e_pins[] = { PIN(GPIOX_10, EE_OFF) };
|
||||
static const unsigned int pwm_vs_1_pins[] = { PIN(GPIOX_11, EE_OFF) };
|
||||
|
||||
static const unsigned int uart_tx_a_pins[] = { PIN(GPIOX_4, 0) };
|
||||
static const unsigned int uart_rx_a_pins[] = { PIN(GPIOX_5, 0) };
|
||||
static const unsigned int uart_cts_a_pins[] = { PIN(GPIOX_6, 0) };
|
||||
static const unsigned int uart_rts_a_pins[] = { PIN(GPIOX_7, 0) };
|
||||
static const unsigned int uart_tx_b1_pins[] = { PIN(GPIOX_8, 0) };
|
||||
static const unsigned int uart_rx_b1_pins[] = { PIN(GPIOX_9, 0) };
|
||||
static const unsigned int uart_cts_b1_pins[] = { PIN(GPIOX_10, 0) };
|
||||
static const unsigned int uart_rts_b1_pins[] = { PIN(GPIOX_20, 0) };
|
||||
static const unsigned int uart_tx_a_pins[] = { PIN(GPIOX_4, EE_OFF) };
|
||||
static const unsigned int uart_rx_a_pins[] = { PIN(GPIOX_5, EE_OFF) };
|
||||
static const unsigned int uart_cts_a_pins[] = { PIN(GPIOX_6, EE_OFF) };
|
||||
static const unsigned int uart_rts_a_pins[] = { PIN(GPIOX_7, EE_OFF) };
|
||||
static const unsigned int uart_tx_b1_pins[] = { PIN(GPIOX_8, EE_OFF) };
|
||||
static const unsigned int uart_rx_b1_pins[] = { PIN(GPIOX_9, EE_OFF) };
|
||||
static const unsigned int uart_cts_b1_pins[] = { PIN(GPIOX_10, EE_OFF) };
|
||||
static const unsigned int uart_rts_b1_pins[] = { PIN(GPIOX_20, EE_OFF) };
|
||||
|
||||
static const unsigned int iso7816_0_clk_pins[] = { PIN(GPIOX_6, 0) };
|
||||
static const unsigned int iso7816_0_data_pins[] = { PIN(GPIOX_7, 0) };
|
||||
static const unsigned int spi_sclk_0_pins[] = { PIN(GPIOX_8, 0) };
|
||||
static const unsigned int spi_miso_0_pins[] = { PIN(GPIOX_9, 0) };
|
||||
static const unsigned int spi_mosi_0_pins[] = { PIN(GPIOX_10, 0) };
|
||||
static const unsigned int iso7816_det_pins[] = { PIN(GPIOX_16, 0) };
|
||||
static const unsigned int iso7816_reset_pins[] = { PIN(GPIOX_17, 0) };
|
||||
static const unsigned int iso7816_1_clk_pins[] = { PIN(GPIOX_18, 0) };
|
||||
static const unsigned int iso7816_1_data_pins[] = { PIN(GPIOX_19, 0) };
|
||||
static const unsigned int spi_ss0_0_pins[] = { PIN(GPIOX_20, 0) };
|
||||
static const unsigned int iso7816_0_clk_pins[] = { PIN(GPIOX_6, EE_OFF) };
|
||||
static const unsigned int iso7816_0_data_pins[] = { PIN(GPIOX_7, EE_OFF) };
|
||||
static const unsigned int spi_sclk_0_pins[] = { PIN(GPIOX_8, EE_OFF) };
|
||||
static const unsigned int spi_miso_0_pins[] = { PIN(GPIOX_9, EE_OFF) };
|
||||
static const unsigned int spi_mosi_0_pins[] = { PIN(GPIOX_10, EE_OFF) };
|
||||
static const unsigned int iso7816_det_pins[] = { PIN(GPIOX_16, EE_OFF) };
|
||||
static const unsigned int iso7816_reset_pins[] = { PIN(GPIOX_17, EE_OFF) };
|
||||
static const unsigned int iso7816_1_clk_pins[] = { PIN(GPIOX_18, EE_OFF) };
|
||||
static const unsigned int iso7816_1_data_pins[] = { PIN(GPIOX_19, EE_OFF) };
|
||||
static const unsigned int spi_ss0_0_pins[] = { PIN(GPIOX_20, EE_OFF) };
|
||||
|
||||
static const unsigned int tsin_clk_b_pins[] = { PIN(GPIOX_8, 0) };
|
||||
static const unsigned int tsin_sop_b_pins[] = { PIN(GPIOX_9, 0) };
|
||||
static const unsigned int tsin_d0_b_pins[] = { PIN(GPIOX_10, 0) };
|
||||
static const unsigned int pwm_b_pins[] = { PIN(GPIOX_11, 0) };
|
||||
static const unsigned int i2c_sda_d0_pins[] = { PIN(GPIOX_16, 0) };
|
||||
static const unsigned int i2c_sck_d0_pins[] = { PIN(GPIOX_17, 0) };
|
||||
static const unsigned int tsin_d_valid_b_pins[] = { PIN(GPIOX_20, 0) };
|
||||
static const unsigned int tsin_clk_b_pins[] = { PIN(GPIOX_8, EE_OFF) };
|
||||
static const unsigned int tsin_sop_b_pins[] = { PIN(GPIOX_9, EE_OFF) };
|
||||
static const unsigned int tsin_d0_b_pins[] = { PIN(GPIOX_10, EE_OFF) };
|
||||
static const unsigned int pwm_b_pins[] = { PIN(GPIOX_11, EE_OFF) };
|
||||
static const unsigned int i2c_sda_d0_pins[] = { PIN(GPIOX_16, EE_OFF) };
|
||||
static const unsigned int i2c_sck_d0_pins[] = { PIN(GPIOX_17, EE_OFF) };
|
||||
static const unsigned int tsin_d_valid_b_pins[] = { PIN(GPIOX_20, EE_OFF) };
|
||||
|
||||
/* bank Y */
|
||||
static const unsigned int tsin_d_valid_a_pins[] = { PIN(GPIOY_0, 0) };
|
||||
static const unsigned int tsin_sop_a_pins[] = { PIN(GPIOY_1, 0) };
|
||||
static const unsigned int tsin_d17_a_pins[] = { PIN(GPIOY_6, 0),
|
||||
PIN(GPIOY_7, 0), PIN(GPIOY_10, 0), PIN(GPIOY_11, 0),
|
||||
PIN(GPIOY_12, 0), PIN(GPIOY_13, 0), PIN(GPIOY_14, 0) };
|
||||
static const unsigned int tsin_clk_a_pins[] = { PIN(GPIOY_8, 0) };
|
||||
static const unsigned int tsin_d0_a_pins[] = { PIN(GPIOY_9, 0) };
|
||||
static const unsigned int tsin_d_valid_a_pins[] = { PIN(GPIOY_0, EE_OFF) };
|
||||
static const unsigned int tsin_sop_a_pins[] = { PIN(GPIOY_1, EE_OFF) };
|
||||
static const unsigned int tsin_d17_a_pins[] = { PIN(GPIOY_6, EE_OFF),
|
||||
PIN(GPIOY_7, EE_OFF), PIN(GPIOY_10, EE_OFF), PIN(GPIOY_11, EE_OFF),
|
||||
PIN(GPIOY_12, EE_OFF), PIN(GPIOY_13, EE_OFF), PIN(GPIOY_14, EE_OFF) };
|
||||
static const unsigned int tsin_clk_a_pins[] = { PIN(GPIOY_8, EE_OFF) };
|
||||
static const unsigned int tsin_d0_a_pins[] = { PIN(GPIOY_9, EE_OFF) };
|
||||
|
||||
static const unsigned int spdif_out_0_pins[] = { PIN(GPIOY_3, 0) };
|
||||
static const unsigned int spdif_out_0_pins[] = { PIN(GPIOY_3, EE_OFF) };
|
||||
|
||||
static const unsigned int xtal_24m_pins[] = { PIN(GPIOY_3, 0) };
|
||||
static const unsigned int iso7816_2_clk_pins[] = { PIN(GPIOY_13, 0) };
|
||||
static const unsigned int iso7816_2_data_pins[] = { PIN(GPIOY_14, 0) };
|
||||
static const unsigned int xtal_24m_pins[] = { PIN(GPIOY_3, EE_OFF) };
|
||||
static const unsigned int iso7816_2_clk_pins[] = { PIN(GPIOY_13, EE_OFF) };
|
||||
static const unsigned int iso7816_2_data_pins[] = { PIN(GPIOY_14, EE_OFF) };
|
||||
|
||||
/* bank DV */
|
||||
static const unsigned int pwm_d_pins[] = { PIN(GPIODV_28, 0) };
|
||||
static const unsigned int pwm_c0_pins[] = { PIN(GPIODV_29, 0) };
|
||||
static const unsigned int pwm_d_pins[] = { PIN(GPIODV_28, EE_OFF) };
|
||||
static const unsigned int pwm_c0_pins[] = { PIN(GPIODV_29, EE_OFF) };
|
||||
|
||||
static const unsigned int pwm_vs_2_pins[] = { PIN(GPIODV_9, 0) };
|
||||
static const unsigned int pwm_vs_3_pins[] = { PIN(GPIODV_28, 0) };
|
||||
static const unsigned int pwm_vs_4_pins[] = { PIN(GPIODV_29, 0) };
|
||||
static const unsigned int pwm_vs_2_pins[] = { PIN(GPIODV_9, EE_OFF) };
|
||||
static const unsigned int pwm_vs_3_pins[] = { PIN(GPIODV_28, EE_OFF) };
|
||||
static const unsigned int pwm_vs_4_pins[] = { PIN(GPIODV_29, EE_OFF) };
|
||||
|
||||
static const unsigned int xtal24_out_pins[] = { PIN(GPIODV_29, 0) };
|
||||
static const unsigned int xtal24_out_pins[] = { PIN(GPIODV_29, EE_OFF) };
|
||||
|
||||
static const unsigned int uart_tx_c_pins[] = { PIN(GPIODV_24, 0) };
|
||||
static const unsigned int uart_rx_c_pins[] = { PIN(GPIODV_25, 0) };
|
||||
static const unsigned int uart_cts_c_pins[] = { PIN(GPIODV_26, 0) };
|
||||
static const unsigned int uart_rts_c_pins[] = { PIN(GPIODV_27, 0) };
|
||||
static const unsigned int uart_tx_c_pins[] = { PIN(GPIODV_24, EE_OFF) };
|
||||
static const unsigned int uart_rx_c_pins[] = { PIN(GPIODV_25, EE_OFF) };
|
||||
static const unsigned int uart_cts_c_pins[] = { PIN(GPIODV_26, EE_OFF) };
|
||||
static const unsigned int uart_rts_c_pins[] = { PIN(GPIODV_27, EE_OFF) };
|
||||
|
||||
static const unsigned int pwm_c1_pins[] = { PIN(GPIODV_9, 0) };
|
||||
static const unsigned int pwm_c1_pins[] = { PIN(GPIODV_9, EE_OFF) };
|
||||
|
||||
static const unsigned int i2c_sda_a_pins[] = { PIN(GPIODV_24, 0) };
|
||||
static const unsigned int i2c_sck_a_pins[] = { PIN(GPIODV_25, 0) };
|
||||
static const unsigned int i2c_sda_b0_pins[] = { PIN(GPIODV_26, 0) };
|
||||
static const unsigned int i2c_sck_b0_pins[] = { PIN(GPIODV_27, 0) };
|
||||
static const unsigned int i2c_sda_c0_pins[] = { PIN(GPIODV_28, 0) };
|
||||
static const unsigned int i2c_sck_c0_pins[] = { PIN(GPIODV_29, 0) };
|
||||
static const unsigned int i2c_sda_a_pins[] = { PIN(GPIODV_24, EE_OFF) };
|
||||
static const unsigned int i2c_sck_a_pins[] = { PIN(GPIODV_25, EE_OFF) };
|
||||
static const unsigned int i2c_sda_b0_pins[] = { PIN(GPIODV_26, EE_OFF) };
|
||||
static const unsigned int i2c_sck_b0_pins[] = { PIN(GPIODV_27, EE_OFF) };
|
||||
static const unsigned int i2c_sda_c0_pins[] = { PIN(GPIODV_28, EE_OFF) };
|
||||
static const unsigned int i2c_sck_c0_pins[] = { PIN(GPIODV_29, EE_OFF) };
|
||||
|
||||
/* bank H */
|
||||
static const unsigned int hdmi_hpd_pins[] = { PIN(GPIOH_0, 0) };
|
||||
static const unsigned int hdmi_sda_pins[] = { PIN(GPIOH_1, 0) };
|
||||
static const unsigned int hdmi_scl_pins[] = { PIN(GPIOH_2, 0) };
|
||||
static const unsigned int hdmi_cec_0_pins[] = { PIN(GPIOH_3, 0) };
|
||||
static const unsigned int eth_txd1_0_pins[] = { PIN(GPIOH_5, 0) };
|
||||
static const unsigned int eth_txd0_0_pins[] = { PIN(GPIOH_6, 0) };
|
||||
static const unsigned int clk_24m_out_pins[] = { PIN(GPIOH_9, 0) };
|
||||
static const unsigned int hdmi_hpd_pins[] = { PIN(GPIOH_0, EE_OFF) };
|
||||
static const unsigned int hdmi_sda_pins[] = { PIN(GPIOH_1, EE_OFF) };
|
||||
static const unsigned int hdmi_scl_pins[] = { PIN(GPIOH_2, EE_OFF) };
|
||||
static const unsigned int hdmi_cec_0_pins[] = { PIN(GPIOH_3, EE_OFF) };
|
||||
static const unsigned int eth_txd1_0_pins[] = { PIN(GPIOH_5, EE_OFF) };
|
||||
static const unsigned int eth_txd0_0_pins[] = { PIN(GPIOH_6, EE_OFF) };
|
||||
static const unsigned int clk_24m_out_pins[] = { PIN(GPIOH_9, EE_OFF) };
|
||||
|
||||
static const unsigned int spi_ss1_pins[] = { PIN(GPIOH_0, 0) };
|
||||
static const unsigned int spi_ss2_pins[] = { PIN(GPIOH_1, 0) };
|
||||
static const unsigned int spi_ss0_1_pins[] = { PIN(GPIOH_3, 0) };
|
||||
static const unsigned int spi_miso_1_pins[] = { PIN(GPIOH_4, 0) };
|
||||
static const unsigned int spi_mosi_1_pins[] = { PIN(GPIOH_5, 0) };
|
||||
static const unsigned int spi_sclk_1_pins[] = { PIN(GPIOH_6, 0) };
|
||||
static const unsigned int spi_ss1_pins[] = { PIN(GPIOH_0, EE_OFF) };
|
||||
static const unsigned int spi_ss2_pins[] = { PIN(GPIOH_1, EE_OFF) };
|
||||
static const unsigned int spi_ss0_1_pins[] = { PIN(GPIOH_3, EE_OFF) };
|
||||
static const unsigned int spi_miso_1_pins[] = { PIN(GPIOH_4, EE_OFF) };
|
||||
static const unsigned int spi_mosi_1_pins[] = { PIN(GPIOH_5, EE_OFF) };
|
||||
static const unsigned int spi_sclk_1_pins[] = { PIN(GPIOH_6, EE_OFF) };
|
||||
|
||||
static const unsigned int eth_txd3_pins[] = { PIN(GPIOH_7, 0) };
|
||||
static const unsigned int eth_txd2_pins[] = { PIN(GPIOH_8, 0) };
|
||||
static const unsigned int eth_tx_clk_pins[] = { PIN(GPIOH_9, 0) };
|
||||
static const unsigned int eth_txd3_pins[] = { PIN(GPIOH_7, EE_OFF) };
|
||||
static const unsigned int eth_txd2_pins[] = { PIN(GPIOH_8, EE_OFF) };
|
||||
static const unsigned int eth_tx_clk_pins[] = { PIN(GPIOH_9, EE_OFF) };
|
||||
|
||||
static const unsigned int i2c_sda_b1_pins[] = { PIN(GPIOH_3, 0) };
|
||||
static const unsigned int i2c_sck_b1_pins[] = { PIN(GPIOH_4, 0) };
|
||||
static const unsigned int i2c_sda_c1_pins[] = { PIN(GPIOH_5, 0) };
|
||||
static const unsigned int i2c_sck_c1_pins[] = { PIN(GPIOH_6, 0) };
|
||||
static const unsigned int i2c_sda_d1_pins[] = { PIN(GPIOH_7, 0) };
|
||||
static const unsigned int i2c_sck_d1_pins[] = { PIN(GPIOH_8, 0) };
|
||||
static const unsigned int i2c_sda_b1_pins[] = { PIN(GPIOH_3, EE_OFF) };
|
||||
static const unsigned int i2c_sck_b1_pins[] = { PIN(GPIOH_4, EE_OFF) };
|
||||
static const unsigned int i2c_sda_c1_pins[] = { PIN(GPIOH_5, EE_OFF) };
|
||||
static const unsigned int i2c_sck_c1_pins[] = { PIN(GPIOH_6, EE_OFF) };
|
||||
static const unsigned int i2c_sda_d1_pins[] = { PIN(GPIOH_7, EE_OFF) };
|
||||
static const unsigned int i2c_sck_d1_pins[] = { PIN(GPIOH_8, EE_OFF) };
|
||||
|
||||
/* bank BOOT */
|
||||
static const unsigned int nand_io_pins[] = { PIN(BOOT_0, 0),
|
||||
PIN(BOOT_1, 0), PIN(BOOT_2, 0), PIN(BOOT_3, 0),
|
||||
PIN(BOOT_4, 0), PIN(BOOT_5, 0), PIN(BOOT_6, 0),
|
||||
PIN(BOOT_7, 0) };
|
||||
static const unsigned int nand_io_ce0_pins[] = { PIN(BOOT_8, 0) };
|
||||
static const unsigned int nand_io_ce1_pins[] = { PIN(BOOT_9, 0) };
|
||||
static const unsigned int nand_io_rb0_pins[] = { PIN(BOOT_10, 0) };
|
||||
static const unsigned int nand_ale_pins[] = { PIN(BOOT_11, 0) };
|
||||
static const unsigned int nand_cle_pins[] = { PIN(BOOT_12, 0) };
|
||||
static const unsigned int nand_wen_clk_pins[] = { PIN(BOOT_13, 0) };
|
||||
static const unsigned int nand_ren_clk_pins[] = { PIN(BOOT_14, 0) };
|
||||
static const unsigned int nand_dqs_0_pins[] = { PIN(BOOT_15, 0) };
|
||||
static const unsigned int nand_dqs_1_pins[] = { PIN(BOOT_18, 0) };
|
||||
static const unsigned int nand_io_pins[] = { PIN(BOOT_0, EE_OFF),
|
||||
PIN(BOOT_1, EE_OFF), PIN(BOOT_2, EE_OFF), PIN(BOOT_3, EE_OFF),
|
||||
PIN(BOOT_4, EE_OFF), PIN(BOOT_5, EE_OFF), PIN(BOOT_6, EE_OFF),
|
||||
PIN(BOOT_7, EE_OFF) };
|
||||
static const unsigned int nand_io_ce0_pins[] = { PIN(BOOT_8, EE_OFF) };
|
||||
static const unsigned int nand_io_ce1_pins[] = { PIN(BOOT_9, EE_OFF) };
|
||||
static const unsigned int nand_io_rb0_pins[] = { PIN(BOOT_10, EE_OFF) };
|
||||
static const unsigned int nand_ale_pins[] = { PIN(BOOT_11, EE_OFF) };
|
||||
static const unsigned int nand_cle_pins[] = { PIN(BOOT_12, EE_OFF) };
|
||||
static const unsigned int nand_wen_clk_pins[] = { PIN(BOOT_13, EE_OFF) };
|
||||
static const unsigned int nand_ren_clk_pins[] = { PIN(BOOT_14, EE_OFF) };
|
||||
static const unsigned int nand_dqs_0_pins[] = { PIN(BOOT_15, EE_OFF) };
|
||||
static const unsigned int nand_dqs_1_pins[] = { PIN(BOOT_18, EE_OFF) };
|
||||
|
||||
static const unsigned int sdxc_d0_c_pins[] = { PIN(BOOT_0, 0)};
|
||||
static const unsigned int sdxc_d13_c_pins[] = { PIN(BOOT_1, 0),
|
||||
PIN(BOOT_2, 0), PIN(BOOT_3, 0) };
|
||||
static const unsigned int sdxc_d47_c_pins[] = { PIN(BOOT_4, 0),
|
||||
PIN(BOOT_5, 0), PIN(BOOT_6, 0), PIN(BOOT_7, 0) };
|
||||
static const unsigned int sdxc_clk_c_pins[] = { PIN(BOOT_8, 0) };
|
||||
static const unsigned int sdxc_cmd_c_pins[] = { PIN(BOOT_10, 0) };
|
||||
static const unsigned int nor_d_pins[] = { PIN(BOOT_11, 0) };
|
||||
static const unsigned int nor_q_pins[] = { PIN(BOOT_12, 0) };
|
||||
static const unsigned int nor_c_pins[] = { PIN(BOOT_13, 0) };
|
||||
static const unsigned int nor_cs_pins[] = { PIN(BOOT_18, 0) };
|
||||
static const unsigned int sdxc_d0_c_pins[] = { PIN(BOOT_0, EE_OFF)};
|
||||
static const unsigned int sdxc_d13_c_pins[] = { PIN(BOOT_1, EE_OFF),
|
||||
PIN(BOOT_2, EE_OFF), PIN(BOOT_3, EE_OFF) };
|
||||
static const unsigned int sdxc_d47_c_pins[] = { PIN(BOOT_4, EE_OFF),
|
||||
PIN(BOOT_5, EE_OFF), PIN(BOOT_6, EE_OFF), PIN(BOOT_7, EE_OFF) };
|
||||
static const unsigned int sdxc_clk_c_pins[] = { PIN(BOOT_8, EE_OFF) };
|
||||
static const unsigned int sdxc_cmd_c_pins[] = { PIN(BOOT_10, EE_OFF) };
|
||||
static const unsigned int nor_d_pins[] = { PIN(BOOT_11, EE_OFF) };
|
||||
static const unsigned int nor_q_pins[] = { PIN(BOOT_12, EE_OFF) };
|
||||
static const unsigned int nor_c_pins[] = { PIN(BOOT_13, EE_OFF) };
|
||||
static const unsigned int nor_cs_pins[] = { PIN(BOOT_18, EE_OFF) };
|
||||
|
||||
static const unsigned int sd_d0_c_pins[] = { PIN(BOOT_0, 0) };
|
||||
static const unsigned int sd_d1_c_pins[] = { PIN(BOOT_1, 0) };
|
||||
static const unsigned int sd_d2_c_pins[] = { PIN(BOOT_2, 0) };
|
||||
static const unsigned int sd_d3_c_pins[] = { PIN(BOOT_3, 0) };
|
||||
static const unsigned int sd_cmd_c_pins[] = { PIN(BOOT_8, 0) };
|
||||
static const unsigned int sd_clk_c_pins[] = { PIN(BOOT_10, 0) };
|
||||
static const unsigned int sd_d0_c_pins[] = { PIN(BOOT_0, EE_OFF) };
|
||||
static const unsigned int sd_d1_c_pins[] = { PIN(BOOT_1, EE_OFF) };
|
||||
static const unsigned int sd_d2_c_pins[] = { PIN(BOOT_2, EE_OFF) };
|
||||
static const unsigned int sd_d3_c_pins[] = { PIN(BOOT_3, EE_OFF) };
|
||||
static const unsigned int sd_cmd_c_pins[] = { PIN(BOOT_8, EE_OFF) };
|
||||
static const unsigned int sd_clk_c_pins[] = { PIN(BOOT_10, EE_OFF) };
|
||||
|
||||
/* bank CARD */
|
||||
static const unsigned int sd_d1_b_pins[] = { PIN(CARD_0, 0) };
|
||||
static const unsigned int sd_d0_b_pins[] = { PIN(CARD_1, 0) };
|
||||
static const unsigned int sd_clk_b_pins[] = { PIN(CARD_2, 0) };
|
||||
static const unsigned int sd_cmd_b_pins[] = { PIN(CARD_3, 0) };
|
||||
static const unsigned int sd_d3_b_pins[] = { PIN(CARD_4, 0) };
|
||||
static const unsigned int sd_d2_b_pins[] = { PIN(CARD_5, 0) };
|
||||
static const unsigned int sd_d1_b_pins[] = { PIN(CARD_0, EE_OFF) };
|
||||
static const unsigned int sd_d0_b_pins[] = { PIN(CARD_1, EE_OFF) };
|
||||
static const unsigned int sd_clk_b_pins[] = { PIN(CARD_2, EE_OFF) };
|
||||
static const unsigned int sd_cmd_b_pins[] = { PIN(CARD_3, EE_OFF) };
|
||||
static const unsigned int sd_d3_b_pins[] = { PIN(CARD_4, EE_OFF) };
|
||||
static const unsigned int sd_d2_b_pins[] = { PIN(CARD_5, EE_OFF) };
|
||||
|
||||
static const unsigned int sdxc_d13_b_pins[] = { PIN(CARD_0, 0),
|
||||
PIN(CARD_4, 0), PIN(CARD_5, 0) };
|
||||
static const unsigned int sdxc_d0_b_pins[] = { PIN(CARD_1, 0) };
|
||||
static const unsigned int sdxc_clk_b_pins[] = { PIN(CARD_2, 0) };
|
||||
static const unsigned int sdxc_cmd_b_pins[] = { PIN(CARD_3, 0) };
|
||||
static const unsigned int sdxc_d13_b_pins[] = { PIN(CARD_0, EE_OFF),
|
||||
PIN(CARD_4, EE_OFF), PIN(CARD_5, EE_OFF) };
|
||||
static const unsigned int sdxc_d0_b_pins[] = { PIN(CARD_1, EE_OFF) };
|
||||
static const unsigned int sdxc_clk_b_pins[] = { PIN(CARD_2, EE_OFF) };
|
||||
static const unsigned int sdxc_cmd_b_pins[] = { PIN(CARD_3, EE_OFF) };
|
||||
|
||||
/* bank AO */
|
||||
static const unsigned int uart_tx_ao_a_pins[] = { PIN(GPIOAO_0, AO_OFF) };
|
||||
static const unsigned int uart_rx_ao_a_pins[] = { PIN(GPIOAO_1, AO_OFF) };
|
||||
static const unsigned int uart_cts_ao_a_pins[] = { PIN(GPIOAO_2, AO_OFF) };
|
||||
static const unsigned int uart_rts_ao_a_pins[] = { PIN(GPIOAO_3, AO_OFF) };
|
||||
static const unsigned int i2c_mst_sck_ao_pins[] = { PIN(GPIOAO_4, AO_OFF) };
|
||||
static const unsigned int i2c_mst_sda_ao_pins[] = { PIN(GPIOAO_5, AO_OFF) };
|
||||
static const unsigned int clk_32k_in_out_pins[] = { PIN(GPIOAO_6, AO_OFF) };
|
||||
static const unsigned int remote_input_pins[] = { PIN(GPIOAO_7, AO_OFF) };
|
||||
static const unsigned int hdmi_cec_1_pins[] = { PIN(GPIOAO_12, AO_OFF) };
|
||||
static const unsigned int ir_blaster_pins[] = { PIN(GPIOAO_13, AO_OFF) };
|
||||
static const unsigned int uart_tx_ao_a_pins[] = { PIN(GPIOAO_0, 0) };
|
||||
static const unsigned int uart_rx_ao_a_pins[] = { PIN(GPIOAO_1, 0) };
|
||||
static const unsigned int uart_cts_ao_a_pins[] = { PIN(GPIOAO_2, 0) };
|
||||
static const unsigned int uart_rts_ao_a_pins[] = { PIN(GPIOAO_3, 0) };
|
||||
static const unsigned int i2c_mst_sck_ao_pins[] = { PIN(GPIOAO_4, 0) };
|
||||
static const unsigned int i2c_mst_sda_ao_pins[] = { PIN(GPIOAO_5, 0) };
|
||||
static const unsigned int clk_32k_in_out_pins[] = { PIN(GPIOAO_6, 0) };
|
||||
static const unsigned int remote_input_pins[] = { PIN(GPIOAO_7, 0) };
|
||||
static const unsigned int hdmi_cec_1_pins[] = { PIN(GPIOAO_12, 0) };
|
||||
static const unsigned int ir_blaster_pins[] = { PIN(GPIOAO_13, 0) };
|
||||
|
||||
static const unsigned int pwm_c2_pins[] = { PIN(GPIOAO_3, AO_OFF) };
|
||||
static const unsigned int i2c_sck_ao_pins[] = { PIN(GPIOAO_4, AO_OFF) };
|
||||
static const unsigned int i2c_sda_ao_pins[] = { PIN(GPIOAO_5, AO_OFF) };
|
||||
static const unsigned int ir_remote_out_pins[] = { PIN(GPIOAO_7, AO_OFF) };
|
||||
static const unsigned int i2s_am_clk_out_pins[] = { PIN(GPIOAO_8, AO_OFF) };
|
||||
static const unsigned int i2s_ao_clk_out_pins[] = { PIN(GPIOAO_9, AO_OFF) };
|
||||
static const unsigned int i2s_lr_clk_out_pins[] = { PIN(GPIOAO_10, AO_OFF) };
|
||||
static const unsigned int i2s_out_01_pins[] = { PIN(GPIOAO_11, AO_OFF) };
|
||||
static const unsigned int pwm_c2_pins[] = { PIN(GPIOAO_3, 0) };
|
||||
static const unsigned int i2c_sck_ao_pins[] = { PIN(GPIOAO_4, 0) };
|
||||
static const unsigned int i2c_sda_ao_pins[] = { PIN(GPIOAO_5, 0) };
|
||||
static const unsigned int ir_remote_out_pins[] = { PIN(GPIOAO_7, 0) };
|
||||
static const unsigned int i2s_am_clk_out_pins[] = { PIN(GPIOAO_8, 0) };
|
||||
static const unsigned int i2s_ao_clk_out_pins[] = { PIN(GPIOAO_9, 0) };
|
||||
static const unsigned int i2s_lr_clk_out_pins[] = { PIN(GPIOAO_10, 0) };
|
||||
static const unsigned int i2s_out_01_pins[] = { PIN(GPIOAO_11, 0) };
|
||||
|
||||
static const unsigned int uart_tx_ao_b0_pins[] = { PIN(GPIOAO_0, AO_OFF) };
|
||||
static const unsigned int uart_rx_ao_b0_pins[] = { PIN(GPIOAO_1, AO_OFF) };
|
||||
static const unsigned int uart_cts_ao_b_pins[] = { PIN(GPIOAO_2, AO_OFF) };
|
||||
static const unsigned int uart_rts_ao_b_pins[] = { PIN(GPIOAO_3, AO_OFF) };
|
||||
static const unsigned int uart_tx_ao_b1_pins[] = { PIN(GPIOAO_4, AO_OFF) };
|
||||
static const unsigned int uart_rx_ao_b1_pins[] = { PIN(GPIOAO_5, AO_OFF) };
|
||||
static const unsigned int spdif_out_1_pins[] = { PIN(GPIOAO_6, AO_OFF) };
|
||||
static const unsigned int spdif_out_2_pins[] = { PIN(GPIOAO_13, AO_OFF) };
|
||||
static const unsigned int uart_tx_ao_b0_pins[] = { PIN(GPIOAO_0, 0) };
|
||||
static const unsigned int uart_rx_ao_b0_pins[] = { PIN(GPIOAO_1, 0) };
|
||||
static const unsigned int uart_cts_ao_b_pins[] = { PIN(GPIOAO_2, 0) };
|
||||
static const unsigned int uart_rts_ao_b_pins[] = { PIN(GPIOAO_3, 0) };
|
||||
static const unsigned int uart_tx_ao_b1_pins[] = { PIN(GPIOAO_4, 0) };
|
||||
static const unsigned int uart_rx_ao_b1_pins[] = { PIN(GPIOAO_5, 0) };
|
||||
static const unsigned int spdif_out_1_pins[] = { PIN(GPIOAO_6, 0) };
|
||||
static const unsigned int spdif_out_2_pins[] = { PIN(GPIOAO_13, 0) };
|
||||
|
||||
static const unsigned int i2s_in_ch01_pins[] = { PIN(GPIOAO_6, AO_OFF) };
|
||||
static const unsigned int i2s_ao_clk_in_pins[] = { PIN(GPIOAO_9, AO_OFF) };
|
||||
static const unsigned int i2s_lr_clk_in_pins[] = { PIN(GPIOAO_10, AO_OFF) };
|
||||
static const unsigned int i2s_in_ch01_pins[] = { PIN(GPIOAO_6, 0) };
|
||||
static const unsigned int i2s_ao_clk_in_pins[] = { PIN(GPIOAO_9, 0) };
|
||||
static const unsigned int i2s_lr_clk_in_pins[] = { PIN(GPIOAO_10, 0) };
|
||||
|
||||
/* bank DIF */
|
||||
static const unsigned int eth_rxd1_pins[] = { PIN(DIF_0_P, 0) };
|
||||
static const unsigned int eth_rxd0_pins[] = { PIN(DIF_0_N, 0) };
|
||||
static const unsigned int eth_rx_dv_pins[] = { PIN(DIF_1_P, 0) };
|
||||
static const unsigned int eth_rx_clk_pins[] = { PIN(DIF_1_N, 0) };
|
||||
static const unsigned int eth_txd0_1_pins[] = { PIN(DIF_2_P, 0) };
|
||||
static const unsigned int eth_txd1_1_pins[] = { PIN(DIF_2_N, 0) };
|
||||
static const unsigned int eth_tx_en_pins[] = { PIN(DIF_3_P, 0) };
|
||||
static const unsigned int eth_ref_clk_pins[] = { PIN(DIF_3_N, 0) };
|
||||
static const unsigned int eth_mdc_pins[] = { PIN(DIF_4_P, 0) };
|
||||
static const unsigned int eth_mdio_en_pins[] = { PIN(DIF_4_N, 0) };
|
||||
static const unsigned int eth_rxd1_pins[] = { PIN(DIF_0_P, EE_OFF) };
|
||||
static const unsigned int eth_rxd0_pins[] = { PIN(DIF_0_N, EE_OFF) };
|
||||
static const unsigned int eth_rx_dv_pins[] = { PIN(DIF_1_P, EE_OFF) };
|
||||
static const unsigned int eth_rx_clk_pins[] = { PIN(DIF_1_N, EE_OFF) };
|
||||
static const unsigned int eth_txd0_1_pins[] = { PIN(DIF_2_P, EE_OFF) };
|
||||
static const unsigned int eth_txd1_1_pins[] = { PIN(DIF_2_N, EE_OFF) };
|
||||
static const unsigned int eth_tx_en_pins[] = { PIN(DIF_3_P, EE_OFF) };
|
||||
static const unsigned int eth_ref_clk_pins[] = { PIN(DIF_3_N, EE_OFF) };
|
||||
static const unsigned int eth_mdc_pins[] = { PIN(DIF_4_P, EE_OFF) };
|
||||
static const unsigned int eth_mdio_en_pins[] = { PIN(DIF_4_N, EE_OFF) };
|
||||
|
||||
static struct meson_pmx_group meson8b_cbus_groups[] = {
|
||||
GPIO_GROUP(GPIOX_0, 0),
|
||||
GPIO_GROUP(GPIOX_1, 0),
|
||||
GPIO_GROUP(GPIOX_2, 0),
|
||||
GPIO_GROUP(GPIOX_3, 0),
|
||||
GPIO_GROUP(GPIOX_4, 0),
|
||||
GPIO_GROUP(GPIOX_5, 0),
|
||||
GPIO_GROUP(GPIOX_6, 0),
|
||||
GPIO_GROUP(GPIOX_7, 0),
|
||||
GPIO_GROUP(GPIOX_8, 0),
|
||||
GPIO_GROUP(GPIOX_9, 0),
|
||||
GPIO_GROUP(GPIOX_10, 0),
|
||||
GPIO_GROUP(GPIOX_11, 0),
|
||||
GPIO_GROUP(GPIOX_16, 0),
|
||||
GPIO_GROUP(GPIOX_17, 0),
|
||||
GPIO_GROUP(GPIOX_18, 0),
|
||||
GPIO_GROUP(GPIOX_19, 0),
|
||||
GPIO_GROUP(GPIOX_20, 0),
|
||||
GPIO_GROUP(GPIOX_21, 0),
|
||||
GPIO_GROUP(GPIOX_0, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_1, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_2, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_3, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_4, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_5, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_6, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_7, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_8, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_9, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_10, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_11, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_16, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_17, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_18, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_19, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_20, EE_OFF),
|
||||
GPIO_GROUP(GPIOX_21, EE_OFF),
|
||||
|
||||
GPIO_GROUP(GPIOY_0, 0),
|
||||
GPIO_GROUP(GPIOY_1, 0),
|
||||
GPIO_GROUP(GPIOY_3, 0),
|
||||
GPIO_GROUP(GPIOY_6, 0),
|
||||
GPIO_GROUP(GPIOY_7, 0),
|
||||
GPIO_GROUP(GPIOY_8, 0),
|
||||
GPIO_GROUP(GPIOY_9, 0),
|
||||
GPIO_GROUP(GPIOY_10, 0),
|
||||
GPIO_GROUP(GPIOY_11, 0),
|
||||
GPIO_GROUP(GPIOY_12, 0),
|
||||
GPIO_GROUP(GPIOY_13, 0),
|
||||
GPIO_GROUP(GPIOY_14, 0),
|
||||
GPIO_GROUP(GPIOY_0, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_1, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_3, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_6, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_7, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_8, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_9, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_10, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_11, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_12, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_13, EE_OFF),
|
||||
GPIO_GROUP(GPIOY_14, EE_OFF),
|
||||
|
||||
GPIO_GROUP(GPIODV_9, 0),
|
||||
GPIO_GROUP(GPIODV_24, 0),
|
||||
GPIO_GROUP(GPIODV_25, 0),
|
||||
GPIO_GROUP(GPIODV_26, 0),
|
||||
GPIO_GROUP(GPIODV_27, 0),
|
||||
GPIO_GROUP(GPIODV_28, 0),
|
||||
GPIO_GROUP(GPIODV_29, 0),
|
||||
GPIO_GROUP(GPIODV_9, EE_OFF),
|
||||
GPIO_GROUP(GPIODV_24, EE_OFF),
|
||||
GPIO_GROUP(GPIODV_25, EE_OFF),
|
||||
GPIO_GROUP(GPIODV_26, EE_OFF),
|
||||
GPIO_GROUP(GPIODV_27, EE_OFF),
|
||||
GPIO_GROUP(GPIODV_28, EE_OFF),
|
||||
GPIO_GROUP(GPIODV_29, EE_OFF),
|
||||
|
||||
GPIO_GROUP(GPIOH_0, 0),
|
||||
GPIO_GROUP(GPIOH_1, 0),
|
||||
GPIO_GROUP(GPIOH_2, 0),
|
||||
GPIO_GROUP(GPIOH_3, 0),
|
||||
GPIO_GROUP(GPIOH_4, 0),
|
||||
GPIO_GROUP(GPIOH_5, 0),
|
||||
GPIO_GROUP(GPIOH_6, 0),
|
||||
GPIO_GROUP(GPIOH_7, 0),
|
||||
GPIO_GROUP(GPIOH_8, 0),
|
||||
GPIO_GROUP(GPIOH_9, 0),
|
||||
GPIO_GROUP(GPIOH_0, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_1, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_2, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_3, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_4, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_5, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_6, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_7, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_8, EE_OFF),
|
||||
GPIO_GROUP(GPIOH_9, EE_OFF),
|
||||
|
||||
GPIO_GROUP(DIF_0_P, 0),
|
||||
GPIO_GROUP(DIF_0_N, 0),
|
||||
GPIO_GROUP(DIF_1_P, 0),
|
||||
GPIO_GROUP(DIF_1_N, 0),
|
||||
GPIO_GROUP(DIF_2_P, 0),
|
||||
GPIO_GROUP(DIF_2_N, 0),
|
||||
GPIO_GROUP(DIF_3_P, 0),
|
||||
GPIO_GROUP(DIF_3_N, 0),
|
||||
GPIO_GROUP(DIF_4_P, 0),
|
||||
GPIO_GROUP(DIF_4_N, 0),
|
||||
GPIO_GROUP(DIF_0_P, EE_OFF),
|
||||
GPIO_GROUP(DIF_0_N, EE_OFF),
|
||||
GPIO_GROUP(DIF_1_P, EE_OFF),
|
||||
GPIO_GROUP(DIF_1_N, EE_OFF),
|
||||
GPIO_GROUP(DIF_2_P, EE_OFF),
|
||||
GPIO_GROUP(DIF_2_N, EE_OFF),
|
||||
GPIO_GROUP(DIF_3_P, EE_OFF),
|
||||
GPIO_GROUP(DIF_3_N, EE_OFF),
|
||||
GPIO_GROUP(DIF_4_P, EE_OFF),
|
||||
GPIO_GROUP(DIF_4_N, EE_OFF),
|
||||
|
||||
GPIO_GROUP(BOOT_0, 0),
|
||||
GPIO_GROUP(BOOT_1, 0),
|
||||
@@ -585,22 +583,20 @@ static struct meson_pmx_group meson8b_cbus_groups[] = {
|
||||
};
|
||||
|
||||
static struct meson_pmx_group meson8b_aobus_groups[] = {
|
||||
GPIO_GROUP(GPIOAO_0, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_1, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_2, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_3, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_4, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_5, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_6, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_7, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_8, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_9, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_10, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_11, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_12, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_13, AO_OFF),
|
||||
GPIO_GROUP(GPIO_BSD_EN, AO_OFF),
|
||||
GPIO_GROUP(GPIO_TEST_N, AO_OFF),
|
||||
GPIO_GROUP(GPIOAO_0, 0),
|
||||
GPIO_GROUP(GPIOAO_1, 0),
|
||||
GPIO_GROUP(GPIOAO_2, 0),
|
||||
GPIO_GROUP(GPIOAO_3, 0),
|
||||
GPIO_GROUP(GPIOAO_4, 0),
|
||||
GPIO_GROUP(GPIOAO_5, 0),
|
||||
GPIO_GROUP(GPIOAO_6, 0),
|
||||
GPIO_GROUP(GPIOAO_7, 0),
|
||||
GPIO_GROUP(GPIOAO_8, 0),
|
||||
GPIO_GROUP(GPIOAO_9, 0),
|
||||
GPIO_GROUP(GPIOAO_10, 0),
|
||||
GPIO_GROUP(GPIOAO_11, 0),
|
||||
GPIO_GROUP(GPIOAO_12, 0),
|
||||
GPIO_GROUP(GPIOAO_13, 0),
|
||||
|
||||
/* bank AO */
|
||||
GROUP(uart_tx_ao_a, 0, 12),
|
||||
@@ -661,7 +657,7 @@ static const char * const gpio_groups[] = {
|
||||
"GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3",
|
||||
"GPIOAO_4", "GPIOAO_5", "GPIOAO_6", "GPIOAO_7",
|
||||
"GPIOAO_8", "GPIOAO_9", "GPIOAO_10", "GPIOAO_11",
|
||||
"GPIOAO_12", "GPIOAO_13", "GPIO_BSD_EN", "GPIO_TEST_N",
|
||||
"GPIOAO_12", "GPIOAO_13",
|
||||
|
||||
"DIF_0_P", "DIF_0_N", "DIF_1_P", "DIF_1_N",
|
||||
"DIF_2_P", "DIF_2_N", "DIF_3_P", "DIF_3_N",
|
||||
@@ -925,25 +921,25 @@ static struct meson_pmx_func meson8b_aobus_functions[] = {
|
||||
|
||||
static struct meson_bank meson8b_cbus_banks[] = {
|
||||
/* name first last pullen pull dir out in */
|
||||
BANK("X", PIN(GPIOX_0, 0), PIN(GPIOX_21, 0),
|
||||
BANK("X", PIN(GPIOX_0, EE_OFF), PIN(GPIOX_21, EE_OFF),
|
||||
4, 0, 4, 0, 0, 0, 1, 0, 2, 0),
|
||||
BANK("Y", PIN(GPIOY_0, 0), PIN(GPIOY_16, 0),
|
||||
BANK("Y", PIN(GPIOY_0, EE_OFF), PIN(GPIOY_16, EE_OFF),
|
||||
3, 0, 3, 0, 3, 0, 4, 0, 5, 0),
|
||||
BANK("DV", PIN(GPIODV_0, 0), PIN(GPIODV_29, 0),
|
||||
BANK("DV", PIN(GPIODV_0, EE_OFF), PIN(GPIODV_29, EE_OFF),
|
||||
0, 0, 0, 0, 6, 0, 7, 0, 8, 0),
|
||||
BANK("H", PIN(GPIOH_0, 0), PIN(GPIOH_9, 0),
|
||||
BANK("H", PIN(GPIOH_0, EE_OFF), PIN(GPIOH_9, EE_OFF),
|
||||
1, 16, 1, 16, 9, 19, 10, 19, 11, 19),
|
||||
BANK("CARD", PIN(CARD_0, 0), PIN(CARD_6, 0),
|
||||
BANK("CARD", PIN(CARD_0, EE_OFF), PIN(CARD_6, EE_OFF),
|
||||
2, 20, 2, 20, 0, 22, 1, 22, 2, 22),
|
||||
BANK("BOOT", PIN(BOOT_0, 0), PIN(BOOT_18, 0),
|
||||
BANK("BOOT", PIN(BOOT_0, EE_OFF), PIN(BOOT_18, EE_OFF),
|
||||
2, 0, 2, 0, 9, 0, 10, 0, 11, 0),
|
||||
BANK("DIF", PIN(DIF_0_P, 0), PIN(DIF_4_N, 0),
|
||||
BANK("DIF", PIN(DIF_0_P, EE_OFF), PIN(DIF_4_N, EE_OFF),
|
||||
5, 8, 5, 8, 12, 12, 13, 12, 14, 12),
|
||||
};
|
||||
|
||||
static struct meson_bank meson8b_aobus_banks[] = {
|
||||
/* name first last pullen pull dir out in */
|
||||
BANK("AO", PIN(GPIOAO_0, AO_OFF), PIN(GPIO_TEST_N, AO_OFF),
|
||||
BANK("AO", PIN(GPIOAO_0, 0), PIN(GPIOAO_13, 0),
|
||||
0, 0, 0, 16, 0, 0, 0, 16, 1, 0),
|
||||
};
|
||||
|
||||
@@ -951,7 +947,7 @@ static struct meson_domain_data meson8b_periphs_domain_data = {
|
||||
.name = "cbus-banks",
|
||||
.banks = meson8b_cbus_banks,
|
||||
.num_banks = ARRAY_SIZE(meson8b_cbus_banks),
|
||||
.pin_base = 0,
|
||||
.pin_base = 14,
|
||||
.num_pins = 115,
|
||||
};
|
||||
|
||||
@@ -959,8 +955,8 @@ static struct meson_domain_data meson8b_aobus_domain_data = {
|
||||
.name = "aobus-banks",
|
||||
.banks = meson8b_aobus_banks,
|
||||
.num_banks = ARRAY_SIZE(meson8b_aobus_banks),
|
||||
.pin_base = 115,
|
||||
.num_pins = 16,
|
||||
.pin_base = 0,
|
||||
.num_pins = 14,
|
||||
};
|
||||
|
||||
struct meson_pinctrl_data meson8b_cbus_pinctrl_data = {
|
||||
|
||||
482
drivers/amlogic/pinctrl/pinctrl-mesonaxg.c
Normal file
482
drivers/amlogic/pinctrl/pinctrl-mesonaxg.c
Normal file
@@ -0,0 +1,482 @@
|
||||
/*
|
||||
* drivers/amlogic/pinctrl/pinctrl-mesonaxg.c
|
||||
*
|
||||
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <dt-bindings/gpio/mesonaxg-gpio.h>
|
||||
#include "pinctrl-meson.h"
|
||||
|
||||
#define EE_OFF 14
|
||||
|
||||
static const struct meson_desc_pin mesonaxg_periphs_pins[] = {
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_0, EE_OFF), 0x2, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "spi_a"), /*SPI_CLK_A*/
|
||||
MESON_FUNCTION(0x2, "uart_b")), /*UART_RTS_EE_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_1, EE_OFF), 0x2, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "spi_a"), /*SPI_MOSI_A*/
|
||||
MESON_FUNCTION(0x2, "uart_b")), /*UART_CTS_EE_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_2, EE_OFF), 0x2, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "spi_a"), /*SPI_MISO_A*/
|
||||
MESON_FUNCTION(0x2, "uart_b")), /*UART_TX_EE_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_3, EE_OFF), 0x2, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "spi_a"), /*SPI_SS0_A*/
|
||||
MESON_FUNCTION(0x2, "uart_b")), /*UART_RX_EE_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_4, EE_OFF), 0x2, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "spi_a"), /*SPI_SS1_A*/
|
||||
MESON_FUNCTION(0x2, "pwm_b"), /*PWM_B*/
|
||||
MESON_FUNCTION(0x3, "spdif_in")), /*SPDIF_IN*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_5, EE_OFF), 0x2, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "spi_a"), /*SPI_SS2_A*/
|
||||
MESON_FUNCTION(0x2, "pwm_a"), /*PWM_A*/
|
||||
MESON_FUNCTION(0x3, "spdif_out")), /*SPDIF_OUT*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_6, EE_OFF), 0x2, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "i2c_a"), /*I2C_SCK_A*/
|
||||
MESON_FUNCTION(0x2, "uart_ao_b")), /*UART_CTS_AO_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_7, EE_OFF), 0x2, 28,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "i2c_a"), /*I2C_SDA_A*/
|
||||
MESON_FUNCTION(0x2, "uart_ao_b")), /*UART_RTS_AO_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_8, EE_OFF), 0x3, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "i2c_b"), /*I2C_SCK_B*/
|
||||
MESON_FUNCTION(0x2, "uart_ao_b")), /*UART_TX_AO_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_9, EE_OFF), 0x3, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "i2c_b"), /*I2C_SDA_B*/
|
||||
MESON_FUNCTION(0x2, "uart_ao_b")), /*UART_RX_AO_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOZ_10, EE_OFF), 0x3, 8,
|
||||
MESON_FUNCTION(0x0, "gpio")),
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_0, EE_OFF), 0x0, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc")), /*EMMC_D0*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_1, EE_OFF), 0x0, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc")), /*EMMC_D1*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_2, EE_OFF), 0x0, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc")), /*EMMC_D2*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_3, EE_OFF), 0x0, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc"), /*EMMC_D3*/
|
||||
MESON_FUNCTION(0x3, "norflash")), /*NOR_HOLD*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_4, EE_OFF), 0x0, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc"), /*EMMC_D4*/
|
||||
MESON_FUNCTION(0x3, "norflash")), /*NOR_D*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_5, EE_OFF), 0x0, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc"), /*EMMC_D5*/
|
||||
MESON_FUNCTION(0x3, "norflash")), /*NOR_Q*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_6, EE_OFF), 0x0, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc"), /*EMMC_D6*/
|
||||
MESON_FUNCTION(0x3, "norflash")), /*NOR_C*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_7, EE_OFF), 0x0, 28,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc")), /*EMMC_D7*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_8, EE_OFF), 0x1, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc"), /*EMMC_CLK*/
|
||||
MESON_FUNCTION(0x2, "nandflash")), /*NAND_CE0 */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_9, EE_OFF), 0x1, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x2, "nandflash"), /*NAND_ALE*/
|
||||
MESON_FUNCTION(0x3, "norflash")), /*NOR_WP*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_10, EE_OFF), 0x1, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc"), /*EMMC_CMD*/
|
||||
MESON_FUNCTION(0x2, "nandflash")), /*NAND_CLE */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_11, EE_OFF), 0x1, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x2, "nandflash")), /*NAND_WEN_CLK*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_12, EE_OFF), 0x1, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x2, "nandflash")), /*NAND_REN_WR */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_13, EE_OFF), 0x1, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "emmc"), /*EMMC_DS*/
|
||||
MESON_FUNCTION(0x2, "nandflash")), /*NAND_RB0*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(BOOT_14, EE_OFF), 0x1, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x3, "norflash")), /*NOR_CS */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_0, EE_OFF), 0xb, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "mclk_a"), /*MCLK_A*/
|
||||
MESON_FUNCTION(0x2, "pwm_vs"), /*PWM_VS*/
|
||||
MESON_FUNCTION(0x5, "wifi")), /*WIFI_BEACON*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_1, EE_OFF), 0xb, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "mclk_a"), /*MCLK_A*/
|
||||
MESON_FUNCTION(0x3, "spdif_in"), /*SPDIF_IN*/
|
||||
MESON_FUNCTION(0x4, "spdif_out"), /*SPDIF_OUT*/
|
||||
MESON_FUNCTION(0x5, "wifi")), /*WIFI_BEACON*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_2, EE_OFF), 0xb, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmc_out"), /*TDMC_SCLK*/
|
||||
MESON_FUNCTION(0x2, "tdmc_in"), /*TDMC_SLV_SCLK*/
|
||||
MESON_FUNCTION(0x3, "spi_b")), /*SPI_MOSI_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_3, EE_OFF), 0xb, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmc_out"), /*TDMC_FS*/
|
||||
MESON_FUNCTION(0x2, "tdmc_in"), /*TDMC_SLV_FS*/
|
||||
MESON_FUNCTION(0x3, "spi_b")), /*SPI_MISO_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_4, EE_OFF), 0xb, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmc_out"), /*TDMC_DOUT0*/
|
||||
MESON_FUNCTION(0x2, "tdmc_in"), /*TDMC_DIN0*/
|
||||
MESON_FUNCTION(0x3, "spi_b")), /*SPI_CLK_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_5, EE_OFF), 0xb, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmc_out"), /*TDMC_DOUT1*/
|
||||
MESON_FUNCTION(0x2, "tdmc_in"), /*TDMC_DIN1*/
|
||||
MESON_FUNCTION(0x3, "spi_b")), /*SPI_SS0_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_6, EE_OFF), 0xb, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmc_out"), /*TDMC_DOUT2*/
|
||||
MESON_FUNCTION(0x2, "tdmc_in"), /*TDMC_DIN2*/
|
||||
MESON_FUNCTION(0x3, "spi_b"), /*SPI_SS1_B*/
|
||||
MESON_FUNCTION(0x4, "i2c_d")), /*I2C_SDA_D*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_7, EE_OFF), 0xb, 28,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmc_out"), /*TDMC_DOUT3*/
|
||||
MESON_FUNCTION(0x2, "tdmc_in"), /*TDMC_DIN3*/
|
||||
MESON_FUNCTION(0x3, "spdif_in"), /*SPDIF_IN*/
|
||||
MESON_FUNCTION(0x4, "i2c_d")), /*I2C_SCK_D*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_8, EE_OFF), 0xc, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmb_out"), /*TDMB_SCLK*/
|
||||
MESON_FUNCTION(0x2, "tdmb_in")), /*TDMB_SLV_SCLK*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_9, EE_OFF), 0xc, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmb_out"), /*TDMB_FS*/
|
||||
MESON_FUNCTION(0x2, "tdmb_in")), /*TDMB_SLV_FS*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_10, EE_OFF), 0xc, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmb_out"), /*TDMB_DOUT0*/
|
||||
MESON_FUNCTION(0x2, "tdmb_in")), /*TDMB_DIN0*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_11, EE_OFF), 0xc, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmb_out"), /*TDMB_DOUT1*/
|
||||
MESON_FUNCTION(0x2, "tdmb_in"), /*TDMB_DIN1*/
|
||||
MESON_FUNCTION(0x3, "spdif_out")), /*SPDIF_OUT*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_12, EE_OFF), 0xc, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmb_out"), /*TDMB_DOUT2*/
|
||||
MESON_FUNCTION(0x2, "tdmb_in"), /*TDMB_DIN2*/
|
||||
MESON_FUNCTION(0x4, "i2c_d")), /*I2C_SDA_D*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_13, EE_OFF), 0xc, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "tdmb_out"), /*TDMB_DOUT3*/
|
||||
MESON_FUNCTION(0x2, "tdmb_in"), /*TDMB_DIN3*/
|
||||
MESON_FUNCTION(0x4, "i2c_d")), /*I2C_SCK_D*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_14, EE_OFF), 0xc, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "pdm"), /*PDM_DCLK*/
|
||||
MESON_FUNCTION(0x3, "pwm_a"), /*PWM_A*/
|
||||
MESON_FUNCTION(0x5, "wifi")), /*WIFI_BEACON*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_15, EE_OFF), 0xc, 28,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "pdm"), /*PDM_DIN0*/
|
||||
MESON_FUNCTION(0x2, "tdmc_out"), /*TDMC_DOUT2*/
|
||||
MESON_FUNCTION(0x3, "pwm_b"), /*PWM_B*/
|
||||
MESON_FUNCTION(0x4, "tdmc_in")), /*TDMC_DIN2*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_16, EE_OFF), 0xd, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "pdm"), /*PDM_DIN1*/
|
||||
MESON_FUNCTION(0x2, "tdmc_out"), /*TDMC_DOUT3*/
|
||||
MESON_FUNCTION(0x3, "pwm_c"), /*PWM_C*/
|
||||
MESON_FUNCTION(0x4, "tdmc_in")), /*TDMC_DIN3*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_17, EE_OFF), 0xd, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "pdm"), /*PDM_DIN2*/
|
||||
MESON_FUNCTION(0x2, "tdmb_out"), /*TDMB_DOUT2*/
|
||||
MESON_FUNCTION(0x3, "i2c_c"), /*I2C_SDA_C*/
|
||||
MESON_FUNCTION(0x4, "tdmb_in"), /*TDMB_DIN2*/
|
||||
MESON_FUNCTION(0x5, "eth")), /*ETH_MDIO*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_18, EE_OFF), 0xd, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "pdm"), /*PDM_DIN3*/
|
||||
MESON_FUNCTION(0x2, "tdmb_out"), /*TDMB_DOUT3*/
|
||||
MESON_FUNCTION(0x3, "i2c_c"), /*I2C_SCK_C*/
|
||||
MESON_FUNCTION(0x4, "tdmb_in"), /*TDMB_DIN3*/
|
||||
MESON_FUNCTION(0x5, "eth")), /*ETH_MDC*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_19, EE_OFF), 0xd, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "spdif_in"), /*SPDIF_IN*/
|
||||
MESON_FUNCTION(0x2, "spdif_out"), /*SPDIF_OUT*/
|
||||
MESON_FUNCTION(0x3, "pdm"), /*PDM_DCLK*/
|
||||
MESON_FUNCTION(0x4, "i2c_d")), /*I2C_SDA_D*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOA_20, EE_OFF), 0xd, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "spdif_out"), /*SPDIF_OUT*/
|
||||
MESON_FUNCTION(0x2, "spdif_in"), /*SPDIF_IN*/
|
||||
MESON_FUNCTION(0x4, "i2c_d"), /*I2C_SCK_D*/
|
||||
MESON_FUNCTION(0x5, "wifi")), /*WIFI_BEACON*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_0, EE_OFF), 0x4, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "sdio"), /*SDIO_D0*/
|
||||
MESON_FUNCTION(0x2, "jtag")), /*JTAG_TDO*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_1, EE_OFF), 0x4, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "sdio"), /*SDIO_D1*/
|
||||
MESON_FUNCTION(0x2, "jtag")), /*JTAG_TDI*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_2, EE_OFF), 0x4, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "sdio"), /*SDIO_D2*/
|
||||
MESON_FUNCTION(0x2, "uart_ao_a")), /*UART_RX_AO_A*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_3, EE_OFF), 0x4, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "sdio"), /*SDIO_D3*/
|
||||
MESON_FUNCTION(0x2, "uart_ao_a")), /*UART_TX_AO_A*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_4, EE_OFF), 0x4, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "sdio"), /*SDIO_CLK*/
|
||||
MESON_FUNCTION(0x2, "jtag")), /*JTAG_CLK*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_5, EE_OFF), 0x4, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "sdio"), /*SDIO_CMD*/
|
||||
MESON_FUNCTION(0x2, "jtag")), /*JTAG_TMS*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_6, EE_OFF), 0x4, 24,
|
||||
MESON_FUNCTION(0x0, "gpio")),
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_7, EE_OFF), 0x4, 28,
|
||||
MESON_FUNCTION(0x0, "gpio")),
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_8, EE_OFF), 0x5, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "uart_a"), /*UART_TX_EE_A*/
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_TXD0*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_9, EE_OFF), 0x5, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "uart_a"), /*UART_RX_EE_A*/
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_TXD1*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_10, EE_OFF), 0x5, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "uart_a"), /*UART_CTS_EE_A*/
|
||||
MESON_FUNCTION(0x3, "pwm_c"), /*PWM_C*/
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_TXEN*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_11, EE_OFF), 0x5, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "uart_a"), /*UART_RTS_EE_A*/
|
||||
MESON_FUNCTION(0x3, "pwm_d")), /*PWM_D*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_12, EE_OFF), 0x5, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_RGMII_RX_CLK*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_13, EE_OFF), 0x5, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_RXD0*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_14, EE_OFF), 0x5, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_RXD1*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_15, EE_OFF), 0x5, 28,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_RX_DV*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_16, EE_OFF), 0x6, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "i2c_b"), /*I2C_SCK_B*/
|
||||
MESON_FUNCTION(0x2, "uart_b"), /*UART_TX_EE_B*/
|
||||
MESON_FUNCTION(0x3, "pwm_d"), /*PWM_D*/
|
||||
MESON_FUNCTION(0x4, "spi_b")), /*SPI_SS0_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_17, EE_OFF), 0x6, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "i2c_b"), /*I2C_SDA_B*/
|
||||
MESON_FUNCTION(0x2, "uart_b"), /*UART_RX_EE_B*/
|
||||
MESON_FUNCTION(0x3, "pwm_c"), /*PWM_C*/
|
||||
MESON_FUNCTION(0x4, "spi_b")), /*SPI_MOSI_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_18, EE_OFF), 0x6, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "i2c_c"), /*I2C_SCK_C*/
|
||||
MESON_FUNCTION(0x2, "uart_b"), /*UART_RTS_EE_B*/
|
||||
MESON_FUNCTION(0x3, "pwm_a"), /*PWM_A*/
|
||||
MESON_FUNCTION(0x4, "spi_b")), /*SPI_MISO_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_19, EE_OFF), 0x6, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "i2c_c"), /*I2C_SDA_C*/
|
||||
MESON_FUNCTION(0x2, "uart_b"), /*UART_CTS_EE_B*/
|
||||
MESON_FUNCTION(0x3, "pwm_b"), /*PWM_B*/
|
||||
MESON_FUNCTION(0x4, "spi_b")), /*SPI_CLK_B*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_20, EE_OFF), 0x6, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "pwm_a")), /*PWM_A*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_21, EE_OFF), 0x6, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_MDIO*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOX_22, EE_OFF), 0x6, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x4, "eth")), /*ETH_MDC*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_0, EE_OFF), 0x8, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_MDIO*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_1, EE_OFF), 0x8, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_MDC*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_2, EE_OFF), 0x8, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_RGMII_RX_CLK*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_3, EE_OFF), 0x8, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_RX_DV*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_4, EE_OFF), 0x8, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_RXD0*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_5, EE_OFF), 0x8, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_RXD1*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_6, EE_OFF), 0x8, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_RXD2_RGMII*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_7, EE_OFF), 0x8, 28,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_RXD3_RGMII*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_8, EE_OFF), 0x9, 0,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_RGMII_TX_CLK*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_9, EE_OFF), 0x9, 4,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_TXEN*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_10, EE_OFF), 0x9, 8,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_TXD0*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_11, EE_OFF), 0x9, 12,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_TXD1*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_12, EE_OFF), 0x9, 16,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_TXD2_RGMII*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_13, EE_OFF), 0x9, 20,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "eth")), /*ETH_TXD3_RGMII*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_14, EE_OFF), 0x9, 24,
|
||||
MESON_FUNCTION(0x0, "gpio")),
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOY_15, EE_OFF), 0x9, 28,
|
||||
MESON_FUNCTION(0x0, "gpio")),
|
||||
};
|
||||
|
||||
static const struct meson_desc_pin mesonaxg_aobus_pins[] = {
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_0, 0), 0x0, 0,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "uart_ao_a")), /*UART_TX_AO_A*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_1, 0), 0x0, 4,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "uart_ao_a")), /*UART_RX_AO_A*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_2, 0), 0x0, 8,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "uart_ao_b"), /*UART_CTS_AO_B*/
|
||||
MESON_FUNCTION(0x2, "uart_ao_a"), /*UART_CTS_AO_A*/
|
||||
MESON_FUNCTION(0x3, "pwm_ao_b")), /* PWMAO_B */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_3, 0), 0x0, 12,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "uart_ao_b"), /*UART_RTS_AO_B*/
|
||||
MESON_FUNCTION(0x2, "uart_ao_a"), /*UART_RTS_AO_A*/
|
||||
MESON_FUNCTION(0x3, "pwm_ao_a"), /* PWMAO_A */
|
||||
MESON_FUNCTION(0x4, "jtag")), /*JTAG_TDI */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_4, 0), 0x0, 16,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "uart_ao_b"), /*UART_TX_AO_B*/
|
||||
MESON_FUNCTION(0x2, "i2c_ao"), /*I2C_SCK_AO*/
|
||||
MESON_FUNCTION(0x4, "jtag")), /*JTAG_TDO */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_5, 0), 0x0, 20,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "uart_ao_b"), /*UART_RX_AO_B*/
|
||||
MESON_FUNCTION(0x2, "i2c_ao"), /*I2C_SDA_AO*/
|
||||
MESON_FUNCTION(0x4, "jtag")), /*JTAG_CLK */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_6, 0), 0x0, 24,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "ir_in")), /*IR_REMOTE_INPUT*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_7, 0), 0x0, 28,
|
||||
MESON_FUNCTION(0x0, "gpio"),
|
||||
MESON_FUNCTION(0x1, "ir_out"), /*IR_REMOTE_OUT*/
|
||||
MESON_FUNCTION(0x4, "jtag")), /*JTAG_TMS*/
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_8, 0), 0x1, 0,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "clk32"), /*CLK_32K_IN*/
|
||||
MESON_FUNCTION(0x2, "i2c_ao"), /*I2C_SCK_AO*/
|
||||
MESON_FUNCTION(0x3, "pwm_ao_c")), /*PWMAO_C */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_9, 0), 0x1, 4,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x2, "i2c_ao"), /*I2C_SDA_AO*/
|
||||
MESON_FUNCTION(0x3, "pwm_ao_d")), /*PWMAO_D */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_10, 0), 0x1, 8,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "i2c_slave_ao"),/*I2C_SLAVE_SCK_AO*/
|
||||
MESON_FUNCTION(0x2, "i2c_ao")), /*I2C_SCK_AO */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_11, 0), 0x1, 12,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "i2c_slave_ao"),/*I2C_SLAVE_SDA_AO*/
|
||||
MESON_FUNCTION(0x2, "i2c_ao")), /*I2C_SDA_AO */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_12, 0), 0x1, 16,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "clk12"), /*CLK12_24*/
|
||||
MESON_FUNCTION(0x3, "pwm_ao_b")), /*PWMAO_B */
|
||||
MESON_PINCTRL_PIN(MESON_PIN(GPIOAO_13, 0), 0x1, 20,
|
||||
MESON_FUNCTION(0x0, "gpio_ao"),
|
||||
MESON_FUNCTION(0x1, "clk25"), /*CLK25_EE*/
|
||||
MESON_FUNCTION(0x2, "gen_clk_ao"), /*GEN_CLK_AO */
|
||||
MESON_FUNCTION(0x3, "pwm_ao_c"), /*PWMAO_C */
|
||||
MESON_FUNCTION(0x4, "gen_clk")), /*GEN_CLK_EE*/
|
||||
};
|
||||
|
||||
static struct meson_bank mesonaxg_periphs_banks[] = {
|
||||
/* name first last pullen pull dir out in */
|
||||
BANK("A", PIN(GPIOA_0, EE_OFF), PIN(GPIOA_20, EE_OFF),
|
||||
0, 0, 0, 0, 0, 0, 1, 0, 2, 0),
|
||||
BANK("Y", PIN(GPIOY_0, EE_OFF), PIN(GPIOY_15, EE_OFF),
|
||||
1, 0, 1, 0, 3, 0, 4, 0, 5, 0),
|
||||
BANK("X", PIN(GPIOX_0, EE_OFF), PIN(GPIOX_22, EE_OFF),
|
||||
2, 0, 2, 0, 6, 0, 7, 0, 8, 0),
|
||||
BANK("Z", PIN(GPIOZ_0, EE_OFF), PIN(GPIOZ_10, EE_OFF),
|
||||
3, 0, 3, 0, 9, 0, 10, 0, 11, 0),
|
||||
BANK("BOOT", PIN(BOOT_0, EE_OFF), PIN(BOOT_14, EE_OFF),
|
||||
4, 0, 4, 0, 12, 0, 13, 0, 14, 0),
|
||||
};
|
||||
|
||||
static struct meson_bank mesonaxg_aobus_banks[] = {
|
||||
/* name first last pullen pull dir out in */
|
||||
BANK("AO", PIN(GPIOAO_0, 0), PIN(GPIOAO_13, 0),
|
||||
0, 16, 0, 0, 0, 0, 0, 16, 1, 0),
|
||||
};
|
||||
|
||||
static struct meson_domain_data mesonaxg_periphs_domain_data = {
|
||||
.name = "periphs-banks",
|
||||
.banks = mesonaxg_periphs_banks,
|
||||
.num_banks = ARRAY_SIZE(mesonaxg_periphs_banks),
|
||||
.pin_base = 14,
|
||||
.num_pins = 85,
|
||||
};
|
||||
|
||||
static struct meson_domain_data mesonaxg_aobus_domain_data = {
|
||||
.name = "aobus-banks",
|
||||
.banks = mesonaxg_aobus_banks,
|
||||
.num_banks = ARRAY_SIZE(mesonaxg_aobus_banks),
|
||||
.pin_base = 0,
|
||||
.num_pins = 14,
|
||||
};
|
||||
|
||||
struct meson_pinctrl_data meson_axg_periphs_pinctrl_data = {
|
||||
.meson_pins = mesonaxg_periphs_pins,
|
||||
.domain_data = &mesonaxg_periphs_domain_data,
|
||||
.num_pins = ARRAY_SIZE(mesonaxg_periphs_pins),
|
||||
};
|
||||
|
||||
struct meson_pinctrl_data meson_axg_aobus_pinctrl_data = {
|
||||
.meson_pins = mesonaxg_aobus_pins,
|
||||
.domain_data = &mesonaxg_aobus_domain_data,
|
||||
.num_pins = ARRAY_SIZE(mesonaxg_aobus_pins),
|
||||
};
|
||||
@@ -14,8 +14,23 @@
|
||||
|
||||
#ifndef _DT_BINDINGS_MESON8B_GPIO_H
|
||||
#define _DT_BINDINGS_MESON8B_GPIO_H
|
||||
|
||||
/* First GPIO chip */
|
||||
#define GPIOAO_0 0
|
||||
#define GPIOAO_1 1
|
||||
#define GPIOAO_2 2
|
||||
#define GPIOAO_3 3
|
||||
#define GPIOAO_4 4
|
||||
#define GPIOAO_5 5
|
||||
#define GPIOAO_6 6
|
||||
#define GPIOAO_7 7
|
||||
#define GPIOAO_8 8
|
||||
#define GPIOAO_9 9
|
||||
#define GPIOAO_10 10
|
||||
#define GPIOAO_11 11
|
||||
#define GPIOAO_12 12
|
||||
#define GPIOAO_13 13
|
||||
|
||||
/* Second GPIO chip */
|
||||
#define GPIOH_0 0
|
||||
#define GPIOH_1 1
|
||||
#define GPIOH_2 2
|
||||
@@ -122,25 +137,6 @@
|
||||
#define GPIOX_20 103
|
||||
#define GPIOX_21 104
|
||||
|
||||
/* Second GPIO chip */
|
||||
#define GPIOAO_0 0
|
||||
#define GPIOAO_1 1
|
||||
#define GPIOAO_2 2
|
||||
#define GPIOAO_3 3
|
||||
#define GPIOAO_4 4
|
||||
#define GPIOAO_5 5
|
||||
#define GPIOAO_6 6
|
||||
#define GPIOAO_7 7
|
||||
#define GPIOAO_8 8
|
||||
#define GPIOAO_9 9
|
||||
#define GPIOAO_10 10
|
||||
#define GPIOAO_11 11
|
||||
#define GPIOAO_12 12
|
||||
#define GPIOAO_13 13
|
||||
#define GPIO_BSD_EN 14
|
||||
#define GPIO_TEST_N 15
|
||||
|
||||
|
||||
/* GPIO Bank DIF */
|
||||
#define DIF_0_P 105
|
||||
#define DIF_0_N 106
|
||||
|
||||
125
include/dt-bindings/gpio/mesonaxg-gpio.h
Normal file
125
include/dt-bindings/gpio/mesonaxg-gpio.h
Normal file
@@ -0,0 +1,125 @@
|
||||
/*
|
||||
* include/dt-bindings/gpio/mesonaxg-gpio.h
|
||||
*
|
||||
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _DT_BINDINGS_MESONAXG_GPIO_H
|
||||
#define _DT_BINDINGS_MESONAXG_GPIO_H
|
||||
|
||||
/* First GPIO chip */
|
||||
#define GPIOAO_0 0
|
||||
#define GPIOAO_1 1
|
||||
#define GPIOAO_2 2
|
||||
#define GPIOAO_3 3
|
||||
#define GPIOAO_4 4
|
||||
#define GPIOAO_5 5
|
||||
#define GPIOAO_6 6
|
||||
#define GPIOAO_7 7
|
||||
#define GPIOAO_8 8
|
||||
#define GPIOAO_9 9
|
||||
#define GPIOAO_10 10
|
||||
#define GPIOAO_11 11
|
||||
#define GPIOAO_12 12
|
||||
#define GPIOAO_13 13
|
||||
|
||||
/* Second GPIO chip */
|
||||
#define GPIOZ_0 0
|
||||
#define GPIOZ_1 1
|
||||
#define GPIOZ_2 2
|
||||
#define GPIOZ_3 3
|
||||
#define GPIOZ_4 4
|
||||
#define GPIOZ_5 5
|
||||
#define GPIOZ_6 6
|
||||
#define GPIOZ_7 7
|
||||
#define GPIOZ_8 8
|
||||
#define GPIOZ_9 9
|
||||
#define GPIOZ_10 10
|
||||
#define BOOT_0 11
|
||||
#define BOOT_1 12
|
||||
#define BOOT_2 13
|
||||
#define BOOT_3 14
|
||||
#define BOOT_4 15
|
||||
#define BOOT_5 16
|
||||
#define BOOT_6 17
|
||||
#define BOOT_7 18
|
||||
#define BOOT_8 19
|
||||
#define BOOT_9 20
|
||||
#define BOOT_10 21
|
||||
#define BOOT_11 22
|
||||
#define BOOT_12 23
|
||||
#define BOOT_13 24
|
||||
#define BOOT_14 25
|
||||
#define GPIOA_0 26
|
||||
#define GPIOA_1 27
|
||||
#define GPIOA_2 28
|
||||
#define GPIOA_3 29
|
||||
#define GPIOA_4 30
|
||||
#define GPIOA_5 31
|
||||
#define GPIOA_6 32
|
||||
#define GPIOA_7 33
|
||||
#define GPIOA_8 34
|
||||
#define GPIOA_9 35
|
||||
#define GPIOA_10 36
|
||||
#define GPIOA_11 37
|
||||
#define GPIOA_12 38
|
||||
#define GPIOA_13 39
|
||||
#define GPIOA_14 40
|
||||
#define GPIOA_15 41
|
||||
#define GPIOA_16 42
|
||||
#define GPIOA_17 43
|
||||
#define GPIOA_18 44
|
||||
#define GPIOA_19 45
|
||||
#define GPIOA_20 46
|
||||
#define GPIOX_0 47
|
||||
#define GPIOX_1 48
|
||||
#define GPIOX_2 49
|
||||
#define GPIOX_3 50
|
||||
#define GPIOX_4 51
|
||||
#define GPIOX_5 52
|
||||
#define GPIOX_6 53
|
||||
#define GPIOX_7 54
|
||||
#define GPIOX_8 55
|
||||
#define GPIOX_9 56
|
||||
#define GPIOX_10 57
|
||||
#define GPIOX_11 58
|
||||
#define GPIOX_12 59
|
||||
#define GPIOX_13 60
|
||||
#define GPIOX_14 61
|
||||
#define GPIOX_15 62
|
||||
#define GPIOX_16 63
|
||||
#define GPIOX_17 64
|
||||
#define GPIOX_18 65
|
||||
#define GPIOX_19 66
|
||||
#define GPIOX_20 67
|
||||
#define GPIOX_21 68
|
||||
#define GPIOX_22 69
|
||||
#define GPIOY_0 70
|
||||
#define GPIOY_1 71
|
||||
#define GPIOY_2 72
|
||||
#define GPIOY_3 73
|
||||
#define GPIOY_4 74
|
||||
#define GPIOY_5 75
|
||||
#define GPIOY_6 76
|
||||
#define GPIOY_7 77
|
||||
#define GPIOY_8 78
|
||||
#define GPIOY_9 79
|
||||
#define GPIOY_10 80
|
||||
#define GPIOY_11 81
|
||||
#define GPIOY_12 82
|
||||
#define GPIOY_13 83
|
||||
#define GPIOY_14 84
|
||||
#define GPIOY_15 85
|
||||
|
||||
#endif /* _DT_BINDINGS_MESONAXG_GPIO_H */
|
||||
Reference in New Issue
Block a user