drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c
Source file repositories/reference/linux-study-clean/drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c
File Facts
- System
- Linux kernel
- Corpus path
drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c- Extension
.c- Size
- 23599 bytes
- Lines
- 916
- Domain
- Driver Families
- Bucket
- drivers/gpu
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/bitfield.hlinux/bits.hlinux/clk.hlinux/delay.hlinux/math.hlinux/media-bus-format.hlinux/mfd/syscon.hlinux/module.hlinux/of.hlinux/phy/phy.hlinux/phy/phy-mipi-dphy.hlinux/platform_device.hlinux/regmap.hdrm/bridge/dw_mipi_dsi.hdrm/drm_bridge.hdrm/drm_mipi_dsi.hdrm/drm_modes.h
Detected Declarations
struct imx93_dsistruct dphy_pll_cfgstruct dphy_pll_vco_propstruct dphy_pll_hsfreqrangestruct hsttfunction dphy_pll_writefunction data_rate_to_foutfunction dphy_pll_get_configure_from_optsfunction dphy_pll_clear_shadowfunction dphy_pll_get_cfgclkrangefunction dphy_pll_get_hsfreqrangefunction dphy_pll_get_vcofunction dphy_pll_get_propfunction dphy_pll_updatefunction dphy_pll_configurefunction dphy_pll_clear_regfunction dphy_pll_initfunction dphy_pll_uninitfunction dphy_pll_power_offfunction imx93_dsi_get_phy_configure_optsfunction imx93_dsi_validate_modefunction imx93_dsi_validate_phyfunction imx93_dsi_mode_validfunction imx93_dsi_mode_fixupfunction imx93_dsi_phy_initfunction imx93_dsi_phy_power_offfunction imx93_dsi_get_lane_mbpsfunction imx93_dsi_phy_get_timingfunction imx93_dsi_host_attachfunction imx93_dsi_probefunction imx93_dsi_remove
Annotated Snippet
struct imx93_dsi {
struct device *dev;
struct regmap *regmap;
struct clk *clk_pixel;
struct clk *clk_ref;
struct clk *clk_cfg;
struct dw_mipi_dsi *dmd;
struct dw_mipi_dsi_plat_data pdata;
union phy_configure_opts phy_cfg;
unsigned long ref_clk_rate;
u32 format;
};
struct dphy_pll_cfg {
u32 m; /* PLL Feedback Multiplication Ratio */
u32 n; /* PLL Input Frequency Division Ratio */
};
struct dphy_pll_vco_prop {
unsigned long max_fout;
u8 vco_cntl;
u8 prop_cntl;
};
struct dphy_pll_hsfreqrange {
unsigned long max_mbps;
u8 hsfreqrange;
};
/* DPHY Databook Table 3-13 Charge-pump Programmability */
static const struct dphy_pll_vco_prop vco_prop_map[] = {
{ 55, 0x3f, 0x0d },
{ 82, 0x37, 0x0d },
{ 110, 0x2f, 0x0d },
{ 165, 0x27, 0x0d },
{ 220, 0x1f, 0x0d },
{ 330, 0x17, 0x0d },
{ 440, 0x0f, 0x0d },
{ 660, 0x07, 0x0d },
{ 1149, 0x03, 0x0d },
{ 1152, 0x01, 0x0d },
{ 1250, 0x01, 0x0e },
};
/* DPHY Databook Table 5-7 Frequency Ranges and Defaults */
static const struct dphy_pll_hsfreqrange hsfreqrange_map[] = {
{ 89, 0x00 },
{ 99, 0x10 },
{ 109, 0x20 },
{ 119, 0x30 },
{ 129, 0x01 },
{ 139, 0x11 },
{ 149, 0x21 },
{ 159, 0x31 },
{ 169, 0x02 },
{ 179, 0x12 },
{ 189, 0x22 },
{ 204, 0x32 },
{ 219, 0x03 },
{ 234, 0x13 },
{ 249, 0x23 },
{ 274, 0x33 },
{ 299, 0x04 },
{ 324, 0x14 },
{ 349, 0x25 },
{ 399, 0x35 },
{ 449, 0x05 },
{ 499, 0x16 },
{ 549, 0x26 },
{ 599, 0x37 },
{ 649, 0x07 },
{ 699, 0x18 },
{ 749, 0x28 },
{ 799, 0x39 },
{ 849, 0x09 },
{ 899, 0x19 },
{ 949, 0x29 },
{ 999, 0x3a },
{ 1049, 0x0a },
{ 1099, 0x1a },
{ 1149, 0x2a },
{ 1199, 0x3b },
{ 1249, 0x0b },
{ 1299, 0x1b },
{ 1349, 0x2b },
{ 1399, 0x3c },
{ 1449, 0x0c },
{ 1499, 0x1c },
{ 1549, 0x2c },
{ 1599, 0x3d },
Annotation
- Immediate include surface: `linux/bitfield.h`, `linux/bits.h`, `linux/clk.h`, `linux/delay.h`, `linux/math.h`, `linux/media-bus-format.h`, `linux/mfd/syscon.h`, `linux/module.h`.
- Detected declarations: `struct imx93_dsi`, `struct dphy_pll_cfg`, `struct dphy_pll_vco_prop`, `struct dphy_pll_hsfreqrange`, `struct hstt`, `function dphy_pll_write`, `function data_rate_to_fout`, `function dphy_pll_get_configure_from_opts`, `function dphy_pll_clear_shadow`, `function dphy_pll_get_cfgclkrange`.
- Atlas domain: Driver Families / drivers/gpu.
- Implementation status: source implementation candidate.
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.