drivers/pinctrl/nomadik/pinctrl-ab8500.c

Source file repositories/reference/linux-study-clean/drivers/pinctrl/nomadik/pinctrl-ab8500.c

File Facts

System
Linux kernel
Corpus path
drivers/pinctrl/nomadik/pinctrl-ab8500.c
Extension
.c
Size
22110 bytes
Lines
484
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-only
/*
 * Copyright (C) ST-Ericsson SA 2012
 *
 * Author: Patrice Chotard <patrice.chotard@stericsson.com> for ST-Ericsson.
 */

#include <linux/kernel.h>
#include <linux/pinctrl/pinctrl.h>

#include <linux/mfd/abx500/ab8500.h>

#include "pinctrl-abx500.h"

/* All the pins that can be used for GPIO and some other functions */
#define ABX500_GPIO(offset)		(offset)

#define AB8500_PIN_T10		ABX500_GPIO(1)
#define AB8500_PIN_T9		ABX500_GPIO(2)
#define AB8500_PIN_U9		ABX500_GPIO(3)
#define AB8500_PIN_W2		ABX500_GPIO(4)
/* hole */
#define AB8500_PIN_Y18		ABX500_GPIO(6)
#define AB8500_PIN_AA20		ABX500_GPIO(7)
#define AB8500_PIN_W18		ABX500_GPIO(8)
#define AB8500_PIN_AA19		ABX500_GPIO(9)
#define AB8500_PIN_U17		ABX500_GPIO(10)
#define AB8500_PIN_AA18		ABX500_GPIO(11)
#define AB8500_PIN_U16		ABX500_GPIO(12)
#define AB8500_PIN_W17		ABX500_GPIO(13)
#define AB8500_PIN_F14		ABX500_GPIO(14)
#define AB8500_PIN_B17		ABX500_GPIO(15)
#define AB8500_PIN_F15		ABX500_GPIO(16)
#define AB8500_PIN_P5		ABX500_GPIO(17)
#define AB8500_PIN_R5		ABX500_GPIO(18)
#define AB8500_PIN_U5		ABX500_GPIO(19)
#define AB8500_PIN_T5		ABX500_GPIO(20)
#define AB8500_PIN_H19		ABX500_GPIO(21)
#define AB8500_PIN_G20		ABX500_GPIO(22)
#define AB8500_PIN_G19		ABX500_GPIO(23)
#define AB8500_PIN_T14		ABX500_GPIO(24)
#define AB8500_PIN_R16		ABX500_GPIO(25)
#define AB8500_PIN_M16		ABX500_GPIO(26)
#define AB8500_PIN_J6		ABX500_GPIO(27)
#define AB8500_PIN_K6		ABX500_GPIO(28)
#define AB8500_PIN_G6		ABX500_GPIO(29)
#define AB8500_PIN_H6		ABX500_GPIO(30)
#define AB8500_PIN_F5		ABX500_GPIO(31)
#define AB8500_PIN_G5		ABX500_GPIO(32)
/* hole */
#define AB8500_PIN_R17		ABX500_GPIO(34)
#define AB8500_PIN_W15		ABX500_GPIO(35)
#define AB8500_PIN_A17		ABX500_GPIO(36)
#define AB8500_PIN_E15		ABX500_GPIO(37)
#define AB8500_PIN_C17		ABX500_GPIO(38)
#define AB8500_PIN_E16		ABX500_GPIO(39)
#define AB8500_PIN_T19		ABX500_GPIO(40)
#define AB8500_PIN_U19		ABX500_GPIO(41)
#define AB8500_PIN_U2		ABX500_GPIO(42)

/* indicates the highest GPIO number */
#define AB8500_GPIO_MAX_NUMBER	42

/*
 * The names of the pins are denoted by GPIO number and ball name, even
 * though they can be used for other things than GPIO, this is the first
 * column in the table of the data sheet and often used on schematics and
 * such.
 */
static const struct pinctrl_pin_desc ab8500_pins[] = {
	PINCTRL_PIN(AB8500_PIN_T10, "GPIO1_T10"),
	PINCTRL_PIN(AB8500_PIN_T9, "GPIO2_T9"),
	PINCTRL_PIN(AB8500_PIN_U9, "GPIO3_U9"),
	PINCTRL_PIN(AB8500_PIN_W2, "GPIO4_W2"),
	/* hole */
	PINCTRL_PIN(AB8500_PIN_Y18, "GPIO6_Y18"),
	PINCTRL_PIN(AB8500_PIN_AA20, "GPIO7_AA20"),
	PINCTRL_PIN(AB8500_PIN_W18, "GPIO8_W18"),
	PINCTRL_PIN(AB8500_PIN_AA19, "GPIO9_AA19"),
	PINCTRL_PIN(AB8500_PIN_U17, "GPIO10_U17"),
	PINCTRL_PIN(AB8500_PIN_AA18, "GPIO11_AA18"),
	PINCTRL_PIN(AB8500_PIN_U16, "GPIO12_U16"),
	PINCTRL_PIN(AB8500_PIN_W17, "GPIO13_W17"),
	PINCTRL_PIN(AB8500_PIN_F14, "GPIO14_F14"),
	PINCTRL_PIN(AB8500_PIN_B17, "GPIO15_B17"),
	PINCTRL_PIN(AB8500_PIN_F15, "GPIO16_F15"),
	PINCTRL_PIN(AB8500_PIN_P5, "GPIO17_P5"),
	PINCTRL_PIN(AB8500_PIN_R5, "GPIO18_R5"),
	PINCTRL_PIN(AB8500_PIN_U5, "GPIO19_U5"),
	PINCTRL_PIN(AB8500_PIN_T5, "GPIO20_T5"),

Annotation

Implementation Notes