Commit b90e90f4 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux

Pull i2c fixes from Wolfram Sang:
 "This is a bit larger than usual at rc4 time. The reason is due to
  Lee's work of fixing newly reported build warnings.

  The rest is fixes as usual"

* 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (22 commits)
  MAINTAINERS: adjust to removing i2c designware platform data
  i2c: s3c2410: fix possible NULL pointer deref on read message after write
  i2c: mediatek: Disable i2c start_en and clear intr_stat brfore reset
  i2c: i801: Don't generate an interrupt on bus reset
  i2c: mpc: implement erratum A-004447 workaround
  powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P1010 i2c controllers
  powerpc/fsl: set fsl,i2c-erratum-a004447 flag for P2041 i2c controllers
  dt-bindings: i2c: mpc: Add fsl,i2c-erratum-a004447 flag
  i2c: busses: i2c-stm32f4: Remove incorrectly placed ' ' from function name
  i2c: busses: i2c-st: Fix copy/paste function misnaming issues
  i2c: busses: i2c-pnx: Provide descriptions for 'alg_data' data structure
  i2c: busses: i2c-ocores: Place the expected function names into the documentation headers
  i2c: busses: i2c-eg20t: Fix 'bad line' issue and provide description for 'msgs' param
  i2c: busses: i2c-designware-master: Fix misnaming of 'i2c_dw_init_master()'
  i2c: busses: i2c-cadence: Fix incorrectly documented 'enum cdns_i2c_slave_mode'
  i2c: busses: i2c-ali1563: File headers are not good candidates for kernel-doc
  i2c: muxes: i2c-arb-gpio-challenge: Demote non-conformant kernel-doc headers
  i2c: busses: i2c-nomadik: Fix formatting issue pertaining to 'timeout'
  i2c: sh_mobile: Use new clock calculation formulas for RZ/G2E
  i2c: I2C_HISI should depend on ACPI
  ...
