Patch "media: rcar-csi2: Correct the selection of hsfreqrange" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    media: rcar-csi2: Correct the selection of hsfreqrange

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     media-rcar-csi2-correct-the-selection-of-hsfreqrange.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit faa5b30a5098731bb77047d1d5137b54b6d4000f
Author: Suresh Udipi <sudipi@xxxxxxxxxxxxxx>
Date:   Fri Aug 13 17:07:54 2021 +0200

    media: rcar-csi2: Correct the selection of hsfreqrange
    
    [ Upstream commit cee44d4fbacbbdfe62697ec94e76c6e4f726c5df ]
    
    hsfreqrange should be chosen based on the calculated mbps which
    is closer to the default bit rate  and within the range as per
    table[1]. But current calculation always selects first value which
    is greater than or equal to the calculated mbps which may lead
    to chosing a wrong range in some cases.
    
    For example for 360 mbps for H3/M3N
    Existing logic selects
    Calculated value 360Mbps : Default 400Mbps Range [368.125 -433.125 mbps]
    
    This hsfreqrange is out of range.
    
    The logic is changed to get the default value which is closest to the
    calculated value [1]
    
    Calculated value 360Mbps : Default 350Mbps  Range [320.625 -380.625 mpbs]
    
    [1] specs r19uh0105ej0200-r-car-3rd-generation.pdf [Table 25.9]
    
    Please note that According to Renesas in Table 25.9 the range for
    220 default value is corrected as below
    
     |Range (Mbps)     |  Default  Bit rate (Mbps) |
     -----------------------------------------------
     | 197.125-244.125 |     220                   |
     -----------------------------------------------
    
    Fixes: 769afd212b16 ("media: rcar-csi2: add Renesas R-Car MIPI CSI-2 receiver driver")
    Signed-off-by: Suresh Udipi <sudipi@xxxxxxxxxxxxxx>
    Signed-off-by: Kazuyoshi Akiyama <akiyama@xxxxxxxxxxxxx>
    Signed-off-by: Michael Rodin <mrodin@xxxxxxxxxxxxxx>
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/media/platform/rcar-vin/rcar-csi2.c b/drivers/media/platform/rcar-vin/rcar-csi2.c
index d2d87a204e918..6fb8efcb40444 100644
--- a/drivers/media/platform/rcar-vin/rcar-csi2.c
+++ b/drivers/media/platform/rcar-vin/rcar-csi2.c
@@ -436,16 +436,23 @@ static int rcsi2_wait_phy_start(struct rcar_csi2 *priv,
 static int rcsi2_set_phypll(struct rcar_csi2 *priv, unsigned int mbps)
 {
 	const struct rcsi2_mbps_reg *hsfreq;
+	const struct rcsi2_mbps_reg *hsfreq_prev = NULL;
 
-	for (hsfreq = priv->info->hsfreqrange; hsfreq->mbps != 0; hsfreq++)
+	for (hsfreq = priv->info->hsfreqrange; hsfreq->mbps != 0; hsfreq++) {
 		if (hsfreq->mbps >= mbps)
 			break;
+		hsfreq_prev = hsfreq;
+	}
 
 	if (!hsfreq->mbps) {
 		dev_err(priv->dev, "Unsupported PHY speed (%u Mbps)", mbps);
 		return -ERANGE;
 	}
 
+	if (hsfreq_prev &&
+	    ((mbps - hsfreq_prev->mbps) <= (hsfreq->mbps - mbps)))
+		hsfreq = hsfreq_prev;
+
 	rcsi2_write(priv, PHYPLL_REG, PHYPLL_HSFREQRANGE(hsfreq->reg));
 
 	return 0;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux