diff options
| -rw-r--r-- | drivers/media/video/soc_mediabus.c | 18 | ||||
| -rw-r--r-- | include/media/soc_mediabus.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/drivers/media/video/soc_mediabus.c b/drivers/media/video/soc_mediabus.c index a7073142f9f1..89dce097a827 100644 --- a/drivers/media/video/soc_mediabus.c +++ b/drivers/media/video/soc_mediabus.c | |||
| @@ -397,6 +397,24 @@ s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf) | |||
| 397 | } | 397 | } |
| 398 | EXPORT_SYMBOL(soc_mbus_bytes_per_line); | 398 | EXPORT_SYMBOL(soc_mbus_bytes_per_line); |
| 399 | 399 | ||
| 400 | s32 soc_mbus_image_size(const struct soc_mbus_pixelfmt *mf, | ||
| 401 | u32 bytes_per_line, u32 height) | ||
| 402 | { | ||
| 403 | if (mf->layout == SOC_MBUS_LAYOUT_PACKED) | ||
| 404 | return bytes_per_line * height; | ||
| 405 | |||
| 406 | switch (mf->packing) { | ||
| 407 | case SOC_MBUS_PACKING_2X8_PADHI: | ||
| 408 | case SOC_MBUS_PACKING_2X8_PADLO: | ||
| 409 | return bytes_per_line * height * 2; | ||
| 410 | case SOC_MBUS_PACKING_1_5X8: | ||
| 411 | return bytes_per_line * height * 3 / 2; | ||
| 412 | default: | ||
| 413 | return -EINVAL; | ||
| 414 | } | ||
| 415 | } | ||
| 416 | EXPORT_SYMBOL(soc_mbus_image_size); | ||
| 417 | |||
| 400 | const struct soc_mbus_pixelfmt *soc_mbus_find_fmtdesc( | 418 | const struct soc_mbus_pixelfmt *soc_mbus_find_fmtdesc( |
| 401 | enum v4l2_mbus_pixelcode code, | 419 | enum v4l2_mbus_pixelcode code, |
| 402 | const struct soc_mbus_lookup *lookup, | 420 | const struct soc_mbus_lookup *lookup, |
diff --git a/include/media/soc_mediabus.h b/include/media/soc_mediabus.h index e18eed4e5678..0dc6f4625b92 100644 --- a/include/media/soc_mediabus.h +++ b/include/media/soc_mediabus.h | |||
| @@ -99,6 +99,8 @@ const struct soc_mbus_pixelfmt *soc_mbus_find_fmtdesc( | |||
| 99 | const struct soc_mbus_pixelfmt *soc_mbus_get_fmtdesc( | 99 | const struct soc_mbus_pixelfmt *soc_mbus_get_fmtdesc( |
| 100 | enum v4l2_mbus_pixelcode code); | 100 | enum v4l2_mbus_pixelcode code); |
| 101 | s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf); | 101 | s32 soc_mbus_bytes_per_line(u32 width, const struct soc_mbus_pixelfmt *mf); |
| 102 | s32 soc_mbus_image_size(const struct soc_mbus_pixelfmt *mf, | ||
| 103 | u32 bytes_per_line, u32 height); | ||
| 102 | int soc_mbus_samples_per_pixel(const struct soc_mbus_pixelfmt *mf, | 104 | int soc_mbus_samples_per_pixel(const struct soc_mbus_pixelfmt *mf, |
| 103 | unsigned int *numerator, unsigned int *denominator); | 105 | unsigned int *numerator, unsigned int *denominator); |
| 104 | unsigned int soc_mbus_config_compatible(const struct v4l2_mbus_config *cfg, | 106 | unsigned int soc_mbus_config_compatible(const struct v4l2_mbus_config *cfg, |