parents 9a76c0ee 8aa0ae43
...@@ -46,6 +46,13 @@ properties: ...@@ -46,6 +46,13 @@ properties:
description: | description: |
I2C bus timeout in microseconds I2C bus timeout in microseconds
fsl,i2c-erratum-a004447:
$ref: /schemas/types.yaml#/definitions/flag
description: |
Indicates the presence of QorIQ erratum A-004447, which
says that the standard i2c recovery scheme mechanism does
not work and an alternate implementation is needed.
required: required:
- compatible - compatible
- reg - reg
......
...@@ -17678,7 +17678,6 @@ R: Mika Westerberg <mika.westerberg@linux.intel.com> ...@@ -17678,7 +17678,6 @@ R: Mika Westerberg <mika.westerberg@linux.intel.com>
L: linux-i2c@vger.kernel.org L: linux-i2c@vger.kernel.org
S: Maintained S: Maintained
F: drivers/i2c/busses/i2c-designware-* F: drivers/i2c/busses/i2c-designware-*
F: include/linux/platform_data/i2c-designware.h
SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
M: Jaehoon Chung <jh80.chung@samsung.com> M: Jaehoon Chung <jh80.chung@samsung.com>
......
...@@ -122,7 +122,15 @@ memory-controller@2000 { ...@@ -122,7 +122,15 @@ memory-controller@2000 {
}; };
/include/ "pq3-i2c-0.dtsi" /include/ "pq3-i2c-0.dtsi"
i2c@3000 {
fsl,i2c-erratum-a004447;
};
/include/ "pq3-i2c-1.dtsi" /include/ "pq3-i2c-1.dtsi"
i2c@3100 {
fsl,i2c-erratum-a004447;
};
/include/ "pq3-duart-0.dtsi" /include/ "pq3-duart-0.dtsi"
/include/ "pq3-espi-0.dtsi" /include/ "pq3-espi-0.dtsi"
spi0: spi@7000 { spi0: spi@7000 {
......
...@@ -371,7 +371,23 @@ sdhc@114000 { ...@@ -371,7 +371,23 @@ sdhc@114000 {
}; };
/include/ "qoriq-i2c-0.dtsi" /include/ "qoriq-i2c-0.dtsi"
i2c@118000 {
fsl,i2c-erratum-a004447;
};
i2c@118100 {
fsl,i2c-erratum-a004447;
};
/include/ "qoriq-i2c-1.dtsi" /include/ "qoriq-i2c-1.dtsi"
i2c@119000 {
fsl,i2c-erratum-a004447;
};
i2c@119100 {
fsl,i2c-erratum-a004447;
};
/include/ "qoriq-duart-0.dtsi" /include/ "qoriq-duart-0.dtsi"
/include/ "qoriq-duart-1.dtsi" /include/ "qoriq-duart-1.dtsi"
/include/ "qoriq-gpio-0.dtsi" /include/ "qoriq-gpio-0.dtsi"
......
...@@ -647,7 +647,7 @@ config I2C_HIGHLANDER ...@@ -647,7 +647,7 @@ config I2C_HIGHLANDER
config I2C_HISI config I2C_HISI
tristate "HiSilicon I2C controller" tristate "HiSilicon I2C controller"
depends on ARM64 || COMPILE_TEST depends on (ARM64 && ACPI) || COMPILE_TEST
help help
Say Y here if you want to have Hisilicon I2C controller support Say Y here if you want to have Hisilicon I2C controller support
available on the Kunpeng Server. available on the Kunpeng Server.
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/** /*
* i2c-ali1563.c - i2c driver for the ALi 1563 Southbridge * i2c-ali1563.c - i2c driver for the ALi 1563 Southbridge
* *
* Copyright (C) 2004 Patrick Mochel * Copyright (C) 2004 Patrick Mochel
......
...@@ -144,7 +144,7 @@ enum cdns_i2c_mode { ...@@ -144,7 +144,7 @@ enum cdns_i2c_mode {
}; };
/** /**
* enum cdns_i2c_slave_mode - Slave state when I2C is operating in slave mode * enum cdns_i2c_slave_state - Slave state when I2C is operating in slave mode
* *
* @CDNS_I2C_SLAVE_STATE_IDLE: I2C slave idle * @CDNS_I2C_SLAVE_STATE_IDLE: I2C slave idle
* @CDNS_I2C_SLAVE_STATE_SEND: I2C slave sending data to master * @CDNS_I2C_SLAVE_STATE_SEND: I2C slave sending data to master
......
...@@ -165,7 +165,7 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev) ...@@ -165,7 +165,7 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
} }
/** /**
* i2c_dw_init() - Initialize the designware I2C master hardware * i2c_dw_init_master() - Initialize the designware I2C master hardware
* @dev: device private data * @dev: device private data
* *
* This functions configures and enables the I2C master. * This functions configures and enables the I2C master.
......
...@@ -148,7 +148,7 @@ struct i2c_algo_pch_data { ...@@ -148,7 +148,7 @@ struct i2c_algo_pch_data {
/** /**
* struct adapter_info - This structure holds the adapter information for the * struct adapter_info - This structure holds the adapter information for the
PCH i2c controller * PCH i2c controller
* @pch_data: stores a list of i2c_algo_pch_data * @pch_data: stores a list of i2c_algo_pch_data
* @pch_i2c_suspended: specifies whether the system is suspended or not * @pch_i2c_suspended: specifies whether the system is suspended or not
* perhaps with more lines and words. * perhaps with more lines and words.
...@@ -358,6 +358,7 @@ static void pch_i2c_repstart(struct i2c_algo_pch_data *adap) ...@@ -358,6 +358,7 @@ static void pch_i2c_repstart(struct i2c_algo_pch_data *adap)
/** /**
* pch_i2c_writebytes() - write data to I2C bus in normal mode * pch_i2c_writebytes() - write data to I2C bus in normal mode
* @i2c_adap: Pointer to the struct i2c_adapter. * @i2c_adap: Pointer to the struct i2c_adapter.
* @msgs: Pointer to the i2c message structure.
* @last: specifies whether last message or not. * @last: specifies whether last message or not.
* In the case of compound mode it will be 1 for last message, * In the case of compound mode it will be 1 for last message,
* otherwise 0. * otherwise 0.
......
...@@ -395,11 +395,9 @@ static int i801_check_post(struct i801_priv *priv, int status) ...@@ -395,11 +395,9 @@ static int i801_check_post(struct i801_priv *priv, int status)
dev_err(&priv->pci_dev->dev, "Transaction timeout\n"); dev_err(&priv->pci_dev->dev, "Transaction timeout\n");
/* try to stop the current command */ /* try to stop the current command */
dev_dbg(&priv->pci_dev->dev, "Terminating the current operation\n"); dev_dbg(&priv->pci_dev->dev, "Terminating the current operation\n");
outb_p(inb_p(SMBHSTCNT(priv)) | SMBHSTCNT_KILL, outb_p(SMBHSTCNT_KILL, SMBHSTCNT(priv));
SMBHSTCNT(priv));
usleep_range(1000, 2000); usleep_range(1000, 2000);
outb_p(inb_p(SMBHSTCNT(priv)) & (~SMBHSTCNT_KILL), outb_p(0, SMBHSTCNT(priv));
SMBHSTCNT(priv));
/* Check if it worked */ /* Check if it worked */
status = inb_p(SMBHSTSTS(priv)); status = inb_p(SMBHSTSTS(priv));
......
...@@ -123,7 +123,6 @@ static int icy_probe(struct zorro_dev *z, ...@@ -123,7 +123,6 @@ static int icy_probe(struct zorro_dev *z,
{ {
struct icy_i2c *i2c; struct icy_i2c *i2c;
struct i2c_algo_pcf_data *algo_data; struct i2c_algo_pcf_data *algo_data;
struct fwnode_handle *new_fwnode;
struct i2c_board_info ltc2990_info = { struct i2c_board_info ltc2990_info = {
.type = "ltc2990", .type = "ltc2990",
.swnode = &icy_ltc2990_node, .swnode = &icy_ltc2990_node,
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/fsl_devices.h> #include <linux/fsl_devices.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
...@@ -45,6 +46,7 @@ ...@@ -45,6 +46,7 @@
#define CCR_MTX 0x10 #define CCR_MTX 0x10
#define CCR_TXAK 0x08 #define CCR_TXAK 0x08
#define CCR_RSTA 0x04 #define CCR_RSTA 0x04
#define CCR_RSVD 0x02
#define CSR_MCF 0x80 #define CSR_MCF 0x80
#define CSR_MAAS 0x40 #define CSR_MAAS 0x40
...@@ -97,7 +99,7 @@ struct mpc_i2c { ...@@ -97,7 +99,7 @@ struct mpc_i2c {
u32 block; u32 block;
int rc; int rc;
int expect_rxack; int expect_rxack;
bool has_errata_A004447;
}; };
struct mpc_i2c_divider { struct mpc_i2c_divider {
...@@ -136,6 +138,75 @@ static void mpc_i2c_fixup(struct mpc_i2c *i2c) ...@@ -136,6 +138,75 @@ static void mpc_i2c_fixup(struct mpc_i2c *i2c)
} }
} }
static int i2c_mpc_wait_sr(struct mpc_i2c *i2c, int mask)
{
void __iomem *addr = i2c->base + MPC_I2C_SR;
u8 val;
return readb_poll_timeout(addr, val, val & mask, 0, 100);
}
/*
* Workaround for Erratum A004447. From the P2040CE Rev Q
*
* 1. Set up the frequency divider and sampling rate.
* 2. I2CCR - a0h
* 3. Poll for I2CSR[MBB] to get set.
* 4. If I2CSR[MAL] is set (an indication that SDA is stuck low), then go to
* step 5. If MAL is not set, then go to step 13.
* 5. I2CCR - 00h
* 6. I2CCR - 22h
* 7. I2CCR - a2h
* 8. Poll for I2CSR[MBB] to get set.
* 9. Issue read to I2CDR.
* 10. Poll for I2CSR[MIF] to be set.
* 11. I2CCR - 82h
* 12. Workaround complete. Skip the next steps.
* 13. Issue read to I2CDR.
* 14. Poll for I2CSR[MIF] to be set.
* 15. I2CCR - 80h
*/
static void mpc_i2c_fixup_A004447(struct mpc_i2c *i2c)
{
int ret;
u32 val;
writeccr(i2c, CCR_MEN | CCR_MSTA);
ret = i2c_mpc_wait_sr(i2c, CSR_MBB);
if (ret) {
dev_err(i2c->dev, "timeout waiting for CSR_MBB\n");
return;
}
val = readb(i2c->base + MPC_I2C_SR);
if (val & CSR_MAL) {
writeccr(i2c, 0x00);
writeccr(i2c, CCR_MSTA | CCR_RSVD);
writeccr(i2c, CCR_MEN | CCR_MSTA | CCR_RSVD);
ret = i2c_mpc_wait_sr(i2c, CSR_MBB);
if (ret) {
dev_err(i2c->dev, "timeout waiting for CSR_MBB\n");
return;
}
val = readb(i2c->base + MPC_I2C_DR);
ret = i2c_mpc_wait_sr(i2c, CSR_MIF);
if (ret) {
dev_err(i2c->dev, "timeout waiting for CSR_MIF\n");
return;
}
writeccr(i2c, CCR_MEN | CCR_RSVD);
} else {
val = readb(i2c->base + MPC_I2C_DR);
ret = i2c_mpc_wait_sr(i2c, CSR_MIF);
if (ret) {
dev_err(i2c->dev, "timeout waiting for CSR_MIF\n");
return;
}
writeccr(i2c, CCR_MEN);
}
}
#if defined(CONFIG_PPC_MPC52xx) || defined(CONFIG_PPC_MPC512x) #if defined(CONFIG_PPC_MPC52xx) || defined(CONFIG_PPC_MPC512x)
static const struct mpc_i2c_divider mpc_i2c_dividers_52xx[] = { static const struct mpc_i2c_divider mpc_i2c_dividers_52xx[] = {
{20, 0x20}, {22, 0x21}, {24, 0x22}, {26, 0x23}, {20, 0x20}, {22, 0x21}, {24, 0x22}, {26, 0x23},
...@@ -670,7 +741,10 @@ static int fsl_i2c_bus_recovery(struct i2c_adapter *adap) ...@@ -670,7 +741,10 @@ static int fsl_i2c_bus_recovery(struct i2c_adapter *adap)
{ {
struct mpc_i2c *i2c = i2c_get_adapdata(adap); struct mpc_i2c *i2c = i2c_get_adapdata(adap);
mpc_i2c_fixup(i2c); if (i2c->has_errata_A004447)
mpc_i2c_fixup_A004447(i2c);
else
mpc_i2c_fixup(i2c);
return 0; return 0;
} }
...@@ -767,6 +841,9 @@ static int fsl_i2c_probe(struct platform_device *op) ...@@ -767,6 +841,9 @@ static int fsl_i2c_probe(struct platform_device *op)
} }
dev_info(i2c->dev, "timeout %u us\n", mpc_ops.timeout * 1000000 / HZ); dev_info(i2c->dev, "timeout %u us\n", mpc_ops.timeout * 1000000 / HZ);
if (of_property_read_bool(op->dev.of_node, "fsl,i2c-erratum-a004447"))
i2c->has_errata_A004447 = true;
i2c->adap = mpc_ops; i2c->adap = mpc_ops;
scnprintf(i2c->adap.name, sizeof(i2c->adap.name), scnprintf(i2c->adap.name, sizeof(i2c->adap.name),
"MPC adapter (%s)", of_node_full_name(op->dev.of_node)); "MPC adapter (%s)", of_node_full_name(op->dev.of_node));
......
...@@ -479,6 +479,11 @@ static void mtk_i2c_clock_disable(struct mtk_i2c *i2c) ...@@ -479,6 +479,11 @@ static void mtk_i2c_clock_disable(struct mtk_i2c *i2c)
static void mtk_i2c_init_hw(struct mtk_i2c *i2c) static void mtk_i2c_init_hw(struct mtk_i2c *i2c)
{ {
u16 control_reg; u16 control_reg;
u16 intr_stat_reg;
mtk_i2c_writew(i2c, I2C_CHN_CLR_FLAG, OFFSET_START);
intr_stat_reg = mtk_i2c_readw(i2c, OFFSET_INTR_STAT);
mtk_i2c_writew(i2c, intr_stat_reg, OFFSET_INTR_STAT);
if (i2c->dev_comp->apdma_sync) { if (i2c->dev_comp->apdma_sync) {
writel(I2C_DMA_WARM_RST, i2c->pdmabase + OFFSET_RST); writel(I2C_DMA_WARM_RST, i2c->pdmabase + OFFSET_RST);
......
...@@ -159,7 +159,7 @@ struct i2c_nmk_client { ...@@ -159,7 +159,7 @@ struct i2c_nmk_client {
* @clk_freq: clock frequency for the operation mode * @clk_freq: clock frequency for the operation mode
* @tft: Tx FIFO Threshold in bytes * @tft: Tx FIFO Threshold in bytes
* @rft: Rx FIFO Threshold in bytes * @rft: Rx FIFO Threshold in bytes
* @timeout Slave response timeout (ms) * @timeout: Slave response timeout (ms)
* @sm: speed mode * @sm: speed mode
* @stop: stop condition. * @stop: stop condition.
* @xfer_complete: acknowledge completion for a I2C message. * @xfer_complete: acknowledge completion for a I2C message.
......
...@@ -250,7 +250,7 @@ static irqreturn_t ocores_isr(int irq, void *dev_id) ...@@ -250,7 +250,7 @@ static irqreturn_t ocores_isr(int irq, void *dev_id)
} }
/** /**
* Process timeout event * ocores_process_timeout() - Process timeout event
* @i2c: ocores I2C device instance * @i2c: ocores I2C device instance
*/ */
static void ocores_process_timeout(struct ocores_i2c *i2c) static void ocores_process_timeout(struct ocores_i2c *i2c)
...@@ -264,7 +264,7 @@ static void ocores_process_timeout(struct ocores_i2c *i2c) ...@@ -264,7 +264,7 @@ static void ocores_process_timeout(struct ocores_i2c *i2c)
} }
/** /**
* Wait until something change in a given register * ocores_wait() - Wait until something change in a given register
* @i2c: ocores I2C device instance * @i2c: ocores I2C device instance
* @reg: register to query * @reg: register to query
* @mask: bitmask to apply on register value * @mask: bitmask to apply on register value
...@@ -296,7 +296,7 @@ static int ocores_wait(struct ocores_i2c *i2c, ...@@ -296,7 +296,7 @@ static int ocores_wait(struct ocores_i2c *i2c,
} }
/** /**
* Wait until is possible to process some data * ocores_poll_wait() - Wait until is possible to process some data
* @i2c: ocores I2C device instance * @i2c: ocores I2C device instance
* *
* Used when the device is in polling mode (interrupts disabled). * Used when the device is in polling mode (interrupts disabled).
...@@ -334,7 +334,7 @@ static int ocores_poll_wait(struct ocores_i2c *i2c) ...@@ -334,7 +334,7 @@ static int ocores_poll_wait(struct ocores_i2c *i2c)
} }
/** /**
* It handles an IRQ-less transfer * ocores_process_polling() - It handles an IRQ-less transfer
* @i2c: ocores I2C device instance * @i2c: ocores I2C device instance
* *
* Even if IRQ are disabled, the I2C OpenCore IP behavior is exactly the same * Even if IRQ are disabled, the I2C OpenCore IP behavior is exactly the same
......
...@@ -138,7 +138,7 @@ static inline void i2c_pnx_arm_timer(struct i2c_pnx_algo_data *alg_data) ...@@ -138,7 +138,7 @@ static inline void i2c_pnx_arm_timer(struct i2c_pnx_algo_data *alg_data)
/** /**
* i2c_pnx_start - start a device * i2c_pnx_start - start a device
* @slave_addr: slave address * @slave_addr: slave address
* @adap: pointer to adapter structure * @alg_data: pointer to local driver data structure
* *
* Generate a START signal in the desired mode. * Generate a START signal in the desired mode.
*/ */
...@@ -194,7 +194,7 @@ static int i2c_pnx_start(unsigned char slave_addr, ...@@ -194,7 +194,7 @@ static int i2c_pnx_start(unsigned char slave_addr,
/** /**
* i2c_pnx_stop - stop a device * i2c_pnx_stop - stop a device
* @adap: pointer to I2C adapter structure * @alg_data: pointer to local driver data structure
* *
* Generate a STOP signal to terminate the master transaction. * Generate a STOP signal to terminate the master transaction.
*/ */
...@@ -223,7 +223,7 @@ static void i2c_pnx_stop(struct i2c_pnx_algo_data *alg_data) ...@@ -223,7 +223,7 @@ static void i2c_pnx_stop(struct i2c_pnx_algo_data *alg_data)
/** /**
* i2c_pnx_master_xmit - transmit data to slave * i2c_pnx_master_xmit - transmit data to slave
* @adap: pointer to I2C adapter structure * @alg_data: pointer to local driver data structure
* *
* Sends one byte of data to the slave * Sends one byte of data to the slave
*/ */
...@@ -293,7 +293,7 @@ static int i2c_pnx_master_xmit(struct i2c_pnx_algo_data *alg_data) ...@@ -293,7 +293,7 @@ static int i2c_pnx_master_xmit(struct i2c_pnx_algo_data *alg_data)
/** /**
* i2c_pnx_master_rcv - receive data from slave * i2c_pnx_master_rcv - receive data from slave
* @adap: pointer to I2C adapter structure * @alg_data: pointer to local driver data structure
* *
* Reads one byte data from the slave * Reads one byte data from the slave
*/ */
......
...@@ -100,7 +100,7 @@ static const struct geni_i2c_err_log gi2c_log[] = { ...@@ -100,7 +100,7 @@ static const struct geni_i2c_err_log gi2c_log[] = {
[GP_IRQ0] = {-EIO, "Unknown I2C err GP_IRQ0"}, [GP_IRQ0] = {-EIO, "Unknown I2C err GP_IRQ0"},
[NACK] = {-ENXIO, "NACK: slv unresponsive, check its power/reset-ln"}, [NACK] = {-ENXIO, "NACK: slv unresponsive, check its power/reset-ln"},
[GP_IRQ2] = {-EIO, "Unknown I2C err GP IRQ2"}, [GP_IRQ2] = {-EIO, "Unknown I2C err GP IRQ2"},
[BUS_PROTO] = {-EPROTO, "Bus proto err, noisy/unepxected start/stop"}, [BUS_PROTO] = {-EPROTO, "Bus proto err, noisy/unexpected start/stop"},
[ARB_LOST] = {-EAGAIN, "Bus arbitration lost, clock line undriveable"}, [ARB_LOST] = {-EAGAIN, "Bus arbitration lost, clock line undriveable"},
[GP_IRQ5] = {-EIO, "Unknown I2C err GP IRQ5"}, [GP_IRQ5] = {-EIO, "Unknown I2C err GP IRQ5"},
[GENI_OVERRUN] = {-EIO, "Cmd overrun, check GENI cmd-state machine"}, [GENI_OVERRUN] = {-EIO, "Cmd overrun, check GENI cmd-state machine"},
......
...@@ -480,7 +480,10 @@ static int i2c_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat) ...@@ -480,7 +480,10 @@ static int i2c_s3c_irq_nextbyte(struct s3c24xx_i2c *i2c, unsigned long iicstat)
* forces us to send a new START * forces us to send a new START
* when we change direction * when we change direction
*/ */
dev_dbg(i2c->dev,
"missing START before write->read\n");
s3c24xx_i2c_stop(i2c, -EINVAL); s3c24xx_i2c_stop(i2c, -EINVAL);
break;
} }
goto retry_write; goto retry_write;
......
...@@ -807,7 +807,7 @@ static const struct sh_mobile_dt_config r8a7740_dt_config = { ...@@ -807,7 +807,7 @@ static const struct sh_mobile_dt_config r8a7740_dt_config = {
static const struct of_device_id sh_mobile_i2c_dt_ids[] = { static const struct of_device_id sh_mobile_i2c_dt_ids[] = {
{ .compatible = "renesas,iic-r8a73a4", .data = &fast_clock_dt_config }, { .compatible = "renesas,iic-r8a73a4", .data = &fast_clock_dt_config },
{ .compatible = "renesas,iic-r8a7740", .data = &r8a7740_dt_config }, { .compatible = "renesas,iic-r8a7740", .data = &r8a7740_dt_config },
{ .compatible = "renesas,iic-r8a774c0", .data = &fast_clock_dt_config }, { .compatible = "renesas,iic-r8a774c0", .data = &v2_freq_calc_dt_config },
{ .compatible = "renesas,iic-r8a7790", .data = &v2_freq_calc_dt_config }, { .compatible = "renesas,iic-r8a7790", .data = &v2_freq_calc_dt_config },
{ .compatible = "renesas,iic-r8a7791", .data = &v2_freq_calc_dt_config }, { .compatible = "renesas,iic-r8a7791", .data = &v2_freq_calc_dt_config },
{ .compatible = "renesas,iic-r8a7792", .data = &v2_freq_calc_dt_config }, { .compatible = "renesas,iic-r8a7792", .data = &v2_freq_calc_dt_config },
......
...@@ -524,7 +524,7 @@ static void st_i2c_handle_write(struct st_i2c_dev *i2c_dev) ...@@ -524,7 +524,7 @@ static void st_i2c_handle_write(struct st_i2c_dev *i2c_dev)
} }
/** /**
* st_i2c_handle_write() - Handle FIFO enmpty interrupt in case of read * st_i2c_handle_read() - Handle FIFO empty interrupt in case of read
* @i2c_dev: Controller's private data * @i2c_dev: Controller's private data
*/ */
static void st_i2c_handle_read(struct st_i2c_dev *i2c_dev) static void st_i2c_handle_read(struct st_i2c_dev *i2c_dev)
...@@ -558,7 +558,7 @@ static void st_i2c_handle_read(struct st_i2c_dev *i2c_dev) ...@@ -558,7 +558,7 @@ static void st_i2c_handle_read(struct st_i2c_dev *i2c_dev)
} }
/** /**
* st_i2c_isr() - Interrupt routine * st_i2c_isr_thread() - Interrupt routine
* @irq: interrupt number * @irq: interrupt number
* @data: Controller's private data * @data: Controller's private data
*/ */
......
...@@ -313,7 +313,7 @@ static int stm32f4_i2c_wait_free_bus(struct stm32f4_i2c_dev *i2c_dev) ...@@ -313,7 +313,7 @@ static int stm32f4_i2c_wait_free_bus(struct stm32f4_i2c_dev *i2c_dev)
} }
/** /**
* stm32f4_i2c_write_ byte() - Write a byte in the data register * stm32f4_i2c_write_byte() - Write a byte in the data register
* @i2c_dev: Controller's private data * @i2c_dev: Controller's private data
* @byte: Data to write in the register * @byte: Data to write in the register
*/ */
......
...@@ -34,7 +34,7 @@ struct i2c_arbitrator_data { ...@@ -34,7 +34,7 @@ struct i2c_arbitrator_data {
}; };
/** /*
* i2c_arbitrator_select - claim the I2C bus * i2c_arbitrator_select - claim the I2C bus
* *
* Use the GPIO-based signalling protocol; return -EBUSY if we fail. * Use the GPIO-based signalling protocol; return -EBUSY if we fail.
...@@ -77,7 +77,7 @@ static int i2c_arbitrator_select(struct i2c_mux_core *muxc, u32 chan) ...@@ -77,7 +77,7 @@ static int i2c_arbitrator_select(struct i2c_mux_core *muxc, u32 chan)
return -EBUSY; return -EBUSY;
} }
/** /*
* i2c_arbitrator_deselect - release the I2C bus * i2c_arbitrator_deselect - release the I2C bus
* *
* Release the I2C bus using the GPIO-based signalling protocol. * Release the I2C bus using the GPIO-based signalling protocol.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment