STRUCT ROCKCHIP_PIN_BANK(9)
πΈ NAME πΈ
okay bestie, welcome to the struct rockchip_pin_bank(9) page from the Kernel API Manual β and yes, the whole NAME section is literally just struct rockchip_pin_bank, dash included, no extra lore. iconic mysterious behavior, honestly π
β¨ SYNOPSIS β¨
hereβs the struct in all its glory β code is verbatim, donβt come for me:
struct rockchip_pin_bank {
struct device *dev;
void __iomem *reg_base;
struct regmap *regmap_pull;
struct regmap *regmap_ioc;
struct clk *clk;
struct clk *db_clk;
int irq;
u32 saved_masks;
u32 pin_base;
u8 nr_pins;
char *name;
u8 bank_num;
struct rockchip_iomux iomux[4];
struct rockchip_drv drv[4];
enum rockchip_pin_pull_type pull_type[4];
bool valid;
struct device_node *of_node;
struct rockchip_pinctrl *drvdata;
struct irq_domain *domain;
struct gpio_chip gpio_chip;
struct pinctrl_gpio_range grange;
raw_spinlock_t slock;
const struct rockchip_gpio_regs *gpio_regs;
u32 gpio_type;
u32 toggle_edge_mode;
u32 recalced_mask;
u32 route_mask;
struct list_head deferred_pins;
struct mutex deferred_lock;
};
π Members π
okay so every member gets its little moment, as it should π«Ά
devβ the pinctrl device bind to the bank.reg_baseβ register base of the gpio bank.regmap_pullβ optional separate register for additional pull settings.regmap_iocβ optional per-bank IO control regmap, for SoCs where each bank has its own IOC block.clkβ clock of the gpio bank.db_clkβ clock of the gpio debounce.irqβ interrupt of the gpio bank.saved_masksβ saved content ofGPIO_INTENat suspend time.pin_baseβ first pin number.nr_pinsβ number of pins in this bank.nameβ name of the bank.bank_numβ number of the bank, to account for holes.iomuxβ array describing the 4 iomux sources of the bank.drvβ array describing the 4 drive strength sources of the bank.pull_typeβ array describing the 4 pull type sources of the bank.validβ is all necessary information present.of_nodeβ dt node of this bank.drvdataβ common pinctrl basedata.domainβ irqdomain of the gpio bank.gpio_chipβ gpiolib chip.grangeβ gpio range.slockβ spinlock for the gpio bank.toggle_edge_modeβ bit mask to toggle (falling/rising) edge mode.recalced_maskβ bit mask to indicate a need to recalulate the mask. (pageβs spelling, not mine π)route_maskβ bits describing the routing pins of per bank.deferred_lockβ mutex for thedeferred_outputshared btw gpio and pinctrl.
also chilling in the synopsis but not given a member blurb on this page: gpio_regs, gpio_type, and deferred_pins. Iβm not gonna invent descriptions for them π
π SEE ALSO π
go look at these if youβre deep in the pinctrl lore:
- Kernel file
./drivers/pinctrl/pinctrl-rockchip.h struct rockchip_gpio_regs(9)struct rockchip_iomux(9)struct rockchip_drv(9)struct rockchip_mux_recalced_data(9)struct rockchip_pin_group(9)struct rockchip_pmx_func(9)
okay bye bestie β source/version: ./drivers/pinctrl, date: October 2026, manual: struct rockchip_pin_bank(9). slay π
β¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms