drivers/pinctrl/berlin/berlin-bg4ct.c

Source file repositories/reference/linux-study-clean/drivers/pinctrl/berlin/berlin-bg4ct.c

File Facts

System
Linux kernel
Corpus path
drivers/pinctrl/berlin/berlin-bg4ct.c
Extension
.c
Size
22855 bytes
Lines
488
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
/*
 * Marvell berlin4ct pinctrl driver
 *
 * Copyright (C) 2015 Marvell Technology Group Ltd.
 *
 * Author: Jisheng Zhang <jszhang@marvell.com>
 */

#include <linux/init.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/property.h>
#include <linux/regmap.h>

#include "berlin.h"

static const struct berlin_desc_group berlin4ct_soc_pinctrl_groups[] = {
	BERLIN_PINCTRL_GROUP("EMMC_RSTn", 0x0, 0x3, 0x00,
			BERLIN_PINCTRL_FUNCTION(0x0, "emmc"), /* RSTn */
			BERLIN_PINCTRL_FUNCTION(0x1, "gpio")), /* GPIO47 */
	BERLIN_PINCTRL_GROUP("NAND_IO0", 0x0, 0x3, 0x03,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* IO0 */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* RXD0 */
			BERLIN_PINCTRL_FUNCTION(0x2, "sd1"), /* CLK */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO0 */
	BERLIN_PINCTRL_GROUP("NAND_IO1", 0x0, 0x3, 0x06,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* IO1 */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* RXD1 */
			BERLIN_PINCTRL_FUNCTION(0x2, "sd1"), /* CDn */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO1 */
	BERLIN_PINCTRL_GROUP("NAND_IO2", 0x0, 0x3, 0x09,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* IO2 */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* RXD2 */
			BERLIN_PINCTRL_FUNCTION(0x2, "sd1"), /* DAT0 */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO2 */
	BERLIN_PINCTRL_GROUP("NAND_IO3", 0x0, 0x3, 0x0c,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* IO3 */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* RXD3 */
			BERLIN_PINCTRL_FUNCTION(0x2, "sd1"), /* DAT1 */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO3 */
	BERLIN_PINCTRL_GROUP("NAND_IO4", 0x0, 0x3, 0x0f,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* IO4 */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* RXC */
			BERLIN_PINCTRL_FUNCTION(0x2, "sd1"), /* DAT2 */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO4 */
	BERLIN_PINCTRL_GROUP("NAND_IO5", 0x0, 0x3, 0x12,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* IO5 */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* RXCTL */
			BERLIN_PINCTRL_FUNCTION(0x2, "sd1"), /* DAT3 */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO5 */
	BERLIN_PINCTRL_GROUP("NAND_IO6", 0x0, 0x3, 0x15,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* IO6 */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* MDC */
			BERLIN_PINCTRL_FUNCTION(0x2, "sd1"), /* CMD */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO6 */
	BERLIN_PINCTRL_GROUP("NAND_IO7", 0x0, 0x3, 0x18,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* IO7 */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* MDIO */
			BERLIN_PINCTRL_FUNCTION(0x2, "sd1"), /* WP */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO7 */
	BERLIN_PINCTRL_GROUP("NAND_ALE", 0x0, 0x3, 0x1b,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* ALE */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* TXD0 */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO8 */
	BERLIN_PINCTRL_GROUP("NAND_CLE", 0x4, 0x3, 0x00,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* CLE */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* TXD1 */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO9 */
	BERLIN_PINCTRL_GROUP("NAND_WEn", 0x4, 0x3, 0x03,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* WEn */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* TXD2 */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO10 */
	BERLIN_PINCTRL_GROUP("NAND_REn", 0x4, 0x3, 0x06,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* REn */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* TXD3 */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO11 */
	BERLIN_PINCTRL_GROUP("NAND_WPn", 0x4, 0x3, 0x09,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* WPn */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO12 */
	BERLIN_PINCTRL_GROUP("NAND_CEn", 0x4, 0x3, 0x0c,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* CEn */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* TXC */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO13 */
	BERLIN_PINCTRL_GROUP("NAND_RDY", 0x4, 0x3, 0x0f,
			BERLIN_PINCTRL_FUNCTION(0x0, "nand"), /* RDY */
			BERLIN_PINCTRL_FUNCTION(0x1, "rgmii"), /* TXCTL */
			BERLIN_PINCTRL_FUNCTION(0x3, "gpio")), /* GPIO14 */
	BERLIN_PINCTRL_GROUP("SD0_CLK", 0x4, 0x3, 0x12,
			BERLIN_PINCTRL_FUNCTION(0x0, "gpio"), /* GPIO29 */

Annotation

Implementation Notes