Commit 48e29133 authored by Wolfram Sang's avatar Wolfram Sang
Browse files

Merge tag 'i2c-host-fixes-6.16-rc4' of...

Merge tag 'i2c-host-fixes-6.16-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-current

i2c-host fixes for v6.16-rc4

- imx: fix SMBus protocol compliance during block read
- omap: fix error handling path in probe
- robotfuzz, tiny-usb: prevent zero-length reads
- x86, designware, amdisp: fix build error when modules are
  disabled
parents 86731a2a 666c23af
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -24063,6 +24063,7 @@ M: Bin Du <bin.du@amd.com>
L:	linux-i2c@vger.kernel.org
S:	Maintained
F:	drivers/i2c/busses/i2c-designware-amdisp.c
F:	include/linux/soc/amd/isp4_misc.h
SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
M:	Jaehoon Chung <jh80.chung@samsung.com>
+2 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/soc/amd/isp4_misc.h>

#include "i2c-designware-core.h"

@@ -62,6 +63,7 @@ static int amd_isp_dw_i2c_plat_probe(struct platform_device *pdev)

	adap = &isp_i2c_dev->adapter;
	adap->owner = THIS_MODULE;
	scnprintf(adap->name, sizeof(adap->name), AMDISP_I2C_ADAP_NAME);
	ACPI_COMPANION_SET(&adap->dev, ACPI_COMPANION(&pdev->dev));
	adap->dev.of_node = pdev->dev.of_node;
	/* use dynamically allocated adapter id */
+3 −2
Original line number Diff line number Diff line
@@ -1042,7 +1042,8 @@ int i2c_dw_probe_master(struct dw_i2c_dev *dev)
	if (ret)
		return ret;

	snprintf(adap->name, sizeof(adap->name),
	if (!adap->name[0])
		scnprintf(adap->name, sizeof(adap->name),
			  "Synopsys DesignWare I2C adapter");
	adap->retries = 3;
	adap->algo = &i2c_dw_algo;
+2 −1
Original line number Diff line number Diff line
@@ -1008,7 +1008,7 @@ static inline int i2c_imx_isr_read(struct imx_i2c_struct *i2c_imx)
	/* setup bus to read data */
	temp = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR);
	temp &= ~I2CR_MTX;
	if (i2c_imx->msg->len - 1)
	if ((i2c_imx->msg->len - 1) || (i2c_imx->msg->flags & I2C_M_RECV_LEN))
		temp &= ~I2CR_TXAK;

	imx_i2c_write_reg(temp, i2c_imx, IMX_I2C_I2CR);
@@ -1063,6 +1063,7 @@ static inline void i2c_imx_isr_read_block_data_len(struct imx_i2c_struct *i2c_im
		wake_up(&i2c_imx->queue);
	}
	i2c_imx->msg->len += len;
	i2c_imx->msg->buf[i2c_imx->msg_buf_idx++] = len;
}

static irqreturn_t i2c_imx_master_isr(struct imx_i2c_struct *i2c_imx, unsigned int status)
+5 −2
Original line number Diff line number Diff line
@@ -1461,13 +1461,13 @@ omap_i2c_probe(struct platform_device *pdev)
		if (IS_ERR(mux_state)) {
			r = PTR_ERR(mux_state);
			dev_dbg(&pdev->dev, "failed to get I2C mux: %d\n", r);
			goto err_disable_pm;
			goto err_put_pm;
		}
		omap->mux_state = mux_state;
		r = mux_state_select(omap->mux_state);
		if (r) {
			dev_err(&pdev->dev, "failed to select I2C mux: %d\n", r);
			goto err_disable_pm;
			goto err_put_pm;
		}
	}

@@ -1515,6 +1515,9 @@ omap_i2c_probe(struct platform_device *pdev)

err_unuse_clocks:
	omap_i2c_write_reg(omap, OMAP_I2C_CON_REG, 0);
	if (omap->mux_state)
		mux_state_deselect(omap->mux_state);
err_put_pm:
	pm_runtime_dont_use_autosuspend(omap->dev);
	pm_runtime_put_sync(omap->dev);
err_disable_pm:
Loading