media: qcom: camss: Flag CSID-lites to support more CSIDs
Some platforms such as SC7280 have 3 CSIDs and 2 CSID-lites but current code has hardcoded 2 as the maximum number of CSIDs. Remove the hardcoded maximum number of VFEs to handle all possible combinations of CSIDs and CSID-lites. Signed-off-by: Matti Lehtimäki <matti.lehtimaki@gmail.com> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
6997278ae5
commit
801ca0e7f9
@ -21,7 +21,6 @@
|
||||
* interface support. As a result of that it has an
|
||||
* alternate register layout.
|
||||
*/
|
||||
#define IS_LITE (csid->id >= 2 ? 1 : 0)
|
||||
|
||||
#define CSID_HW_VERSION 0x0
|
||||
#define HW_VERSION_STEPPING 0
|
||||
@ -35,13 +34,13 @@
|
||||
#define CSID_CSI2_RX_IRQ_MASK 0x24
|
||||
#define CSID_CSI2_RX_IRQ_CLEAR 0x28
|
||||
|
||||
#define CSID_CSI2_RDIN_IRQ_STATUS(rdi) ((IS_LITE ? 0x30 : 0x40) \
|
||||
#define CSID_CSI2_RDIN_IRQ_STATUS(rdi) ((csid_is_lite(csid) ? 0x30 : 0x40) \
|
||||
+ 0x10 * (rdi))
|
||||
#define CSID_CSI2_RDIN_IRQ_MASK(rdi) ((IS_LITE ? 0x34 : 0x44) \
|
||||
#define CSID_CSI2_RDIN_IRQ_MASK(rdi) ((csid_is_lite(csid) ? 0x34 : 0x44) \
|
||||
+ 0x10 * (rdi))
|
||||
#define CSID_CSI2_RDIN_IRQ_CLEAR(rdi) ((IS_LITE ? 0x38 : 0x48) \
|
||||
#define CSID_CSI2_RDIN_IRQ_CLEAR(rdi) ((csid_is_lite(csid) ? 0x38 : 0x48) \
|
||||
+ 0x10 * (rdi))
|
||||
#define CSID_CSI2_RDIN_IRQ_SET(rdi) ((IS_LITE ? 0x3C : 0x4C) \
|
||||
#define CSID_CSI2_RDIN_IRQ_SET(rdi) ((csid_is_lite(csid) ? 0x3C : 0x4C) \
|
||||
+ 0x10 * (rdi))
|
||||
|
||||
#define CSID_TOP_IRQ_STATUS 0x70
|
||||
@ -73,7 +72,7 @@
|
||||
#define CGC_MODE_DYNAMIC_GATING 0
|
||||
#define CGC_MODE_ALWAYS_ON 1
|
||||
|
||||
#define CSID_RDI_CFG0(rdi) ((IS_LITE ? 0x200 : 0x300) \
|
||||
#define CSID_RDI_CFG0(rdi) ((csid_is_lite(csid) ? 0x200 : 0x300) \
|
||||
+ 0x100 * (rdi))
|
||||
#define RDI_CFG0_BYTE_CNTR_EN 0
|
||||
#define RDI_CFG0_FORMAT_MEASURE_EN 1
|
||||
@ -98,32 +97,32 @@
|
||||
#define RDI_CFG0_PACKING_FORMAT 30
|
||||
#define RDI_CFG0_ENABLE 31
|
||||
|
||||
#define CSID_RDI_CFG1(rdi) ((IS_LITE ? 0x204 : 0x304)\
|
||||
#define CSID_RDI_CFG1(rdi) ((csid_is_lite(csid) ? 0x204 : 0x304)\
|
||||
+ 0x100 * (rdi))
|
||||
#define RDI_CFG1_TIMESTAMP_STB_SEL 0
|
||||
|
||||
#define CSID_RDI_CTRL(rdi) ((IS_LITE ? 0x208 : 0x308)\
|
||||
#define CSID_RDI_CTRL(rdi) ((csid_is_lite(csid) ? 0x208 : 0x308)\
|
||||
+ 0x100 * (rdi))
|
||||
#define RDI_CTRL_HALT_CMD 0
|
||||
#define HALT_CMD_HALT_AT_FRAME_BOUNDARY 0
|
||||
#define HALT_CMD_RESUME_AT_FRAME_BOUNDARY 1
|
||||
#define RDI_CTRL_HALT_MODE 2
|
||||
|
||||
#define CSID_RDI_FRM_DROP_PATTERN(rdi) ((IS_LITE ? 0x20C : 0x30C)\
|
||||
#define CSID_RDI_FRM_DROP_PATTERN(rdi) ((csid_is_lite(csid) ? 0x20C : 0x30C)\
|
||||
+ 0x100 * (rdi))
|
||||
#define CSID_RDI_FRM_DROP_PERIOD(rdi) ((IS_LITE ? 0x210 : 0x310)\
|
||||
#define CSID_RDI_FRM_DROP_PERIOD(rdi) ((csid_is_lite(csid) ? 0x210 : 0x310)\
|
||||
+ 0x100 * (rdi))
|
||||
#define CSID_RDI_IRQ_SUBSAMPLE_PATTERN(rdi) ((IS_LITE ? 0x214 : 0x314)\
|
||||
#define CSID_RDI_IRQ_SUBSAMPLE_PATTERN(rdi) ((csid_is_lite(csid) ? 0x214 : 0x314)\
|
||||
+ 0x100 * (rdi))
|
||||
#define CSID_RDI_IRQ_SUBSAMPLE_PERIOD(rdi) ((IS_LITE ? 0x218 : 0x318)\
|
||||
#define CSID_RDI_IRQ_SUBSAMPLE_PERIOD(rdi) ((csid_is_lite(csid) ? 0x218 : 0x318)\
|
||||
+ 0x100 * (rdi))
|
||||
#define CSID_RDI_RPP_PIX_DROP_PATTERN(rdi) ((IS_LITE ? 0x224 : 0x324)\
|
||||
#define CSID_RDI_RPP_PIX_DROP_PATTERN(rdi) ((csid_is_lite(csid) ? 0x224 : 0x324)\
|
||||
+ 0x100 * (rdi))
|
||||
#define CSID_RDI_RPP_PIX_DROP_PERIOD(rdi) ((IS_LITE ? 0x228 : 0x328)\
|
||||
#define CSID_RDI_RPP_PIX_DROP_PERIOD(rdi) ((csid_is_lite(csid) ? 0x228 : 0x328)\
|
||||
+ 0x100 * (rdi))
|
||||
#define CSID_RDI_RPP_LINE_DROP_PATTERN(rdi) ((IS_LITE ? 0x22C : 0x32C)\
|
||||
#define CSID_RDI_RPP_LINE_DROP_PATTERN(rdi) ((csid_is_lite(csid) ? 0x22C : 0x32C)\
|
||||
+ 0x100 * (rdi))
|
||||
#define CSID_RDI_RPP_LINE_DROP_PERIOD(rdi) ((IS_LITE ? 0x230 : 0x330)\
|
||||
#define CSID_RDI_RPP_LINE_DROP_PERIOD(rdi) ((csid_is_lite(csid) ? 0x230 : 0x330)\
|
||||
+ 0x100 * (rdi))
|
||||
|
||||
#define CSID_TPG_CTRL 0x600
|
||||
|
@ -896,3 +896,8 @@ void msm_csid_unregister_entity(struct csid_device *csid)
|
||||
media_entity_cleanup(&csid->subdev.entity);
|
||||
v4l2_ctrl_handler_free(&csid->ctrls);
|
||||
}
|
||||
|
||||
inline bool csid_is_lite(struct csid_device *csid)
|
||||
{
|
||||
return csid->camss->res->csid_res[csid->id].is_lite;
|
||||
}
|
||||
|
@ -215,5 +215,12 @@ extern const struct csid_hw_ops csid_ops_4_1;
|
||||
extern const struct csid_hw_ops csid_ops_4_7;
|
||||
extern const struct csid_hw_ops csid_ops_gen2;
|
||||
|
||||
/*
|
||||
* csid_is_lite - Check if CSID is CSID lite.
|
||||
* @csid: CSID Device
|
||||
*
|
||||
* Return whether CSID is CSID lite
|
||||
*/
|
||||
bool csid_is_lite(struct csid_device *csid);
|
||||
|
||||
#endif /* QC_MSM_CAMSS_CSID_H */
|
||||
|
@ -638,6 +638,7 @@ static const struct camss_subdev_resources csid_res_845[] = {
|
||||
{ 384000000 } },
|
||||
.reg = { "csid2" },
|
||||
.interrupt = { "csid2" },
|
||||
.is_lite = true,
|
||||
.ops = &csid_ops_gen2
|
||||
}
|
||||
};
|
||||
@ -812,6 +813,7 @@ static const struct camss_subdev_resources csid_res_8250[] = {
|
||||
{ 0 } },
|
||||
.reg = { "csid2" },
|
||||
.interrupt = { "csid2" },
|
||||
.is_lite = true,
|
||||
.ops = &csid_ops_gen2
|
||||
},
|
||||
/* CSID3 */
|
||||
@ -824,6 +826,7 @@ static const struct camss_subdev_resources csid_res_8250[] = {
|
||||
{ 0 } },
|
||||
.reg = { "csid3" },
|
||||
.interrupt = { "csid3" },
|
||||
.is_lite = true,
|
||||
.ops = &csid_ops_gen2
|
||||
}
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user