drivers/pinctrl/vt8500/pinctrl-wm8505.c

Source file repositories/reference/linux-study-clean/drivers/pinctrl/vt8500/pinctrl-wm8505.c

File Facts

System
Linux kernel
Corpus path
drivers/pinctrl/vt8500/pinctrl-wm8505.c
Extension
.c
Size
15816 bytes
Lines
511
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
/*
 * Pinctrl data for Wondermedia WM8505 SoC
 *
 * Copyright (c) 2013 Tony Prisk <linux@prisktech.co.nz>
 */

#include <linux/io.h>
#include <linux/init.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/platform_device.h>
#include <linux/slab.h>

#include "pinctrl-wmt.h"

/*
 * Describe the register offsets within the GPIO memory space
 * The dedicated external GPIO's should always be listed in bank 0
 * so they are exported in the 0..31 range which is what users
 * expect.
 *
 * Do not reorder these banks as it will change the pin numbering
 */
static const struct wmt_pinctrl_bank_registers wm8505_banks[] = {
	WMT_PINCTRL_BANK(0x64, 0x8C, 0xB4, 0xDC, NO_REG, NO_REG),	/* 0 */
	WMT_PINCTRL_BANK(0x40, 0x68, 0x90, 0xB8, NO_REG, NO_REG),	/* 1 */
	WMT_PINCTRL_BANK(0x44, 0x6C, 0x94, 0xBC, NO_REG, NO_REG),	/* 2 */
	WMT_PINCTRL_BANK(0x48, 0x70, 0x98, 0xC0, NO_REG, NO_REG),	/* 3 */
	WMT_PINCTRL_BANK(0x4C, 0x74, 0x9C, 0xC4, NO_REG, NO_REG),	/* 4 */
	WMT_PINCTRL_BANK(0x50, 0x78, 0xA0, 0xC8, NO_REG, NO_REG),	/* 5 */
	WMT_PINCTRL_BANK(0x54, 0x7C, 0xA4, 0xD0, NO_REG, NO_REG),	/* 6 */
	WMT_PINCTRL_BANK(0x58, 0x80, 0xA8, 0xD4, NO_REG, NO_REG),	/* 7 */
	WMT_PINCTRL_BANK(0x5C, 0x84, 0xAC, 0xD8, NO_REG, NO_REG),	/* 8 */
	WMT_PINCTRL_BANK(0x60, 0x88, 0xB0, 0xDC, NO_REG, NO_REG),	/* 9 */
	WMT_PINCTRL_BANK(0x500, 0x504, 0x508, 0x50C, NO_REG, NO_REG),	/* 10 */
};

/* Please keep sorted by bank/bit */
#define WMT_PIN_EXTGPIO0	WMT_PIN(0, 0)
#define WMT_PIN_EXTGPIO1	WMT_PIN(0, 1)
#define WMT_PIN_EXTGPIO2	WMT_PIN(0, 2)
#define WMT_PIN_EXTGPIO3	WMT_PIN(0, 3)
#define WMT_PIN_EXTGPIO4	WMT_PIN(0, 4)
#define WMT_PIN_EXTGPIO5	WMT_PIN(0, 5)
#define WMT_PIN_EXTGPIO6	WMT_PIN(0, 6)
#define WMT_PIN_EXTGPIO7	WMT_PIN(0, 7)
#define WMT_PIN_WAKEUP0		WMT_PIN(0, 16)
#define WMT_PIN_WAKEUP1		WMT_PIN(0, 17)
#define WMT_PIN_WAKEUP2		WMT_PIN(0, 18)
#define WMT_PIN_WAKEUP3		WMT_PIN(0, 19)
#define WMT_PIN_SUSGPIO0	WMT_PIN(0, 21)
#define WMT_PIN_SDDATA0		WMT_PIN(1, 0)
#define WMT_PIN_SDDATA1		WMT_PIN(1, 1)
#define WMT_PIN_SDDATA2		WMT_PIN(1, 2)
#define WMT_PIN_SDDATA3		WMT_PIN(1, 3)
#define WMT_PIN_MMCDATA0	WMT_PIN(1, 4)
#define WMT_PIN_MMCDATA1	WMT_PIN(1, 5)
#define WMT_PIN_MMCDATA2	WMT_PIN(1, 6)
#define WMT_PIN_MMCDATA3	WMT_PIN(1, 7)
#define WMT_PIN_VDIN0		WMT_PIN(2, 0)
#define WMT_PIN_VDIN1		WMT_PIN(2, 1)
#define WMT_PIN_VDIN2		WMT_PIN(2, 2)
#define WMT_PIN_VDIN3		WMT_PIN(2, 3)
#define WMT_PIN_VDIN4		WMT_PIN(2, 4)
#define WMT_PIN_VDIN5		WMT_PIN(2, 5)
#define WMT_PIN_VDIN6		WMT_PIN(2, 6)
#define WMT_PIN_VDIN7		WMT_PIN(2, 7)
#define WMT_PIN_VDOUT0		WMT_PIN(2, 8)
#define WMT_PIN_VDOUT1		WMT_PIN(2, 9)
#define WMT_PIN_VDOUT2		WMT_PIN(2, 10)
#define WMT_PIN_VDOUT3		WMT_PIN(2, 11)
#define WMT_PIN_VDOUT4		WMT_PIN(2, 12)
#define WMT_PIN_VDOUT5		WMT_PIN(2, 13)
#define WMT_PIN_VDOUT6		WMT_PIN(2, 14)
#define WMT_PIN_VDOUT7		WMT_PIN(2, 15)
#define WMT_PIN_VDOUT8		WMT_PIN(2, 16)
#define WMT_PIN_VDOUT9		WMT_PIN(2, 17)
#define WMT_PIN_VDOUT10		WMT_PIN(2, 18)
#define WMT_PIN_VDOUT11		WMT_PIN(2, 19)
#define WMT_PIN_VDOUT12		WMT_PIN(2, 20)
#define WMT_PIN_VDOUT13		WMT_PIN(2, 21)
#define WMT_PIN_VDOUT14		WMT_PIN(2, 22)
#define WMT_PIN_VDOUT15		WMT_PIN(2, 23)
#define WMT_PIN_VDOUT16		WMT_PIN(2, 24)
#define WMT_PIN_VDOUT17		WMT_PIN(2, 25)
#define WMT_PIN_VDOUT18		WMT_PIN(2, 26)
#define WMT_PIN_VDOUT19		WMT_PIN(2, 27)
#define WMT_PIN_VDOUT20		WMT_PIN(2, 28)
#define WMT_PIN_VDOUT21		WMT_PIN(2, 29)
#define WMT_PIN_VDOUT22		WMT_PIN(2, 30)

Annotation

Implementation Notes