Skip to content

Commit f995594

Browse files
committed
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 <[email protected]>
1 parent 5161ed9 commit f995594

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

@@ -202,21 +202,24 @@ static int mipi_csi2rx_get_frmival(const struct device *dev, enum video_endpoint
202202
return video_get_frmival(config->sensor_dev, ep, frmival);
203203
}
204204

205-
static uint64_t mipi_csi2rx_cal_frame_size(const struct video_format *fmt)
205+
static uint32_t mipi_csi2rx_cal_frame_size(const struct video_format *fmt)
206206
{
207207
return fmt->height * fmt->width * video_bits_per_pixel(fmt->pixelformat);
208208
}
209209

210-
static uint64_t mipi_csi2rx_estimate_pixel_rate(const struct video_frmival *cur_fmival,
210+
static uint32_t mipi_csi2rx_estimate_pixel_rate(const struct video_frmival *cur_fmival,
211211
const struct video_frmival *fie_frmival,
212212
const struct video_format *cur_format,
213213
const struct video_format *fie_format,
214-
uint64_t cur_pixel_rate, uint8_t laneNum)
214+
uint32_t cur_pixel_rate, uint8_t laneNum)
215215
{
216-
return mipi_csi2rx_cal_frame_size(cur_format) * fie_frmival->denominator *
217-
cur_fmival->numerator * cur_pixel_rate /
218-
(mipi_csi2rx_cal_frame_size(fie_format) * fie_frmival->numerator *
219-
cur_fmival->denominator);
216+
uint64_t numerator = mipi_csi2rx_cal_frame_size(cur_format) * fie_frmival->denominator *
217+
cur_fmival->numerator * cur_pixel_rate;
218+
219+
uint64_t denominator = mipi_csi2rx_cal_frame_size(fie_format) * fie_frmival->numerator *
220+
cur_fmival->denominator;
221+
222+
return numerator / denominator;
220223
}
221224

222225
static int mipi_csi2rx_enum_frmival(const struct device *dev, enum video_endpoint_id ep,
@@ -225,7 +228,7 @@ static int mipi_csi2rx_enum_frmival(const struct device *dev, enum video_endpoin
225228
const struct mipi_csi2rx_config *config = dev->config;
226229
struct mipi_csi2rx_data *drv_data = dev->data;
227230
int ret;
228-
uint64_t est_pixel_rate;
231+
uint32_t est_pixel_rate;
229232
struct video_frmival cur_frmival;
230233
struct video_format cur_fmt;
231234
struct video_control sensor_rate = {.id = VIDEO_CID_PIXEL_RATE, .val64 = -1};

0 commit comments

Comments
 (0)