drivers/pinctrl/mvebu/pinctrl-armada-39x.c

Source file repositories/reference/linux-study-clean/drivers/pinctrl/mvebu/pinctrl-armada-39x.c

File Facts

System
Linux kernel
Corpus path
drivers/pinctrl/mvebu/pinctrl-armada-39x.c
Extension
.c
Size
19844 bytes
Lines
411
Domain
Driver Families
Bucket
drivers/pinctrl
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Marvell Armada 39x pinctrl driver based on mvebu pinctrl core
 *
 * Copyright (C) 2015 Marvell
 *
 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 */

#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/platform_device.h>
#include <linux/of.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/property.h>

#include "pinctrl-mvebu.h"

enum {
	V_88F6920 = BIT(0),
	V_88F6925 = BIT(1),
	V_88F6928 = BIT(2),
	V_88F6920_PLUS = (V_88F6920 | V_88F6925 | V_88F6928),
	V_88F6925_PLUS = (V_88F6925 | V_88F6928),
};

static struct mvebu_mpp_mode armada_39x_mpp_modes[] = {
	MPP_MODE(0,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(1, "ua0",     "rxd",      V_88F6920_PLUS)),
	MPP_MODE(1,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(1, "ua0",     "txd",      V_88F6920_PLUS)),
	MPP_MODE(2,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(1, "i2c0",    "sck",      V_88F6920_PLUS)),
	MPP_MODE(3,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(1, "i2c0",    "sda",      V_88F6920_PLUS)),
	MPP_MODE(4,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(2, "ua1",     "txd",      V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(3, "ua0",     "rts",      V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "smi",     "mdc",      V_88F6920_PLUS)),
	MPP_MODE(5,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(2, "ua1",     "rxd",      V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(3, "ua0",     "cts",      V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "smi",     "mdio",     V_88F6920_PLUS)),
	MPP_MODE(6,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "cs3",      V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "xsmi",    "mdio",     V_88F6920_PLUS)),
	MPP_MODE(7,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "ad9",      V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "xsmi",    "mdc",      V_88F6920_PLUS)),
	MPP_MODE(8,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "ad10",     V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "ptp",     "trig",     V_88F6920_PLUS)),
	MPP_MODE(9,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "ad11",     V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "ptp",     "clk",      V_88F6920_PLUS)),
	MPP_MODE(10,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "ad12",     V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "ptp",     "evreq",    V_88F6920_PLUS)),
	MPP_MODE(11,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "ad13",     V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "led",     "clk",      V_88F6920_PLUS)),
	MPP_MODE(12,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(2, "pcie0",   "rstout",   V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "ad14",     V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "led",     "stb",      V_88F6920_PLUS)),
	MPP_MODE(13,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "ad15",     V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(6, "pcie2",   "clkreq",   V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "led",     "data",     V_88F6920_PLUS)),
	MPP_MODE(14,
		 MPP_VAR_FUNCTION(0, "gpio",    NULL,       V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(3, "dram",    "vttctrl",  V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(5, "dev",     "we1",      V_88F6920_PLUS),
		 MPP_VAR_FUNCTION(7, "ua1",     "txd",      V_88F6920_PLUS)),
	MPP_MODE(15,

Annotation

Implementation Notes