drivers/pmdomain/mediatek/mtk-pm-domains.h

Source file repositories/reference/linux-study-clean/drivers/pmdomain/mediatek/mtk-pm-domains.h

File Facts

System
Linux kernel
Corpus path
drivers/pmdomain/mediatek/mtk-pm-domains.h
Extension
.h
Size
6702 bytes
Lines
215
Domain
Driver Families
Bucket
drivers/pmdomain
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 scpsys_bus_prot_data {
	u8 bus_prot_block;
	u8 bus_prot_sta_block;
	u32 bus_prot_set_clr_mask;
	u32 bus_prot_set;
	u32 bus_prot_clr;
	u32 bus_prot_sta_mask;
	u32 bus_prot_sta;
	u8 flags;
};

/**
 * enum scpsys_rtff_type - Type of RTFF Hardware for power domain
 * @SCPSYS_RTFF_NONE:          RTFF HW not present or domain not RTFF managed
 * @SCPSYS_RTFF_TYPE_GENERIC:  Non-CPU, peripheral-generic RTFF HW
 * @SCPSYS_RTFF_TYPE_PCIE_PHY: PCI-Express PHY specific RTFF HW
 * @SCPSYS_RTFF_TYPE_STOR_UFS: Storage (UFS) specific RTFF HW
 * @SCPSYS_RTFF_TYPE_MAX:      Number of supported RTFF HW Types
 */
enum scpsys_rtff_type {
	SCPSYS_RTFF_NONE = 0,
	SCPSYS_RTFF_TYPE_GENERIC,
	SCPSYS_RTFF_TYPE_PCIE_PHY,
	SCPSYS_RTFF_TYPE_STOR_UFS,
	SCPSYS_RTFF_TYPE_MAX
};

/**
 * enum scpsys_mtcmos_type - Type of power domain controller
 * @SCPSYS_MTCMOS_TYPE_DIRECT_CTL: Power domains are controlled with direct access
 * @SCPSYS_MTCMOS_TYPE_HW_VOTER:   Hardware-assisted voted power domain control
 * @SCPSYS_MTCMOS_TYPE_MAX:        Number of supported power domain types
 */
enum scpsys_mtcmos_type {
	SCPSYS_MTCMOS_TYPE_DIRECT_CTL = 0,
	SCPSYS_MTCMOS_TYPE_HW_VOTER,
	SCPSYS_MTCMOS_TYPE_MAX
};

/**
 * struct scpsys_domain_data - scp domain data for power on/off flow
 * @name: The name of the power domain.
 * @sta_mask: The mask for power on/off status bit.
 * @sta2nd_mask: The mask for second power on/off status bit.
 * @ctl_offs: The offset for main power control register.
 * @sram_pdn_bits: The mask for sram power control bits.
 * @sram_pdn_ack_bits: The mask for sram power control acked bits.
 * @ext_buck_iso_offs: The offset for external buck isolation
 * @ext_buck_iso_mask: The mask for external buck isolation
 * @caps: The flag for active wake-up action.
 * @rtff_type: The power domain RTFF HW type
 * @bp_cfg: bus protection configuration for any subsystem
 */
struct scpsys_domain_data {
	const char *name;
	u32 sta_mask;
	u32 sta2nd_mask;
	int ctl_offs;
	u32 sram_pdn_bits;
	u32 sram_pdn_ack_bits;
	int ext_buck_iso_offs;
	u32 ext_buck_iso_mask;
	u16 caps;
	enum scpsys_rtff_type rtff_type;
	const struct scpsys_bus_prot_data bp_cfg[SPM_MAX_BUS_PROT_DATA];
	int pwr_sta_offs;
	int pwr_sta2nd_offs;
};

/**
 * struct scpsys_hwv_domain_data - Hardware Voter power domain data
 * @name:       Name of the power domain
 * @set:        Offset of the HWV SET register
 * @clr:        Offset of the HWV CLEAR register
 * @done:       Offset of the HWV DONE register
 * @en:         Offset of the HWV ENABLE register
 * @set_sta:    Offset of the HWV SET STATUS register
 * @clr_sta:    Offset of the HWV CLEAR STATUS register
 * @setclr_bit: The SET/CLR bit to enable/disable the power domain
 * @sta_bit:    The SET/CLR STA bit to check for on/off ACK
 * @caps:       The flag for active wake-up action
 */
struct scpsys_hwv_domain_data {
	const char *name;
	u16 set;
	u16 clr;
	u16 done;
	u16 en;
	u16 set_sta;
	u16 clr_sta;

Annotation

Implementation Notes