Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
c87ad49
FROMLIST: media: qcom: camss: csiphy: Introduce PHY configuration
okias Jun 9, 2026
43456be
FROMLIST: media: qcom: camss: csiphy-3ph: Use odd bits for configurin…
okias Jun 9, 2026
18f128c
FROMLIST: media: qcom: camss: Prepare CSID for C-PHY support
okias Jun 9, 2026
46a3f63
FROMLIST: media: qcom: camss: Initialize lanes after lane configurati…
phodina Jun 9, 2026
e6d93b3
FROMLIST: media: qcom: camss: csiphy-3ph: Add Gen2 v1.1 MIPI CSI-2 CP…
kcxt Jun 9, 2026
a99f587
FROMLIST: media: qcom: camss: csiphy-3ph: Update Gen2 v1.1 MIPI CSI-2…
okias Jun 9, 2026
c2d53a3
FROMLIST: media: qcom: camss: csiphy-3ph: Add Gen2 v1.2.1 MIPI CSI-2 …
lweiss-fairphone Jun 9, 2026
08a8545
FROMLIST: media: qcom: camss: csiphy-3ph: C-PHY needs own lane config…
okias Jun 9, 2026
8f4d8af
FROMLIST: media: qcom: camss: Account for C-PHY when calculating link…
okias Jun 9, 2026
ff0dc30
PENDING: media: qcom: camss: Program common control register
jigarz Jun 9, 2026
59c31cc
PENDING: media: qcom: camss: Prepare CSID for C-PHY support in gen3
jigarz Jun 9, 2026
120b36a
PENDING: media: qcom: camss: Add sa8775p C-PHY 3ph lane config
jigarz Jun 9, 2026
3c9956e
PENDING: media: qcom: camss: Add CAMSS_8300 C-PHY support
aarunnan Jun 9, 2026
0f4181f
PENDING: media: qcom: camss: Dynamic data-rate specific C-PHY registe…
aarunnan Jun 9, 2026
adb6a91
PENDING: media: qcom: camss: validate local/remote endpoint bus-type
aarunnan Jun 23, 2026
2720b27
Merge branch 'qcom-6.18.y' into cphy_rb3g2_rb4_rb8
aarunnan Jun 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions drivers/media/platform/qcom/camss/camss-csid-gen2.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ static void __csid_configure_rx(struct csid_device *csid,
val = (lane_cnt - 1) << CSI2_RX_CFG0_NUM_ACTIVE_LANES;
val |= phy->lane_assign << CSI2_RX_CFG0_DL0_INPUT_SEL;
val |= phy->csiphy_id << CSI2_RX_CFG0_PHY_NUM_SEL;
val |= csid->phy.cphy << CSI2_RX_CFG0_PHY_TYPE_SEL;
writel_relaxed(val, csid->base + CSID_CSI2_RX_CFG0);

val = 1 << CSI2_RX_CFG1_PACKET_ECC_CORRECTION_EN;
Expand Down
2 changes: 2 additions & 0 deletions drivers/media/platform/qcom/camss/camss-csid-gen3.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@
#define CSI2_RX_CFG0_VC_MODE 3
#define CSI2_RX_CFG0_DL0_INPUT_SEL 4
#define CSI2_RX_CFG0_PHY_NUM_SEL 20
#define CSI2_RX_CFG0_PHY_TYPE_SEL 24
#define CSI2_RX_CFG0_TPG_MUX_EN BIT(27)
#define CSI2_RX_CFG0_TPG_MUX_SEL GENMASK(29, 28)

Expand Down Expand Up @@ -115,6 +116,7 @@ static void __csid_configure_rx(struct csid_device *csid,

camss = csid->camss;
val = (phy->lane_cnt - 1) << CSI2_RX_CFG0_NUM_ACTIVE_LANES;
val |= phy->cphy << CSI2_RX_CFG0_PHY_TYPE_SEL;
val |= phy->lane_assign << CSI2_RX_CFG0_DL0_INPUT_SEL;

if (camss->tpg && csid->tpg_linked &&
Expand Down
10 changes: 6 additions & 4 deletions drivers/media/platform/qcom/camss/camss-csid.c
Original file line number Diff line number Diff line change
Expand Up @@ -536,18 +536,19 @@ const struct csid_format_info *csid_get_fmt_entry(const struct csid_format_info
* csid_set_clock_rates - Calculate and set clock rates on CSID module
* @csiphy: CSID device
*/
static int csid_set_clock_rates(struct csid_device *csid)
static int csid_set_clock_rates(struct v4l2_subdev *sd, struct csid_device *csid)
{
struct device *dev = csid->camss->dev;
struct csiphy_device *csiphy = &csid->camss->csiphy[csid->phy.csiphy_id];
struct csiphy_lanes_cfg *lane_cfg = &csiphy->cfg.csi2->lane_cfg;
const struct csid_format_info *fmt;
s64 link_freq;
int i, j;
int ret;

fmt = csid_get_fmt_entry(csid->res->formats->formats, csid->res->formats->nformats,
csid->fmt[MSM_CSIPHY_PAD_SINK].code);
link_freq = camss_get_link_freq(&csid->subdev.entity, fmt->bpp,
csid->phy.lane_cnt);
link_freq = camss_get_link_freq(&csid->subdev.entity, fmt->bpp, lane_cfg);
if (link_freq < 0)
link_freq = 0;

Expand Down Expand Up @@ -705,7 +706,7 @@ static int csid_set_power(struct v4l2_subdev *sd, int on)
return ret;
}

ret = csid_set_clock_rates(csid);
ret = csid_set_clock_rates(sd, csid);
if (ret < 0) {
regulator_bulk_disable(csid->num_supplies,
csid->supplies);
Expand Down Expand Up @@ -1290,6 +1291,7 @@ static int csid_link_setup(struct media_entity *entity,
csid->phy.csiphy_id = csiphy->id;

lane_cfg = &csiphy->cfg.csi2->lane_cfg;
csid->phy.cphy = (lane_cfg->phy_cfg == V4L2_MBUS_CSI2_CPHY);
csid->phy.lane_cnt = lane_cfg->num_data;
csid->phy.lane_assign = csid_get_lane_assign(lane_cfg, lane_cfg->num_data);
csid->tpg_linked = false;
Expand Down
1 change: 1 addition & 0 deletions drivers/media/platform/qcom/camss/camss-csid.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ struct csid_phy_config {
u32 lane_assign;
u32 en_vc;
u8 need_vc_update;
bool cphy;
};

struct csid_device;
Expand Down
8 changes: 5 additions & 3 deletions drivers/media/platform/qcom/camss/camss-csiphy-2ph-1-0.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,9 @@ static u8 csiphy_settle_cnt_calc(s64 link_freq, u32 timer_clk_rate)
return settle_cnt;
}

static void csiphy_lanes_enable(struct csiphy_device *csiphy,
struct csiphy_config *cfg,
s64 link_freq, u8 lane_mask)
static int csiphy_lanes_enable(struct csiphy_device *csiphy,
struct csiphy_config *cfg,
s64 link_freq, u8 lane_mask)
{
struct csiphy_lanes_cfg *c = &cfg->csi2->lane_cfg;
u8 settle_cnt;
Expand Down Expand Up @@ -132,6 +132,8 @@ static void csiphy_lanes_enable(struct csiphy_device *csiphy,
writel_relaxed(0x3f, csiphy->base +
CAMSS_CSI_PHY_INTERRUPT_CLEARn(l));
}

return 0;
}

static void csiphy_lanes_disable(struct csiphy_device *csiphy,
Expand Down
Loading