1
0
Fork 0
mirror of synced 2025-03-06 20:59:54 +01:00
linux/drivers/media/i2c
Mark Brown 42a55435b0 media: i2c: max2175: Use rbtree rather than flat register cache
The max2175 uses a flat register cache but supplies only a single default
value and has many volatile registers. This is a poor fit for a flat cache
since the cache will assume a default of zero for any register not yet
written which can lead to bugs for example when regmap_update_bits()
suppresses a noop write. A rbtree cache is a much better fit, this will
only cache default values and values that have been written to the device
with any reads of uncached values going to the hardware. Convert the driver
to use a rbtree cache.

Since the device is controlled via I2C the cost of manging the rbtree
should be immaterial compared to the cost of accessing the device.

Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
2022-03-07 17:21:53 +01:00
..
adv748x media: v4l2-mediabus: Use structures to describe bus configuration 2022-02-17 09:51:23 +01:00
ccs media: i2c: ccs: Drop unused include 2022-03-04 00:27:08 +02:00
cx25840 media: cx25840: drop some unused inline functions 2021-11-29 10:15:04 +01:00
et8ek8 media: i2c: et8ek8: use DEVICE_ATTR_RO() helper macro 2021-08-04 14:43:50 +02:00
m5mols media: m5mols: Convert to use GPIO descriptors 2022-03-04 09:36:26 +02:00
s5c73m3 media: s5c73m3: Drop empty spi_driver remove callback 2021-11-30 12:07:06 +01:00
ad5820.c media: i2c: ad5820: simplify getting state container 2020-11-16 10:31:11 +01:00
ad9389b.c media: i2c: ad9389b: convert to i2c_new_dummy_device 2019-08-13 11:45:04 -03:00
adp1653.c media: i2c: adp1653: simplify getting state container 2020-11-16 10:31:11 +01:00
adv7170.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
adv7175.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
adv7180.c media: v4l2-mediabus: Drop V4L2_MBUS_CSI2_CONTINUOUS_CLOCK flag 2022-02-17 09:54:26 +01:00
adv7183.c media: adv7183: Convert to GPIO descriptors 2022-03-04 09:36:27 +02:00
adv7183_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
adv7343.c media: i2c: Convert to new i2c device probe() 2019-08-13 11:54:04 -03:00
adv7343_regs.h [media] drivers: media: i2c: adv7343_regs.h: Fix typo in #ifndef 2014-09-21 20:12:13 -03:00
adv7393.c media: fix usage of whitespaces and on indentation 2018-01-04 13:12:01 -05:00
adv7393_regs.h
adv7511-v4l2.c media: adv7511: Drop unused include 2022-03-04 09:36:25 +02:00
adv7604.c media: video/hdmi: handle short reads of hdmi info frame. 2022-02-16 12:48:23 +01:00
adv7842.c media: video/hdmi: handle short reads of hdmi info frame. 2022-02-16 12:48:23 +01:00
ak881x.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ak7375.c media: i2c: ak7375: use pm_runtime_resume_and_get() 2021-05-19 09:51:40 +02:00
aptina-pll.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
aptina-pll.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
bt819.c media: bt819: Reduce amount of F* words in the world 2019-11-05 09:01:17 -03:00
bt856.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
bt866.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
ccs-pll.c Linux 5.11-rc6 2021-02-01 10:03:45 +01: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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cs3308.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
cs5345.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
dw9714.c media: i2c: dw9714: add optional regulator support 2022-01-28 19:32:49 +01:00
dw9768.c media: dw9768: activate runtime PM and turn off device 2021-11-15 08:11:34 +00:00
dw9807-vcm.c media: i2c: dw9807-vcm: use pm_runtime_resume_and_get() 2021-05-19 09:51:40 +02:00
hi556.c media: hi556: Support device probe in non-zero ACPI D state 2021-12-16 20:54:53 +01:00
hi846.c media: i2c: hi846: use pm_runtime_force_suspend/resume for system suspend 2021-12-16 20:54:53 +01:00
hi847.c media: hi847: Add support for Hi-847 sensor 2022-01-28 19:32:49 +01:00
imx208.c media: imx208: Support device probe in non-zero ACPI D state 2021-12-16 20:54:52 +01:00
imx214.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
imx219.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
imx258.c media: imx258: Fix getting clock frequency 2021-09-30 10:07:45 +02:00
imx274.c media: i2c: imx274: Drop surplus includes 2022-03-04 00:27:08 +02:00
imx290.c media: imx290: mark read reg function as __always_unused 2021-11-29 13:23:14 +01:00
imx319.c media: Update Intel-submitted camera sensor driver contacts 2021-12-16 20:54:51 +01:00
imx334.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
imx335.c media: i2c: Add imx335 camera sensor driver 2021-08-04 14:43:49 +02:00
imx355.c media: Update Intel-submitted camera sensor driver contacts 2021-12-16 20:54:51 +01:00
imx412.c media: i2c: Add imx412 camera sensor driver 2021-08-04 14:43:50 +02:00
ir-kbd-i2c.c media: ir-kbd-i2c: improve responsiveness of hauppauge zilog receivers 2021-09-30 10:08:00 +02:00
isl7998x.c media: i2c: isl7998x: Add driver for Intersil ISL7998x 2022-03-04 00:27:10 +02:00
Kconfig media: i2c: isl7998x: Add driver for Intersil ISL7998x 2022-03-04 00:27:10 +02:00
ks0127.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
ks0127.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
lm3560.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
lm3646.c media: lm3646: remove redundant assignment to variable rval 2019-10-24 18:41:31 -03:00
m52790.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
Makefile media: i2c: isl7998x: Add driver for Intersil ISL7998x 2022-03-04 00:27:10 +02:00
max2175.c media: i2c: max2175: Use rbtree rather than flat register cache 2022-03-07 17:21:53 +01:00
max2175.h media: i2c: Use the correct style for SPDX License Identifier 2019-11-10 17:47:14 +01:00
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: Implement media entity .link_validate() operation 2022-01-28 19:32:49 +01:00
ml86v7667.c media: v4l2-mediabus: Use structures to describe bus configuration 2022-02-17 09:51:23 +01:00
msp3400-driver.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
msp3400-driver.h media: msp3400: declare its own pads 2018-09-17 13:16:19 -04:00
msp3400-kthreads.c media: msp3400: use semicolons rather than commas to separate statements 2020-11-16 10:31:07 +01:00
mt9m001.c media: v4l2-mediabus: Use structures to describe bus configuration 2022-02-17 09:51:23 +01:00
mt9m032.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
mt9m111.c media: mt9m111: Drop unused include 2022-03-04 09:36:26 +02:00
mt9p031.c media: mt9p031: Use BIT macro 2021-09-30 10:07:35 +02:00
mt9t001.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
mt9t112.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
mt9v011.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
mt9v032.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
mt9v111.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
noon010pc30.c media: noon010p30: Convert to use GPIO descriptors 2022-03-04 09:36:26 +02:00
og01a1b.c media: Add a driver for the og01a1b camera sensor 2022-03-04 00:27:05 +02:00
ov02a10.c i2c/drivers/ov02q10: use HZ macros 2021-09-08 11:50:26 -07:00
ov08d10.c media: i2c: ov08d10: Unlock on error in ov08d10_enum_frame_size() 2022-02-17 10:00:21 +01:00
ov13b10.c media: Add sensor driver support for the ov13b10 camera. 2021-09-30 10:07:45 +02:00
ov772x.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov2640.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov2659.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov2680.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov2685.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov2740.c media: ov2740: identify module after subdev initialisation 2022-01-28 19:32:49 +01:00
ov5640.c media: ov5640: Fix set format, v4l2_mbus_pixelcode not updated 2022-02-23 12:21:39 +02:00
ov5645.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov5647.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov5648.c media: i2c: ov5648: Fix lockdep error 2022-03-04 00:27:05 +02:00
ov5670.c media: ov5670: Support device probe in non-zero ACPI D state 2021-12-16 20:54:52 +01:00
ov5675.c media: ov5675: use group write to update digital gain 2022-02-17 09:58:42 +01:00
ov5693.c media: ov5693: fix returnvar.cocci warnings 2022-01-28 19:32:49 +01:00
ov5695.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov6650.c media: v4l2-mediabus: Use structures to describe bus configuration 2022-02-17 09:51:23 +01:00
ov7251.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov7640.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
ov7670.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov7740.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov8856.c media: ov8856: support device probe in non-zero ACPI D state 2021-12-16 20:54:52 +01:00
ov8865.c media: i2c: Fix pixel array positions in ov8865 2022-03-04 09:36:28 +02:00
ov9282.c media: i2c: Add ov9282 camera sensor driver 2021-08-04 14:43:50 +02:00
ov9640.c media: v4l2-mediabus: Use structures to describe bus configuration 2022-02-17 09:51:23 +01:00
ov9640.h media: ov9640: Use the generic clock framework 2021-02-06 09:38:05 +01:00
ov9650.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
ov9734.c media: ov9734: use group write for digital gain 2021-08-04 14:43:51 +02:00
ov13858.c media: Update Intel-submitted camera sensor driver contacts 2021-12-16 20:54:51 +01:00
rdacm20.c media: i2c: rdacm20: Re-work ov10635 reset 2021-06-17 12:08:55 +02:00
rdacm21.c media: i2c: rdacm21: Power up OV10640 before OV490 2021-06-17 11:31:45 +02:00
rj54n1cb0c.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
s5k4ecgx.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
s5k5baf.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
s5k6a3.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
s5k6aa.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
saa711x_regs.h media: i2c: Use the correct style for SPDX License Identifier 2019-11-10 17:47:14 +01:00
saa717x.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
saa6588.c media: subdev: disallow ioctl for saa6588/davinci 2021-06-17 10:18:37 +02:00
saa6752hs.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
saa7110.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
saa7115.c media: saa7115: make static read-only array lcr2vbi const 2022-02-22 09:41:11 +01:00
saa7127.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
saa7185.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
sony-btf-mpx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
sr030pc30.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
st-mipid02.c media: v4l: async: Rename async nf functions, clean up long lines 2021-09-30 10:07:35 +02:00
tc358743.c media: v4l2-mediabus: Drop V4L2_MBUS_CSI2_CONTINUOUS_CLOCK flag 2022-02-17 09:54:26 +01:00
tc358743_regs.h media: i2c: add SPDX license info 2018-02-14 13:16:31 -05:00
tda1997x.c media: TDA1997x: replace video detection routine 2021-10-19 08:08:38 +01:00
tda1997x_regs.h media: TDA1997x: replace video detection routine 2021-10-19 08:08:38 +01:00
tda7432.c media: add SPDX headers to some files 2019-06-12 11:42:27 -04:00
tda9840.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
tea6415c.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 68 2019-05-24 17:36:46 +02:00
tea6415c.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
tea6420.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
tea6420.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ths7303.c media: replace all <spaces><tab> occurrences 2018-01-04 13:15:05 -05:00
ths8200.c media: i2c: Convert to new i2c device probe() 2019-08-13 11:54:04 -03:00
ths8200_regs.h
tlv320aic23b.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
tvaudio.c media: i2c: fix several typos 2019-03-01 09:29:58 -05:00
tvp514x.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +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: v4l2-mediabus: Use structures to describe bus configuration 2022-02-17 09:51:23 +01:00
tvp5150_reg.h media: i2c: Use the correct style for SPDX License Identifier 2019-11-10 17:47:14 +01:00
tvp7002.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
tvp7002_reg.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
tw2804.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
tw9903.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
tw9906.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
tw9910.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
uda1342.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
upd64031a.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
upd64083.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
video-i2c.c media: video-i2c: more precise intervals between frames 2021-09-30 10:07:57 +02:00
vp27smpx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
vpx3220.c media: vpx3220: make array input_vals static, makes object smaller 2019-11-05 08:48:55 -03:00
vs6624.c media: v4l2-subdev: add subdev-wide state struct 2021-06-17 10:01:27 +02:00
vs6624_regs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
wm8739.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
wm8775.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00