Skip to content

Commit c94bcb8

Browse files
ngphibangkartben
authored andcommitted
drivers: video: mipi_csi2rx: Fix type range related to pixel rate
Fix some type range related to pixel rate which can cause overflow. Signed-off-by: Phi Bang Nguyen <phibang.nguyen@nxp.com>
1 parent a1e58ac commit c94bcb8

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

drivers/video/video_mcux_mipi_csi2rx.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ struct mipi_csi2rx_data {
3737
};
3838

3939
struct mipi_csi2rx_tHsSettleEscClk_config {
40-
uint64_t pixel_rate;
40+
uint32_t pixel_rate;
4141
uint8_t tHsSettle_EscClk;
4242
};
4343

@@ -193,29 +193,32 @@ static int mipi_csi2rx_get_frmival(const struct device *dev, struct video_frmiva
193193
return video_get_frmival(config->sensor_dev, frmival);
194194
}
195195

196-
static uint64_t mipi_csi2rx_cal_frame_size(const struct video_format *fmt)
196+
static uint32_t mipi_csi2rx_cal_frame_size(const struct video_format *fmt)
197197
{
198198
return fmt->height * fmt->width * video_bits_per_pixel(fmt->pixelformat);
199199
}
200200

201-
static uint64_t mipi_csi2rx_estimate_pixel_rate(const struct video_frmival *cur_fmival,
201+
static uint32_t mipi_csi2rx_estimate_pixel_rate(const struct video_frmival *cur_fmival,
202202
const struct video_frmival *fie_frmival,
203203
const struct video_format *cur_format,
204204
const struct video_format *fie_format,
205-
uint64_t cur_pixel_rate, uint8_t laneNum)
205+
uint32_t cur_pixel_rate, uint8_t laneNum)
206206
{
207-
return mipi_csi2rx_cal_frame_size(cur_format) * fie_frmival->denominator *
208-
cur_fmival->numerator * cur_pixel_rate /
209-
(mipi_csi2rx_cal_frame_size(fie_format) * fie_frmival->numerator *
210-
cur_fmival->denominator);
207+
uint64_t numerator = mipi_csi2rx_cal_frame_size(cur_format) * fie_frmival->denominator *
208+
cur_fmival->numerator * cur_pixel_rate;
209+
210+
uint64_t denominator = mipi_csi2rx_cal_frame_size(fie_format) * fie_frmival->numerator *
211+
cur_fmival->denominator;
212+
213+
return numerator / denominator;
211214
}
212215

213216
static int mipi_csi2rx_enum_frmival(const struct device *dev, struct video_frmival_enum *fie)
214217
{
215218
const struct mipi_csi2rx_config *config = dev->config;
216219
struct mipi_csi2rx_data *drv_data = dev->data;
217220
int ret;
218-
uint64_t est_pixel_rate;
221+
uint32_t est_pixel_rate;
219222
struct video_frmival cur_frmival;
220223
struct video_format cur_fmt;
221224
struct video_control sensor_rate = {.id = VIDEO_CID_PIXEL_RATE, .val64 = -1};

0 commit comments

Comments
 (0)