brintos

brintos / linux-shallow public Read only

0
0
Text · 3.4 KiB · 6d121be Raw
106 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (c) 2020 Yangtao Li <frank@allwinnertech.com>4 *5 * Based on:6 * huangshuosheng <huangshuosheng@allwinnertech.com>7 */8 9#include <linux/module.h>10#include <linux/of.h>11#include <linux/pinctrl/pinctrl.h>12#include <linux/platform_device.h>13 14#include "pinctrl-sunxi.h"15 16static const struct sunxi_desc_pin a100_r_pins[] = {17	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 0),18		  SUNXI_FUNCTION(0x0, "gpio_in"),19		  SUNXI_FUNCTION(0x1, "gpio_out"),20		  SUNXI_FUNCTION(0x2, "s_i2c0"),	/* SCK */21		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 0)),22	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 1),23		  SUNXI_FUNCTION(0x0, "gpio_in"),24		  SUNXI_FUNCTION(0x1, "gpio_out"),25		  SUNXI_FUNCTION(0x2, "s_i2c0"),	/* SDA */26		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 1)),27	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 2),28		  SUNXI_FUNCTION(0x0, "gpio_in"),29		  SUNXI_FUNCTION(0x1, "gpio_out"),30		  SUNXI_FUNCTION(0x2, "s_uart0"),	/* TX */31		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 2)),32	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 3),33		  SUNXI_FUNCTION(0x0, "gpio_in"),34		  SUNXI_FUNCTION(0x1, "gpio_out"),35		  SUNXI_FUNCTION(0x2, "s_uart0"),	/* RX */36		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 3)),37	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 4),38		  SUNXI_FUNCTION(0x0, "gpio_in"),39		  SUNXI_FUNCTION(0x1, "gpio_out"),40		  SUNXI_FUNCTION(0x2, "s_jtag"),	/* MS */41		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 4)),42	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 5),43		  SUNXI_FUNCTION(0x0, "gpio_in"),44		  SUNXI_FUNCTION(0x1, "gpio_out"),45		  SUNXI_FUNCTION(0x2, "s_jtag"),	/* CK */46		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 5)),47	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 6),48		  SUNXI_FUNCTION(0x0, "gpio_in"),49		  SUNXI_FUNCTION(0x1, "gpio_out"),50		  SUNXI_FUNCTION(0x2, "s_jtag"),	/* DO */51		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 6)),52	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 7),53		  SUNXI_FUNCTION(0x0, "gpio_in"),54		  SUNXI_FUNCTION(0x1, "gpio_out"),55		  SUNXI_FUNCTION(0x2, "s_jtag"),	/* DI */56		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 7)),57	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 8),58		  SUNXI_FUNCTION(0x0, "gpio_in"),59		  SUNXI_FUNCTION(0x1, "gpio_out"),60		  SUNXI_FUNCTION(0x2, "s_i2c1"),	/* SCK */61		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 8)),62	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 9),63		  SUNXI_FUNCTION(0x0, "gpio_in"),64		  SUNXI_FUNCTION(0x1, "gpio_out"),65		  SUNXI_FUNCTION(0x2, "s_i2c1"),	/* SDA */66		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 9)),67	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 10),68		  SUNXI_FUNCTION(0x0, "gpio_in"),69		  SUNXI_FUNCTION(0x1, "gpio_out"),70		  SUNXI_FUNCTION(0x2, "s_pwm"),71		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 10)),72	SUNXI_PIN(SUNXI_PINCTRL_PIN(L, 11),73		  SUNXI_FUNCTION(0x0, "gpio_in"),74		  SUNXI_FUNCTION(0x1, "gpio_out"),75		  SUNXI_FUNCTION(0x3, "s_cir"),		/* IN */76		  SUNXI_FUNCTION_IRQ_BANK(0x6, 0, 11)),77};78 79static const struct sunxi_pinctrl_desc a100_r_pinctrl_data = {80	.pins = a100_r_pins,81	.npins = ARRAY_SIZE(a100_r_pins),82	.pin_base = PL_BASE,83	.irq_banks = 1,84	.io_bias_cfg_variant = BIAS_VOLTAGE_PIO_POW_MODE_CTL,85};86 87static int a100_r_pinctrl_probe(struct platform_device *pdev)88{89	return sunxi_pinctrl_init(pdev, &a100_r_pinctrl_data);90}91 92static const struct of_device_id a100_r_pinctrl_match[] = {93	{ .compatible = "allwinner,sun50i-a100-r-pinctrl", },94	{}95};96MODULE_DEVICE_TABLE(of, a100_r_pinctrl_match);97 98static struct platform_driver a100_r_pinctrl_driver = {99	.probe	= a100_r_pinctrl_probe,100	.driver	= {101		.name		= "sun50i-a100-r-pinctrl",102		.of_match_table	= a100_r_pinctrl_match,103	},104};105module_platform_driver(a100_r_pinctrl_driver);106