mirror of
https://github.com/torvalds/linux.git
synced 2026-10-07 19:16:02 +02:00
media: rzg2l-cru: Remove channel member from struct rzg2l_cru_csi
Remove the CSI virtual channel number from `struct rzg2l_cru_csi`. Instead, pass the CSI virtual channel number as an argument to `rzg2l_cru_csi2_setup()`. Suggested-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Link: https://lore.kernel.org/r/20241018133446.223516-8-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
This commit is contained in:
parent
d7d72dae81
commit
c7f3bd38b5
|
|
@ -72,7 +72,6 @@ static int rzg2l_cru_group_notify_complete(struct v4l2_async_notifier *notifier)
|
|||
source->name, sink->name);
|
||||
return ret;
|
||||
}
|
||||
cru->csi.channel = 0;
|
||||
cru->ip.remote = cru->csi.subdev;
|
||||
|
||||
/* Create media device link between CRU IP <-> CRU OUTPUT */
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@ enum rzg2l_cru_dma_state {
|
|||
struct rzg2l_cru_csi {
|
||||
struct v4l2_async_connection *asd;
|
||||
struct v4l2_subdev *subdev;
|
||||
u32 channel;
|
||||
};
|
||||
|
||||
struct rzg2l_cru_ip {
|
||||
|
|
|
|||
|
|
@ -301,7 +301,7 @@ static void rzg2l_cru_initialize_axi(struct rzg2l_cru_dev *cru)
|
|||
}
|
||||
|
||||
static void rzg2l_cru_csi2_setup(struct rzg2l_cru_dev *cru, bool *input_is_yuv,
|
||||
struct v4l2_mbus_framefmt *ip_sd_fmt)
|
||||
struct v4l2_mbus_framefmt *ip_sd_fmt, u8 csi_vc)
|
||||
{
|
||||
u32 icnmc;
|
||||
|
||||
|
|
@ -319,19 +319,20 @@ static void rzg2l_cru_csi2_setup(struct rzg2l_cru_dev *cru, bool *input_is_yuv,
|
|||
icnmc |= (rzg2l_cru_read(cru, ICnMC) & ~ICnMC_INF_MASK);
|
||||
|
||||
/* Set virtual channel CSI2 */
|
||||
icnmc |= ICnMC_VCSEL(cru->csi.channel);
|
||||
icnmc |= ICnMC_VCSEL(csi_vc);
|
||||
|
||||
rzg2l_cru_write(cru, ICnMC, icnmc);
|
||||
}
|
||||
|
||||
static int rzg2l_cru_initialize_image_conv(struct rzg2l_cru_dev *cru,
|
||||
struct v4l2_mbus_framefmt *ip_sd_fmt)
|
||||
struct v4l2_mbus_framefmt *ip_sd_fmt,
|
||||
u8 csi_vc)
|
||||
{
|
||||
bool output_is_yuv = false;
|
||||
bool input_is_yuv = false;
|
||||
u32 icndmr;
|
||||
|
||||
rzg2l_cru_csi2_setup(cru, &input_is_yuv, ip_sd_fmt);
|
||||
rzg2l_cru_csi2_setup(cru, &input_is_yuv, ip_sd_fmt, csi_vc);
|
||||
|
||||
/* Output format */
|
||||
switch (cru->format.pixelformat) {
|
||||
|
|
@ -466,12 +467,13 @@ int rzg2l_cru_start_image_processing(struct rzg2l_cru_dev *cru)
|
|||
{
|
||||
struct v4l2_mbus_framefmt *fmt = rzg2l_cru_ip_get_src_fmt(cru);
|
||||
unsigned long flags;
|
||||
u8 csi_vc;
|
||||
int ret;
|
||||
|
||||
ret = rzg2l_cru_get_virtual_channel(cru);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
cru->csi.channel = ret;
|
||||
csi_vc = ret;
|
||||
|
||||
spin_lock_irqsave(&cru->qlock, flags);
|
||||
|
||||
|
|
@ -489,7 +491,7 @@ int rzg2l_cru_start_image_processing(struct rzg2l_cru_dev *cru)
|
|||
rzg2l_cru_initialize_axi(cru);
|
||||
|
||||
/* Initialize image convert */
|
||||
ret = rzg2l_cru_initialize_image_conv(cru, fmt);
|
||||
ret = rzg2l_cru_initialize_image_conv(cru, fmt, csi_vc);
|
||||
if (ret) {
|
||||
spin_unlock_irqrestore(&cru->qlock, flags);
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user