aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/s5p-fimc/mipi-csis.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/s5p-fimc/mipi-csis.c')
-rw-r--r--drivers/media/video/s5p-fimc/mipi-csis.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/drivers/media/video/s5p-fimc/mipi-csis.c b/drivers/media/video/s5p-fimc/mipi-csis.c
index f44f690397f7..2f73d9e3d0b7 100644
--- a/drivers/media/video/s5p-fimc/mipi-csis.c
+++ b/drivers/media/video/s5p-fimc/mipi-csis.c
@@ -127,20 +127,24 @@ struct csis_state {
127 * multiple of 2^pix_width_alignment 127 * multiple of 2^pix_width_alignment
128 * @code: corresponding media bus code 128 * @code: corresponding media bus code
129 * @fmt_reg: S5PCSIS_CONFIG register value 129 * @fmt_reg: S5PCSIS_CONFIG register value
130 * @data_alignment: MIPI-CSI data alignment in bits
130 */ 131 */
131struct csis_pix_format { 132struct csis_pix_format {
132 unsigned int pix_width_alignment; 133 unsigned int pix_width_alignment;
133 enum v4l2_mbus_pixelcode code; 134 enum v4l2_mbus_pixelcode code;
134 u32 fmt_reg; 135 u32 fmt_reg;
136 u8 data_alignment;
135}; 137};
136 138
137static const struct csis_pix_format s5pcsis_formats[] = { 139static const struct csis_pix_format s5pcsis_formats[] = {
138 { 140 {
139 .code = V4L2_MBUS_FMT_VYUY8_2X8, 141 .code = V4L2_MBUS_FMT_VYUY8_2X8,
140 .fmt_reg = S5PCSIS_CFG_FMT_YCBCR422_8BIT, 142 .fmt_reg = S5PCSIS_CFG_FMT_YCBCR422_8BIT,
143 .data_alignment = 32,
141 }, { 144 }, {
142 .code = V4L2_MBUS_FMT_JPEG_1X8, 145 .code = V4L2_MBUS_FMT_JPEG_1X8,
143 .fmt_reg = S5PCSIS_CFG_FMT_USER(1), 146 .fmt_reg = S5PCSIS_CFG_FMT_USER(1),
147 .data_alignment = 32,
144 }, 148 },
145}; 149};
146 150
@@ -239,7 +243,7 @@ static void s5pcsis_set_params(struct csis_state *state)
239 s5pcsis_set_hsync_settle(state, pdata->hs_settle); 243 s5pcsis_set_hsync_settle(state, pdata->hs_settle);
240 244
241 val = s5pcsis_read(state, S5PCSIS_CTRL); 245 val = s5pcsis_read(state, S5PCSIS_CTRL);
242 if (pdata->alignment == 32) 246 if (state->csis_fmt->data_alignment == 32)
243 val |= S5PCSIS_CTRL_ALIGN_32BIT; 247 val |= S5PCSIS_CTRL_ALIGN_32BIT;
244 else /* 24-bits */ 248 else /* 24-bits */
245 val &= ~S5PCSIS_CTRL_ALIGN_32BIT; 249 val &= ~S5PCSIS_CTRL_ALIGN_32BIT;
@@ -711,19 +715,8 @@ static struct platform_driver s5pcsis_driver = {
711 }, 715 },
712}; 716};
713 717
714static int __init s5pcsis_init(void) 718module_platform_driver(s5pcsis_driver);
715{
716 return platform_driver_probe(&s5pcsis_driver, s5pcsis_probe);
717}
718
719static void __exit s5pcsis_exit(void)
720{
721 platform_driver_unregister(&s5pcsis_driver);
722}
723
724module_init(s5pcsis_init);
725module_exit(s5pcsis_exit);
726 719
727MODULE_AUTHOR("Sylwester Nawrocki <s.nawrocki@samsung.com>"); 720MODULE_AUTHOR("Sylwester Nawrocki <s.nawrocki@samsung.com>");
728MODULE_DESCRIPTION("S5P/EXYNOS4 MIPI CSI receiver driver"); 721MODULE_DESCRIPTION("Samsung S5P/EXYNOS SoC MIPI-CSI2 receiver driver");
729MODULE_LICENSE("GPL"); 722MODULE_LICENSE("GPL");