Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
5ecdd41
media: ov9282: Remove unused kerneldoc description
ribalda Jun 10, 2026
9ec2b44
media: rzg2l-cru: Remove unused kerneldoc description
ribalda Jun 10, 2026
e9c44d4
media: mc-entity: Add missing kerneldoc
ribalda Jun 10, 2026
479aa6f
media: rc: sunxi-cir: Unregister rc device on probe failure
testacegi May 13, 2026
2cf8593
media: Drop unused assignments from pnp_device_id array
ukleinek Jun 9, 2026
2533558
media: ite-cir: Use an enum for the different supported device types
ukleinek Jun 10, 2026
172c5a7
media: cec: meson: ao-cec-g12a: name the CEC core regmap to avoid deb…
yisding May 29, 2026
a24ba06
media: cec: core: Fix kmemleak due to missed rc_free_device() call
Kwiboo May 29, 2026
fb9dda3
media: cec: stm32: prevent out-of-bounds write on RX overflow
Jun 11, 2026
abac982
media: cec: extron-da-hd-4k-plus: add sanity check
Jun 18, 2026
0fbd5c2
media: cec: disable delayed work before freeing an interrupted transmit
birenpandya Jun 21, 2026
3bc2e4a
media: cec: stm32: return an error when log-address wait times out
neosys007 Jun 24, 2026
a1d83d1
media: cec-pin: Fix event FIFO ordering
2045gemini Jun 26, 2026
5370fac
media: keymaps: Remove obsolete RC_MAP_RC5_TV keymap define
seanyoung Jun 24, 2026
6e5deb2
media: keymaps: Remove obsolete RC_MAP_HAUPPAUGE_NEW keymap define
seanyoung Jun 24, 2026
af191a7
media: keymaps: Ensure module name matches RC_MAP_VIDEOMATE_K100
seanyoung Jun 19, 2026
8dac27b
media: dt-bindings: rc: Sync keymap list with latest list
seanyoung Jun 19, 2026
255f4b8
media/imx355: General code cleanups, and adding support for 2 lane op…
6by9 May 6, 2026
56b2b44
media: i2c: imx355: Add support for 24 MHz external clock
okias Apr 14, 2026
39c3502
dt-bindings: media: imx355: Allow 2 CSI2 data lane output
6by9 May 14, 2026
13098ef
media: imx355: Remove duplicated registers from the mode tables
6by9 Apr 15, 2026
2137813
media: imx355: Remove setting FRM_LENGTH_LINES in the mode regs
6by9 Apr 15, 2026
d208267
media: imx355: Programmatically set the crop parameters for each mode
6by9 Apr 15, 2026
770f808
media: imx355: Set register LINE_LENGTH_PCK programmatically
6by9 Apr 15, 2026
7cd8071
media: imx355: Set binning mode registers programmatically
6by9 Apr 15, 2026
48a7d41
media: imx355: Remove link_freq_index from each mode as ununsed
6by9 Apr 29, 2026
8f8d35b
media: imx355: pixel_rate never changes, so don't recompute
6by9 Apr 29, 2026
80d852e
media: imx355: Remove redundant fll_min, and implement fixed offset
6by9 Apr 29, 2026
6752d38
media: imx355: Add support for get_selection
6by9 Apr 15, 2026
59247b3
media: imx355: Use pm_runtime autosuspend_delay
6by9 Apr 15, 2026
b182bd6
media: imx355: Convert to new CCI register access helpers
6by9 Apr 29, 2026
bc18005
media: imx355: Set the colorspace in the format
6by9 May 11, 2026
7c8185f
media: imx355: Define the exposure offset, and use that define
6by9 May 12, 2026
db3d9ff
media: imx355: Use NULL ctrl_ops for HBLANK as it is a read-only control
6by9 Jun 17, 2026
a390221
media: imx355: Compute link frequency from PLL setup
6by9 Jun 30, 2026
f0e40d8
media: imx355: Support 2 lane readout
6by9 Apr 15, 2026
240194f
media: imx355: Switch to using the subdev state
6by9 May 11, 2026
fdc2b8b
media: imx355: Remove storing cur_mode in the state
6by9 May 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions Documentation/devicetree/bindings/media/i2c/sony,imx355.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,15 @@ properties:

properties:
data-lanes:
minItems: 4
maxItems: 4
oneOf:
- items:
- const: 1
- const: 2
- const: 3
- const: 4
- items:
- const: 1
- const: 2

