Lines Matching +full:sensor +full:- +full:gain
1 // SPDX-License-Identifier: GPL-2.0-only
3 * drivers/media/i2c/smiapp/smiapp-quirk.c
7 * Copyright (C) 2011--2012 Nokia Corporation
15 static int smiapp_write_8(struct smiapp_sensor *sensor, u16 reg, u8 val) in smiapp_write_8() argument
17 return smiapp_write(sensor, SMIAPP_REG_MK_U8(reg), val); in smiapp_write_8()
20 static int smiapp_write_8s(struct smiapp_sensor *sensor, in smiapp_write_8s() argument
23 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); in smiapp_write_8s()
26 for (; len > 0; len--, regs++) { in smiapp_write_8s()
27 rval = smiapp_write_8(sensor, regs->reg, regs->val); in smiapp_write_8s()
29 dev_err(&client->dev, in smiapp_write_8s()
31 rval, regs->reg, regs->val); in smiapp_write_8s()
39 void smiapp_replace_limit(struct smiapp_sensor *sensor, in smiapp_replace_limit() argument
42 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); in smiapp_replace_limit()
44 dev_dbg(&client->dev, "quirk: 0x%8.8x \"%s\" = %d, 0x%x\n", in smiapp_replace_limit()
47 sensor->limits[limit] = val; in smiapp_replace_limit()
50 static int jt8ew9_limits(struct smiapp_sensor *sensor) in jt8ew9_limits() argument
52 if (sensor->minfo.revision_number_major < 0x03) in jt8ew9_limits()
53 sensor->frame_skip = 1; in jt8ew9_limits()
55 /* Below 24 gain doesn't have effect at all, */ in jt8ew9_limits()
57 smiapp_replace_limit(sensor, SMIAPP_LIMIT_ANALOGUE_GAIN_CODE_MIN, 59); in jt8ew9_limits()
59 sensor, SMIAPP_LIMIT_ANALOGUE_GAIN_CODE_MAX, 6000); in jt8ew9_limits()
64 static int jt8ew9_post_poweron(struct smiapp_sensor *sensor) in jt8ew9_post_poweron() argument
73 { 0x3258, 0x70 }, /* Analog Gain Control Toshiba Recommendation Setting */ in jt8ew9_post_poweron()
74 { 0x3259, 0x70 }, /* Analog Gain Control Toshiba Recommendation Setting */ in jt8ew9_post_poweron()
75 { 0x325f, 0x7c }, /* Analog Gain Control Toshiba Recommendation Setting */ in jt8ew9_post_poweron()
99 return smiapp_write_8s(sensor, regs, ARRAY_SIZE(regs)); in jt8ew9_post_poweron()
107 static int imx125es_post_poweron(struct smiapp_sensor *sensor) in imx125es_post_poweron() argument
113 * 0x00 - HS mode, 0x01 - LP11 in imx125es_post_poweron()
120 return smiapp_write_8s(sensor, regs, ARRAY_SIZE(regs)); in imx125es_post_poweron()
127 static int jt8ev1_limits(struct smiapp_sensor *sensor) in jt8ev1_limits() argument
129 smiapp_replace_limit(sensor, SMIAPP_LIMIT_X_ADDR_MAX, 4271); in jt8ev1_limits()
130 smiapp_replace_limit(sensor, in jt8ev1_limits()
136 static int jt8ev1_post_poweron(struct smiapp_sensor *sensor) in jt8ev1_post_poweron() argument
138 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); in jt8ev1_post_poweron()
145 { 0x3301, 0x06 }, /* For analog bias for sensor */ in jt8ev1_post_poweron()
167 rval = smiapp_write_8s(sensor, regs, ARRAY_SIZE(regs)); in jt8ev1_post_poweron()
171 switch (sensor->hwcfg->ext_clk) { in jt8ev1_post_poweron()
173 return smiapp_write_8s(sensor, regs_96, in jt8ev1_post_poweron()
176 dev_warn(&client->dev, "no MSRs for %d Hz ext_clk\n", in jt8ev1_post_poweron()
177 sensor->hwcfg->ext_clk); in jt8ev1_post_poweron()
182 static int jt8ev1_pre_streamon(struct smiapp_sensor *sensor) in jt8ev1_pre_streamon() argument
184 return smiapp_write_8(sensor, 0x3328, 0x00); in jt8ev1_pre_streamon()
187 static int jt8ev1_post_streamoff(struct smiapp_sensor *sensor) in jt8ev1_post_streamoff() argument
192 rval = smiapp_write_8(sensor, 0x3205, 0x04); in jt8ev1_post_streamoff()
200 rval = smiapp_write_8(sensor, 0x3205, 0x00); in jt8ev1_post_streamoff()
204 return smiapp_write_8(sensor, 0x3328, 0x80); in jt8ev1_post_streamoff()
207 static int jt8ev1_init(struct smiapp_sensor *sensor) in jt8ev1_init() argument
209 sensor->pll.flags |= SMIAPP_PLL_FLAG_OP_PIX_CLOCK_PER_LANE; in jt8ev1_init()
222 static int tcm8500md_limits(struct smiapp_sensor *sensor) in tcm8500md_limits() argument
224 smiapp_replace_limit(sensor, SMIAPP_LIMIT_MIN_PLL_IP_FREQ_HZ, 2700000); in tcm8500md_limits()