drivers/media/platform/qcom/camss/camss.h
Source file repositories/reference/linux-study-clean/drivers/media/platform/qcom/camss/camss.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/media/platform/qcom/camss/camss.h- Extension
.h- Size
- 4551 bytes
- Lines
- 184
- Domain
- Driver Families
- Bucket
- drivers/media
- 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.
- 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.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/device.hlinux/types.hmedia/v4l2-async.hmedia/v4l2-device.hmedia/v4l2-subdev.hmedia/media-device.hmedia/media-entity.hcamss-csid.hcamss-csiphy.hcamss-ispif.hcamss-tpg.hcamss-vfe.hcamss-format.h
Detected Declarations
struct camss_subdev_resourcesstruct icc_bw_tblstruct resources_iccstruct resources_wrapperstruct camss_resourcesstruct camssstruct camss_camera_interfacestruct camss_async_subdevstruct camss_clockstruct parent_dev_opsenum pm_domainenum camss_versionenum icc_count
Annotated Snippet
struct camss_subdev_resources {
struct regulator_bulk_data regulators[CAMSS_RES_MAX];
char *clock[CAMSS_RES_MAX];
char *clock_for_reset[CAMSS_RES_MAX];
u32 clock_rate[CAMSS_RES_MAX][CAMSS_RES_MAX];
char *reg[CAMSS_RES_MAX];
char *interrupt[CAMSS_RES_MAX];
union {
struct csiphy_subdev_resources csiphy;
struct tpg_subdev_resources tpg;
struct csid_subdev_resources csid;
struct vfe_subdev_resources vfe;
};
};
struct icc_bw_tbl {
u32 avg;
u32 peak;
};
struct resources_icc {
char *name;
struct icc_bw_tbl icc_bw_tbl;
};
struct resources_wrapper {
char *reg;
};
enum pm_domain {
PM_DOMAIN_VFE0 = 0,
PM_DOMAIN_VFE1 = 1,
PM_DOMAIN_VFELITE = 2, /* VFELITE / TOP GDSC */
};
enum camss_version {
CAMSS_660,
CAMSS_2290,
CAMSS_6150,
CAMSS_6350,
CAMSS_7280,
CAMSS_8x16,
CAMSS_8x39,
CAMSS_8x53,
CAMSS_8x96,
CAMSS_8250,
CAMSS_8280XP,
CAMSS_8300,
CAMSS_845,
CAMSS_8550,
CAMSS_8650,
CAMSS_8775P,
CAMSS_X1E80100,
};
enum icc_count {
ICC_DEFAULT_COUNT = 0,
ICC_SM8250_COUNT = 4,
};
struct camss_resources {
enum camss_version version;
const char *pd_name;
const struct camss_subdev_resources *csiphy_res;
const struct camss_subdev_resources *tpg_res;
const struct camss_subdev_resources *csid_res;
const struct camss_subdev_resources *ispif_res;
const struct camss_subdev_resources *vfe_res;
const struct resources_wrapper *csid_wrapper_res;
const struct resources_icc *icc_res;
const unsigned int icc_path_num;
const unsigned int csiphy_num;
const unsigned int tpg_num;
const unsigned int csid_num;
const unsigned int vfe_num;
};
struct camss {
struct v4l2_device v4l2_dev;
struct v4l2_async_notifier notifier;
struct media_device media_dev;
struct device *dev;
struct csiphy_device *csiphy;
struct tpg_device *tpg;
struct csid_device *csid;
struct ispif_device *ispif;
struct vfe_device *vfe;
void __iomem *csid_wrapper_base;
atomic_t ref_count;
int genpd_num;
Annotation
- Immediate include surface: `linux/device.h`, `linux/types.h`, `media/v4l2-async.h`, `media/v4l2-device.h`, `media/v4l2-subdev.h`, `media/media-device.h`, `media/media-entity.h`, `camss-csid.h`.
- Detected declarations: `struct camss_subdev_resources`, `struct icc_bw_tbl`, `struct resources_icc`, `struct resources_wrapper`, `struct camss_resources`, `struct camss`, `struct camss_camera_interface`, `struct camss_async_subdev`, `struct camss_clock`, `struct parent_dev_ops`.
- Atlas domain: Driver Families / drivers/media.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.