OpenCloudOS-Kernel/drivers/media/i2c
Conor Dooley 6377b078e5 media: i2c: imx219: fix msr access command sequence
[ Upstream commit 3cdc776e0a5f1784c3ae5d3371b64215c228bf1f ]

It was reported to me that the imx219 didn't work on one of our
development kits partly because the access sequence is incorrect.
The datasheet I could find [1] for this camera has the access sequence:
Seq. No. Address (Hex) data
1        30EB          05
2        30EB          0C
3        300A          FF
4        300B          FF
5        30EB          05
6        30EB          09

but the driver swaps the first two elements. Laurent pointed out on IRC
that the original code used the correct sequence for 1920x1080 but the
current sequence for 3280x2464 and 1640x1232. During refactoring of the
init sequence the current order was used for all formats.

Switch to using the documented sequence.

Link: https://www.opensourceinstruments.com/Electronics/Data/IMX219PQ.pdf [1]
Fixes: 8508455961 ("media: i2c: imx219: Split common registers from mode tables")
Fixes: 1283b3b8f8 ("media: i2c: Add driver for Sony IMX219 sensor")
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Tested-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Adam Ford <aford173@gmail.com>  #imx8mp-beacon-kit
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-08-03 08:53:48 +02:00
..
adv748x media: adv748x: Return to endpoint matching 2023-08-10 07:57:40 +02:00
ccs media: ccs: Correctly initialise try compose rectangle 2023-11-28 17:20:12 +00:00
cx25840 media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
et8ek8 media: i2c: et8ek8: Don't strip remove function when driver is builtin 2024-06-12 11:12:02 +02:00
s5c73m3 media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
Kconfig media: i2c: imx219: Convert to CCI register access helpers 2023-11-20 11:59:32 +01:00
Makefile media: i2c: Add driver for DW9719 VCM 2023-08-10 07:58:41 +02:00
ad5820.c media: ad5820: Drop unsupported ad5823 from i2c_ and of_device_id tables 2023-07-14 13:07:18 +02:00
adp1653.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7170.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7175.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7180.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7183.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7183_regs.h
adv7343.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7343_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
adv7393.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7393_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
adv7511-v4l2.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7604.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
adv7842.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ak881x.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ak7375.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
aptina-pll.c media: i2c: aptina-pll: Remove a useless include 2022-11-25 08:35:48 +00:00
aptina-pll.h
ar0521.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
bt819.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
bt856.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
bt866.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ccs-pll.c media: ccs-pll: Initialise best_div to avoid a compiler warning 2023-08-10 07:58:33 +02:00
ccs-pll.h media: ccs-pll: Switch from standard integer types to kernel ones 2021-01-12 17:55:28 +01:00
cs53l32a.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
cs3308.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
cs5345.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ds90ub913.c media: i2c: ds90ub913: Fix use of uninitialized variables 2023-08-14 20:27:58 +02:00
ds90ub953.c media: i2c: ds90ub953: Fix use of uninitialized variables 2023-08-14 20:27:58 +02:00
ds90ub960.c media: i2c: ds90ub960: Fix PLL config for 1200 MHz CSI rate 2023-08-14 20:27:58 +02:00
dw9714.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
dw9719.c media: i2c: Add driver for DW9719 VCM 2023-08-10 07:58:41 +02:00
dw9768.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
dw9807-vcm.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
hi556.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
hi846.c media: hi846: fix usage of pm_runtime_get_if_in_use() 2023-05-25 16:21:23 +02:00
hi847.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
imx208.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
imx214.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
imx219.c media: i2c: imx219: fix msr access command sequence 2024-08-03 08:53:48 +02:00
imx258.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
imx274.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
imx290.c media: i2c: imx290: Fix IMX920 typo 2024-03-26 18:19:51 -04:00
imx296.c media: Explicitly include correct DT includes 2023-07-19 12:57:51 +02:00
imx319.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
imx334.c media: i2c: imx334: update pixel, hblank and link frequency 2023-05-25 16:21:22 +02:00
imx335.c media: i2c: imx335: Fix hblank min/max values 2024-02-05 20:14:28 +00:00
imx355.c media: imx355: Enable runtime PM before registering async sub-device 2024-01-31 16:18:50 -08:00
imx412.c media: i2c: Fix imx412 exposure control 2024-08-03 08:53:47 +02:00
imx415.c media: Explicitly include correct DT includes 2023-07-19 12:57:51 +02:00
ir-kbd-i2c.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
isl7998x.c media: i2c: isl7998x: drop of_match_ptr for ID table 2023-07-14 12:36:56 +02:00
ks0127.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ks0127.h
lm3560.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
lm3646.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
m52790.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
max2175.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
max2175.h
max9271.c media: i2c: max9271: Introduce wake_up() function 2021-06-17 11:30:21 +02:00
max9271.h media: i2c: max9271: Introduce wake_up() function 2021-06-17 11:30:21 +02:00
max9286.c media: i2c: max9286: Fix some redundant of_node_put() calls 2023-11-20 11:59:31 +01:00
ml86v7667.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
msp3400-driver.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
msp3400-driver.h
msp3400-kthreads.c media: msp3400: use semicolons rather than commas to separate statements 2020-11-16 10:31:07 +01:00
mt9m001.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
mt9m111.c media: i2c: mt9m111: drop of_match_ptr for ID table 2023-07-14 12:36:57 +02:00
mt9p031.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
mt9t112.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
mt9v011.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
mt9v032.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
mt9v111.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
og01a1b.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
ov01a10.c media: ov01a10: Enable runtime PM before registering async sub-device 2024-01-31 16:18:51 -08:00
ov02a10.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov08d10.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov08x40.c media: ov08x40: Fix hblank out of range issue 2023-07-14 13:05:05 +02:00
ov13b10.c media: ov13b10: Enable runtime PM before registering async sub-device 2024-01-31 16:18:51 -08:00
ov772x.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov2640.c media: i2c: ov2640: drop of_match_ptr for ID table 2023-07-14 12:36:58 +02:00
ov2659.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov2680.c media: ov2680: Do not fail if data-lanes property is absent 2024-06-12 11:12:38 +02:00
ov2685.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov2740.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
ov4689.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov5640.c media: ov5640: Fix a memory leak when ov5640_probe fails 2023-11-20 11:59:32 +01:00
ov5645.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov5647.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov5648.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov5670.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
ov5675.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
ov5693.c media: ov5693: Convert to new CCI register access helpers 2023-08-10 07:58:39 +02:00
ov5695.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov6650.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov7251.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov7640.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov7670.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov7740.c media: i2c: ov7740: drop of_match_ptr for ID table 2023-07-14 12:37:00 +02:00
ov8856.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov8858.c media: i2c: ov8858: Don't set fwnode in the driver 2023-10-11 15:26:16 +02:00
ov8865.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov9282.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov9640.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov9640.h media: ov9640: Use the generic clock framework 2021-02-06 09:38:05 +01:00
ov9650.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ov9734.c media: ov9734: Enable runtime PM before registering async sub-device 2024-01-31 16:18:51 -08:00
ov13858.c media: i2c: Remove Shawn's and Chiranjeevi's e-mail addresses 2023-07-14 13:04:34 +02:00
rdacm20.c media: v4l: async: Simplify async sub-device fwnode matching 2023-07-28 10:43:08 +02:00
rdacm21.c media: i2c: rdacm21: Remove an incorrect fwnode_handle_put() call 2023-09-14 23:31:55 +02:00
rj54n1cb0c.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
s5k5baf.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
s5k6a3.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
saa711x_regs.h
saa717x.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
saa6588.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
saa6752hs.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
saa7110.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
saa7115.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
saa7127.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
saa7185.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
sony-btf-mpx.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
st-mipid02.c media: i2c: st-mipid02: correct format propagation 2024-01-31 16:18:55 -08:00
st-vgxy61.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tc358743.c media: tc358743: register v4l2 async device only after successful setup 2024-03-26 18:19:43 -04:00
tc358743_regs.h
tc358746.c media: v4l: async: Set v4l2_device and subdev in async notifier init 2023-08-10 07:58:32 +02:00
tda1997x.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tda1997x_regs.h media: TDA1997x: replace video detection routine 2021-10-19 08:08:38 +01:00
tda7432.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tda9840.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tea6415c.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tea6415c.h
tea6420.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tea6420.h
ths7303.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ths8200.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
ths8200_regs.h
tlv320aic23b.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tvaudio.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tvp514x.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tvp514x_regs.h media: media/i2c: fix kerneldoc issues for media i2c headers 2021-03-22 10:23:43 +01:00
tvp5150.c media: i2c: tvp5150: check return value of devm_kasprintf() 2023-07-14 13:08:14 +02:00
tvp5150_reg.h
tvp7002.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tvp7002_reg.h
tw2804.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tw9903.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tw9906.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
tw9910.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
uda1342.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
upd64031a.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
upd64083.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
video-i2c.c media: Explicitly include correct DT includes 2023-07-19 12:57:51 +02:00
vp27smpx.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
vpx3220.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
wm8739.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00
wm8775.c media: Switch i2c drivers back to use .probe() 2023-05-25 16:21:21 +02:00