mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
media: qcom: camss: vfe: Make PIX BPL alignment format-based on CAMSS_2290
Split the VFE bytes-per-line (BPL) alignment logic into separate helpers for RDI and PIX paths. RDI is usually aligned on RDI write engine bus constraint such as 64-bit or 128-bit. But PIX engine is usually (at least on platform I looked at) based on pixel format. On CAMSS_2290, PIX BPL alignment is set to 0 to indicate that the alignment must be derived from the pixel format. This allows the pipeline to use camss_format_get_bpl_alignment(). For other platforms, retain the legacy PIX default (16 bytes), until PIX is properly tested/enabled. A future improvement would be to remove platform-specific conditionals from the VFE code and move the alignment requirements into the per-platform VFE resource data. Signed-off-by: Loic Poulain <loic.poulain@oss.qualcomm.com> Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> [bod: Fixed straggling newlines] Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
This commit is contained in:
parent
ac437a96b7
commit
e458c14072
|
|
@ -1998,7 +1998,7 @@ static const struct media_entity_operations vfe_media_ops = {
|
|||
.link_validate = v4l2_subdev_link_validate,
|
||||
};
|
||||
|
||||
static int vfe_bpl_align(struct vfe_device *vfe)
|
||||
static int vfe_bpl_align_rdi(struct vfe_device *vfe)
|
||||
{
|
||||
int ret = 8;
|
||||
|
||||
|
|
@ -2023,6 +2023,24 @@ static int vfe_bpl_align(struct vfe_device *vfe)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int vfe_bpl_align_pix(struct vfe_device *vfe)
|
||||
{
|
||||
int ret = 16;
|
||||
|
||||
switch (vfe->camss->res->version) {
|
||||
case CAMSS_2290:
|
||||
/* The alignment/bpl depends solely on the pixel format and is
|
||||
* computed dynamically in camss_format_get_bpl_alignment().
|
||||
*/
|
||||
ret = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* msm_vfe_register_entities - Register subdev node for VFE module
|
||||
* @vfe: VFE device
|
||||
|
|
@ -2089,11 +2107,12 @@ int msm_vfe_register_entities(struct vfe_device *vfe,
|
|||
}
|
||||
|
||||
video_out->ops = &vfe->video_ops;
|
||||
video_out->bpl_alignment = vfe_bpl_align(vfe);
|
||||
video_out->line_based = 0;
|
||||
if (i == VFE_LINE_PIX) {
|
||||
video_out->bpl_alignment = 16;
|
||||
video_out->bpl_alignment = vfe_bpl_align_pix(vfe);
|
||||
video_out->line_based = 1;
|
||||
} else {
|
||||
video_out->bpl_alignment = vfe_bpl_align_rdi(vfe);
|
||||
video_out->line_based = 0;
|
||||
}
|
||||
|
||||
video_out->nformats = vfe->line[i].nformats;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user