required:
- link-frequencies
Expand Down
4 changes: 2 additions & 2 deletions Documentation/devicetree/bindings/media/rc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,10 @@ properties:
- rc-proteus-2309
- rc-purpletv
- rc-pv951
- rc-rc5-tv
- rc-rc6-mce
- rc-real-audio-220-32-keys
- rc-reddo
- rc-siemens-gigaset-rc20
- rc-snapstream-firefly
- rc-streamzap
- rc-su3000
Expand All @@ -147,11 +147,11 @@ properties:
- rc-tt-1500
- rc-twinhan-dtv-cab-ci
- rc-twinhan1027
- rc-vega-s9x
- rc-videomate-k100
- rc-videomate-s350
- rc-videomate-tv-pvr
- rc-videostrong-kii-pro
- rc-vega-s9x
- rc-wetek-hub
- rc-wetek-play2
- rc-winfast
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/cec/core/cec-adap.c
Original file line number Diff line number Diff line change
Expand Up @@ -965,7 +965,7 @@ int cec_transmit_msg_fh(struct cec_adapter *adap, struct cec_msg *msg,
*/
mutex_unlock(&adap->lock);
err = wait_for_completion_killable(&data->c);
cancel_delayed_work_sync(&data->work);
disable_delayed_work_sync(&data->work);
mutex_lock(&adap->lock);

if (err)
Expand Down
2 changes: 0 additions & 2 deletions drivers/media/cec/core/cec-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,9 +371,7 @@ void cec_unregister_adapter(struct cec_adapter *adap)
return;

#ifdef CONFIG_MEDIA_CEC_RC
/* Note: rc_unregister also calls rc_free */
rc_unregister_device(adap->rc);
adap->rc = NULL;
#endif
debugfs_remove_recursive(adap->cec_dir);
#ifdef CONFIG_CEC_NOTIFIER
Expand Down
8 changes: 4 additions & 4 deletions drivers/media/cec/core/cec-pin.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ static void cec_pin_update(struct cec_pin *pin, bool v, bool force)
return;

pin->adap->cec_pin_is_high = v;
if (atomic_read(&pin->work_pin_num_events) < CEC_NUM_PIN_EVENTS) {
if (atomic_read_acquire(&pin->work_pin_num_events) < CEC_NUM_PIN_EVENTS) {
u8 ev = v;

if (pin->work_pin_events_dropped) {
Expand All @@ -126,7 +126,7 @@ static void cec_pin_update(struct cec_pin *pin, bool v, bool force)
pin->work_pin_ts[pin->work_pin_events_wr] = ktime_get();
pin->work_pin_events_wr =
(pin->work_pin_events_wr + 1) % CEC_NUM_PIN_EVENTS;
atomic_inc(&pin->work_pin_num_events);
atomic_inc_return_release(&pin->work_pin_num_events);
} else {
pin->work_pin_events_dropped = true;
pin->work_pin_events_dropped_cnt++;
Expand Down Expand Up @@ -1101,7 +1101,7 @@ static int cec_pin_thread_func(void *_adap)
pin->work_tx_ts);
}

while (atomic_read(&pin->work_pin_num_events)) {
while (atomic_read_acquire(&pin->work_pin_num_events)) {
unsigned int idx = pin->work_pin_events_rd;
u8 v = pin->work_pin_events[idx];

Expand All @@ -1110,7 +1110,7 @@ static int cec_pin_thread_func(void *_adap)
v & CEC_PIN_EVENT_FL_DROPPED,
pin->work_pin_ts[idx]);
pin->work_pin_events_rd = (idx + 1) % CEC_NUM_PIN_EVENTS;
atomic_dec(&pin->work_pin_num_events);
atomic_dec_return_release(&pin->work_pin_num_events);
}

switch (atomic_xchg(&pin->work_irq_change,
Expand Down
1 change: 1 addition & 0 deletions drivers/media/cec/platform/meson/ao-cec-g12a.c
Original file line number Diff line number Diff line change
Expand Up @@ -405,6 +405,7 @@ static int meson_ao_cec_g12a_write(void *context, unsigned int addr,
}

static const struct regmap_config meson_ao_cec_g12a_cec_regmap_conf = {
.name = "core",
.reg_bits = 8,
.val_bits = 8,
.reg_read = meson_ao_cec_g12a_read,
Expand Down
19 changes: 13 additions & 6 deletions drivers/media/cec/platform/stm32/stm32-cec.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,8 @@ static void stm32_rx_done(struct stm32_cec *cec, u32 status)
u32 val;

regmap_read(cec->regmap, CEC_RXDR, &val);
cec->rx_msg.msg[cec->rx_msg.len++] = val & 0xFF;
if (cec->rx_msg.len < CEC_MAX_MSG_SIZE)
cec->rx_msg.msg[cec->rx_msg.len++] = val & 0xFF;
}

if (cec->irq_status & RXEND) {
Expand Down Expand Up @@ -193,18 +194,24 @@ static int stm32_cec_adap_enable(struct cec_adapter *adap, bool enable)
static int stm32_cec_adap_log_addr(struct cec_adapter *adap, u8 logical_addr)
{
struct stm32_cec *cec = adap->priv;
u32 oar = (1 << logical_addr) << 16;
u32 val;
int ret;

/* Poll every 100µs the register CEC_CR to wait end of transmission */
regmap_read_poll_timeout(cec->regmap, CEC_CR, val, !(val & TXSOM),
100, CEC_XFER_TIMEOUT_MS * 1000);
ret = regmap_read_poll_timeout(cec->regmap, CEC_CR, val, !(val & TXSOM),
100, CEC_XFER_TIMEOUT_MS * 1000);
if (ret)
return ret;

regmap_update_bits(cec->regmap, CEC_CR, CECEN, 0);

if (logical_addr == CEC_LOG_ADDR_INVALID)
if (logical_addr == CEC_LOG_ADDR_INVALID) {
regmap_update_bits(cec->regmap, CEC_CFGR, OAR, 0);
else
} else {
u32 oar = BIT(logical_addr) << 16;

regmap_update_bits(cec->regmap, CEC_CFGR, oar, oar);
}

regmap_update_bits(cec->regmap, CEC_CR, CECEN, CECEN);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,8 @@ static void extron_process_received(struct extron_port *port, const char *data)
if (!port || port->disconnected)
return;

if (len < 5 || (len - 2) % 3 || data[len - 2] != '*')
if (len < 5 || ((len - 2) / 3 > sizeof(msg.msg)) ||
(len - 2) % 3 || data[len - 2] != '*')
goto malformed;

while (*data != '*') {
Expand Down
1 change: 1 addition & 0 deletions drivers/media/i2c/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ config VIDEO_IMX335

config VIDEO_IMX355
tristate "Sony IMX355 sensor support"
select V4L2_CCI_I2C
help
This is a Video4Linux2 sensor driver for the Sony
IMX355 camera.
Expand Down
Loading
Loading