drivers/pinctrl/samsung/pinctrl-samsung.h

Source file repositories/reference/linux-study-clean/drivers/pinctrl/samsung/pinctrl-samsung.h

File Facts

System
Linux kernel
Corpus path
drivers/pinctrl/samsung/pinctrl-samsung.h
Extension
.h
Size
15343 bytes
Lines
412
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

struct samsung_pin_bank_type {
	u8 fld_width[PINCFG_TYPE_NUM];
	u8 reg_offset[PINCFG_TYPE_NUM];
};

/**
 * struct samsung_pin_bank_data: represent a controller pin-bank (init data).
 * @type: type of the bank (register offsets and bitfield widths)
 * @pctl_offset: starting offset of the pin-bank registers.
 * @pctl_res_idx: index of base address for pin-bank registers.
 * @nr_pins: number of pins included in this bank.
 * @eint_func: function to set in CON register to configure pin as EINT.
 * @eint_type: type of the external interrupt supported by the bank.
 * @eint_mask: bit mask of pins which support EINT function.
 * @eint_offset: SoC-specific EINT register or interrupt offset of bank.
 * @eint_num: total number of eint pins.
 * @eint_con_offset: ExynosAuto SoC-specific EINT control register offset of bank.
 * @eint_mask_offset: ExynosAuto SoC-specific EINT mask register offset of bank.
 * @eint_pend_offset: ExynosAuto SoC-specific EINT pend register offset of bank.
 * @eint_fltcon_offset: GS101 SoC-specific EINT filter config register offset.
 * @name: name to be prefixed for each pin in this pin bank.
 */
struct samsung_pin_bank_data {
	const struct samsung_pin_bank_type *type;
	u32		pctl_offset;
	u8		pctl_res_idx;
	u8		nr_pins;
	u8		eint_func;
	enum eint_type	eint_type;
	u32		eint_mask;
	u32		eint_offset;
	u32		eint_num;
	u32		eint_con_offset;
	u32		eint_mask_offset;
	u32		eint_pend_offset;
	u32		eint_fltcon_offset;
	const char	*name;
};

/**
 * struct samsung_pin_bank: represent a controller pin-bank.
 * @type: type of the bank (register offsets and bitfield widths)
 * @pctl_base: base address of the pin-bank registers
 * @pctl_offset: starting offset of the pin-bank registers.
 * @nr_pins: number of pins included in this bank.
 * @eint_base: base address of the pin-bank EINT registers.
 * @eint_func: function to set in CON register to configure pin as EINT.
 * @eint_type: type of the external interrupt supported by the bank.
 * @eint_mask: bit mask of pins which support EINT function.
 * @eint_offset: SoC-specific EINT register or interrupt offset of bank.
 * @eint_num: total number of eint pins.
 * @eint_con_offset: ExynosAuto SoC-specific EINT register or interrupt offset of bank.
 * @eint_mask_offset: ExynosAuto SoC-specific EINT mask register offset of bank.
 * @eint_pend_offset: ExynosAuto SoC-specific EINT pend register offset of bank.
 * @eint_fltcon_offset: GS101 SoC-specific EINT filter config register offset.
 * @name: name to be prefixed for each pin in this pin bank.
 * @id: id of the bank, propagated to the pin range.
 * @pin_base: starting pin number of the bank.
 * @soc_priv: per-bank private data for SoC-specific code.
 * @of_node: OF node of the bank.
 * @drvdata: link to controller driver data
 * @irq_domain: IRQ domain of the bank.
 * @gpio_chip: GPIO chip of the bank.
 * @grange: linux gpio pin range supported by this bank.
 * @irq_chip: link to irq chip for external gpio and wakeup interrupts.
 * @slock: spinlock protecting bank registers
 * @pm_save: saved register values during suspend
 */
struct samsung_pin_bank {
	const struct samsung_pin_bank_type *type;
	void __iomem	*pctl_base;
	u32		pctl_offset;
	u8		nr_pins;
	void __iomem	*eint_base;
	u8		eint_func;
	enum eint_type	eint_type;
	u32		eint_mask;
	u32		eint_offset;
	u32		eint_num;
	u32		eint_con_offset;
	u32		eint_mask_offset;
	u32		eint_pend_offset;
	u32		eint_fltcon_offset;
	const char	*name;
	u32		id;

	u32		pin_base;
	void		*soc_priv;
	struct fwnode_handle *fwnode;
	struct samsung_pinctrl_drv_data *drvdata;

Annotation

Implementation Notes