i2c_dev 1759 drivers/clk/tegra/clk-dfll.c struct device *i2c_dev; i2c_dev 1768 drivers/clk/tegra/clk-dfll.c i2c_dev = regmap_get_device(regmap); i2c_dev 1769 drivers/clk/tegra/clk-dfll.c i2c_client = to_i2c_client(i2c_dev); i2c_dev 217 drivers/gpu/drm/gma500/oaktrail.h struct hdmi_i2c_dev *i2c_dev; i2c_dev 96 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c struct hdmi_i2c_dev *i2c_dev = hdmi_dev->i2c_dev; i2c_dev 99 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev->status = I2C_STAT_INIT; i2c_dev 100 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev->msg = pmsg; i2c_dev 101 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev->buf_offset = 0; i2c_dev 102 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c reinit_completion(&i2c_dev->complete); i2c_dev 109 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c while (i2c_dev->status != I2C_TRANSACTION_DONE) i2c_dev 110 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c wait_for_completion_interruptible_timeout(&i2c_dev->complete, i2c_dev 129 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c struct hdmi_i2c_dev *i2c_dev = hdmi_dev->i2c_dev; i2c_dev 132 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c mutex_lock(&i2c_dev->i2c_lock); i2c_dev 152 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c mutex_unlock(&i2c_dev->i2c_lock); i2c_dev 177 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c struct hdmi_i2c_dev *i2c_dev = hdmi_dev->i2c_dev; i2c_dev 178 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c struct i2c_msg *msg = i2c_dev->msg; i2c_dev 183 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c offset = i2c_dev->buf_offset; i2c_dev 188 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev->buf_offset += (0x10 * 4); i2c_dev 200 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev->status = I2C_READ_DONE; i2c_dev 206 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c struct hdmi_i2c_dev *i2c_dev = hdmi_dev->i2c_dev; i2c_dev 219 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev->status = I2C_TRANSACTION_DONE; i2c_dev 226 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c struct hdmi_i2c_dev *i2c_dev = hdmi_dev->i2c_dev; i2c_dev 242 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c complete(&i2c_dev->complete); i2c_dev 276 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c struct hdmi_i2c_dev *i2c_dev; i2c_dev 281 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev = kzalloc(sizeof(struct hdmi_i2c_dev), GFP_KERNEL); i2c_dev 282 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c if (i2c_dev == NULL) { i2c_dev 288 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev->adap = &oaktrail_hdmi_i2c_adapter; i2c_dev 289 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev->status = I2C_STAT_INIT; i2c_dev 290 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c init_completion(&i2c_dev->complete); i2c_dev 291 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c mutex_init(&i2c_dev->i2c_lock); i2c_dev 293 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c hdmi_dev->i2c_dev = i2c_dev; i2c_dev 311 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c kfree(i2c_dev); i2c_dev 319 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c struct hdmi_i2c_dev *i2c_dev; i2c_dev 324 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c i2c_dev = hdmi_dev->i2c_dev; i2c_dev 325 drivers/gpu/drm/gma500/oaktrail_hdmi_i2c.c kfree(i2c_dev); i2c_dev 44 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_dev *i2c_dev = amd_i2c_dev_common(i2c_common); i2c_dev 55 drivers/i2c/busses/i2c-amd-mp2-plat.c dev_err(&i2c_dev->pdev->dev, i2c_dev 77 drivers/i2c/busses/i2c-amd-mp2-plat.c static void i2c_amd_start_cmd(struct amd_i2c_dev *i2c_dev) i2c_dev 79 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_common *i2c_common = &i2c_dev->common; i2c_dev 81 drivers/i2c/busses/i2c-amd-mp2-plat.c reinit_completion(&i2c_dev->cmd_complete); i2c_dev 87 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_dev *i2c_dev = amd_i2c_dev_common(i2c_common); i2c_dev 91 drivers/i2c/busses/i2c-amd-mp2-plat.c dev_dbg(&i2c_dev->pdev->dev, "%s readdata:%*ph\n", i2c_dev 95 drivers/i2c/busses/i2c-amd-mp2-plat.c complete(&i2c_dev->cmd_complete); i2c_dev 98 drivers/i2c/busses/i2c-amd-mp2-plat.c static int i2c_amd_check_cmd_completion(struct amd_i2c_dev *i2c_dev) i2c_dev 100 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_common *i2c_common = &i2c_dev->common; i2c_dev 103 drivers/i2c/busses/i2c-amd-mp2-plat.c timeout = wait_for_completion_timeout(&i2c_dev->cmd_complete, i2c_dev 104 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->adap.timeout); i2c_dev 124 drivers/i2c/busses/i2c-amd-mp2-plat.c static int i2c_amd_enable_set(struct amd_i2c_dev *i2c_dev, bool enable) i2c_dev 126 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_common *i2c_common = &i2c_dev->common; i2c_dev 128 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_amd_start_cmd(i2c_dev); i2c_dev 131 drivers/i2c/busses/i2c-amd-mp2-plat.c return i2c_amd_check_cmd_completion(i2c_dev); i2c_dev 134 drivers/i2c/busses/i2c-amd-mp2-plat.c static int i2c_amd_xfer_msg(struct amd_i2c_dev *i2c_dev, struct i2c_msg *pmsg) i2c_dev 136 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_common *i2c_common = &i2c_dev->common; i2c_dev 138 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_amd_start_cmd(i2c_dev); i2c_dev 150 drivers/i2c/busses/i2c-amd-mp2-plat.c return i2c_amd_check_cmd_completion(i2c_dev); i2c_dev 155 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 161 drivers/i2c/busses/i2c-amd-mp2-plat.c if (unlikely(!i2c_dev->common.mp2_dev)) i2c_dev 164 drivers/i2c/busses/i2c-amd-mp2-plat.c amd_mp2_pm_runtime_get(i2c_dev->common.mp2_dev); i2c_dev 168 drivers/i2c/busses/i2c-amd-mp2-plat.c err = i2c_amd_xfer_msg(i2c_dev, pmsg); i2c_dev 173 drivers/i2c/busses/i2c-amd-mp2-plat.c amd_mp2_pm_runtime_put(i2c_dev->common.mp2_dev); i2c_dev 190 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_dev *i2c_dev = amd_i2c_dev_common(i2c_common); i2c_dev 192 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_amd_enable_set(i2c_dev, false); i2c_dev 198 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_dev *i2c_dev = amd_i2c_dev_common(i2c_common); i2c_dev 200 drivers/i2c/busses/i2c-amd-mp2-plat.c return i2c_amd_enable_set(i2c_dev, true); i2c_dev 244 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_dev *i2c_dev; i2c_dev 262 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 263 drivers/i2c/busses/i2c-amd-mp2-plat.c if (!i2c_dev) i2c_dev 266 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->common.mp2_dev = mp2_dev; i2c_dev 267 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->pdev = pdev; i2c_dev 268 drivers/i2c/busses/i2c-amd-mp2-plat.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 270 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->common.cmd_completion = &i2c_amd_cmd_completion; i2c_dev 272 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->common.suspend = &i2c_amd_suspend; i2c_dev 273 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->common.resume = &i2c_amd_resume; i2c_dev 281 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->common.bus_id = 0; i2c_dev 283 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->common.bus_id = 1; i2c_dev 288 drivers/i2c/busses/i2c-amd-mp2-plat.c dev_dbg(&pdev->dev, "bus id is %u\n", i2c_dev->common.bus_id); i2c_dev 293 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->common.reqcmd = i2c_none; i2c_dev 294 drivers/i2c/busses/i2c-amd-mp2-plat.c if (amd_mp2_register_cb(&i2c_dev->common)) i2c_dev 296 drivers/i2c/busses/i2c-amd-mp2-plat.c device_link_add(&i2c_dev->pdev->dev, &mp2_dev->pci_dev->dev, i2c_dev 299 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->common.i2c_speed = i2c_amd_get_bus_speed(pdev); i2c_dev 302 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->adap.owner = THIS_MODULE; i2c_dev 303 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->adap.algo = &i2c_amd_algorithm; i2c_dev 304 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->adap.quirks = &amd_i2c_dev_quirks; i2c_dev 305 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->adap.dev.parent = &pdev->dev; i2c_dev 306 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->adap.algo_data = i2c_dev; i2c_dev 307 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->adap.timeout = AMD_I2C_TIMEOUT; i2c_dev 308 drivers/i2c/busses/i2c-amd-mp2-plat.c ACPI_COMPANION_SET(&i2c_dev->adap.dev, ACPI_COMPANION(&pdev->dev)); i2c_dev 309 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_dev->adap.dev.of_node = pdev->dev.of_node; i2c_dev 310 drivers/i2c/busses/i2c-amd-mp2-plat.c snprintf(i2c_dev->adap.name, sizeof(i2c_dev->adap.name), i2c_dev 311 drivers/i2c/busses/i2c-amd-mp2-plat.c "AMD MP2 i2c bus %u", i2c_dev->common.bus_id); i2c_dev 312 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_set_adapdata(&i2c_dev->adap, i2c_dev); i2c_dev 314 drivers/i2c/busses/i2c-amd-mp2-plat.c init_completion(&i2c_dev->cmd_complete); i2c_dev 317 drivers/i2c/busses/i2c-amd-mp2-plat.c if (i2c_amd_enable_set(i2c_dev, true)) i2c_dev 321 drivers/i2c/busses/i2c-amd-mp2-plat.c ret = i2c_add_adapter(&i2c_dev->adap); i2c_dev 333 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_dev *i2c_dev = platform_get_drvdata(pdev); i2c_dev 334 drivers/i2c/busses/i2c-amd-mp2-plat.c struct amd_i2c_common *i2c_common = &i2c_dev->common; i2c_dev 336 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_lock_bus(&i2c_dev->adap, I2C_LOCK_ROOT_ADAPTER); i2c_dev 338 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_amd_enable_set(i2c_dev, false); i2c_dev 342 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_unlock_bus(&i2c_dev->adap, I2C_LOCK_ROOT_ADAPTER); i2c_dev 344 drivers/i2c/busses/i2c-amd-mp2-plat.c i2c_del_adapter(&i2c_dev->adap); i2c_dev 68 drivers/i2c/busses/i2c-bcm2835.c static inline void bcm2835_i2c_writel(struct bcm2835_i2c_dev *i2c_dev, i2c_dev 71 drivers/i2c/busses/i2c-bcm2835.c writel(val, i2c_dev->regs + reg); i2c_dev 74 drivers/i2c/busses/i2c-bcm2835.c static inline u32 bcm2835_i2c_readl(struct bcm2835_i2c_dev *i2c_dev, u32 reg) i2c_dev 76 drivers/i2c/busses/i2c-bcm2835.c return readl(i2c_dev->regs + reg); i2c_dev 82 drivers/i2c/busses/i2c-bcm2835.c struct bcm2835_i2c_dev *i2c_dev; i2c_dev 114 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(div->i2c_dev, BCM2835_I2C_DIV, divider); i2c_dev 129 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(div->i2c_dev, BCM2835_I2C_DEL, i2c_dev 147 drivers/i2c/busses/i2c-bcm2835.c u32 divider = bcm2835_i2c_readl(div->i2c_dev, BCM2835_I2C_DIV); i2c_dev 160 drivers/i2c/busses/i2c-bcm2835.c struct bcm2835_i2c_dev *i2c_dev) i2c_dev 182 drivers/i2c/busses/i2c-bcm2835.c priv->i2c_dev = i2c_dev; i2c_dev 188 drivers/i2c/busses/i2c-bcm2835.c static void bcm2835_fill_txfifo(struct bcm2835_i2c_dev *i2c_dev) i2c_dev 192 drivers/i2c/busses/i2c-bcm2835.c while (i2c_dev->msg_buf_remaining) { i2c_dev 193 drivers/i2c/busses/i2c-bcm2835.c val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); i2c_dev 196 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_FIFO, i2c_dev 197 drivers/i2c/busses/i2c-bcm2835.c *i2c_dev->msg_buf); i2c_dev 198 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_buf++; i2c_dev 199 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_buf_remaining--; i2c_dev 203 drivers/i2c/busses/i2c-bcm2835.c static void bcm2835_drain_rxfifo(struct bcm2835_i2c_dev *i2c_dev) i2c_dev 207 drivers/i2c/busses/i2c-bcm2835.c while (i2c_dev->msg_buf_remaining) { i2c_dev 208 drivers/i2c/busses/i2c-bcm2835.c val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); i2c_dev 211 drivers/i2c/busses/i2c-bcm2835.c *i2c_dev->msg_buf = bcm2835_i2c_readl(i2c_dev, i2c_dev 213 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_buf++; i2c_dev 214 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_buf_remaining--; i2c_dev 231 drivers/i2c/busses/i2c-bcm2835.c static void bcm2835_i2c_start_transfer(struct bcm2835_i2c_dev *i2c_dev) i2c_dev 234 drivers/i2c/busses/i2c-bcm2835.c struct i2c_msg *msg = i2c_dev->curr_msg; i2c_dev 235 drivers/i2c/busses/i2c-bcm2835.c bool last_msg = (i2c_dev->num_msgs == 1); i2c_dev 237 drivers/i2c/busses/i2c-bcm2835.c if (!i2c_dev->num_msgs) i2c_dev 240 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->num_msgs--; i2c_dev 241 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_buf = msg->buf; i2c_dev 242 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_buf_remaining = msg->len; i2c_dev 252 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_A, msg->addr); i2c_dev 253 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DLEN, msg->len); i2c_dev 254 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, c); i2c_dev 257 drivers/i2c/busses/i2c-bcm2835.c static void bcm2835_i2c_finish_transfer(struct bcm2835_i2c_dev *i2c_dev) i2c_dev 259 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->curr_msg = NULL; i2c_dev 260 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->num_msgs = 0; i2c_dev 262 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_buf = NULL; i2c_dev 263 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_buf_remaining = 0; i2c_dev 277 drivers/i2c/busses/i2c-bcm2835.c struct bcm2835_i2c_dev *i2c_dev = data; i2c_dev 280 drivers/i2c/busses/i2c-bcm2835.c val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); i2c_dev 284 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_err = err; i2c_dev 289 drivers/i2c/busses/i2c-bcm2835.c if (!i2c_dev->curr_msg) { i2c_dev 290 drivers/i2c/busses/i2c-bcm2835.c dev_err(i2c_dev->dev, "Got unexpected interrupt (from firmware?)\n"); i2c_dev 291 drivers/i2c/busses/i2c-bcm2835.c } else if (i2c_dev->curr_msg->flags & I2C_M_RD) { i2c_dev 292 drivers/i2c/busses/i2c-bcm2835.c bcm2835_drain_rxfifo(i2c_dev); i2c_dev 293 drivers/i2c/busses/i2c-bcm2835.c val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S); i2c_dev 296 drivers/i2c/busses/i2c-bcm2835.c if ((val & BCM2835_I2C_S_RXD) || i2c_dev->msg_buf_remaining) i2c_dev 297 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_err = BCM2835_I2C_S_LEN; i2c_dev 299 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_err = 0; i2c_dev 304 drivers/i2c/busses/i2c-bcm2835.c if (!i2c_dev->msg_buf_remaining) { i2c_dev 305 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_err = val | BCM2835_I2C_S_LEN; i2c_dev 309 drivers/i2c/busses/i2c-bcm2835.c bcm2835_fill_txfifo(i2c_dev); i2c_dev 311 drivers/i2c/busses/i2c-bcm2835.c if (i2c_dev->num_msgs && !i2c_dev->msg_buf_remaining) { i2c_dev 312 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->curr_msg++; i2c_dev 313 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_start_transfer(i2c_dev); i2c_dev 320 drivers/i2c/busses/i2c-bcm2835.c if (!i2c_dev->msg_buf_remaining) { i2c_dev 321 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->msg_err = val | BCM2835_I2C_S_LEN; i2c_dev 325 drivers/i2c/busses/i2c-bcm2835.c bcm2835_drain_rxfifo(i2c_dev); i2c_dev 332 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, BCM2835_I2C_C_CLEAR); i2c_dev 333 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_S, BCM2835_I2C_S_CLKT | i2c_dev 335 drivers/i2c/busses/i2c-bcm2835.c complete(&i2c_dev->completion); i2c_dev 343 drivers/i2c/busses/i2c-bcm2835.c struct bcm2835_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 349 drivers/i2c/busses/i2c-bcm2835.c dev_warn_once(i2c_dev->dev, i2c_dev 354 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->curr_msg = msgs; i2c_dev 355 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->num_msgs = num; i2c_dev 356 drivers/i2c/busses/i2c-bcm2835.c reinit_completion(&i2c_dev->completion); i2c_dev 358 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_start_transfer(i2c_dev); i2c_dev 360 drivers/i2c/busses/i2c-bcm2835.c time_left = wait_for_completion_timeout(&i2c_dev->completion, i2c_dev 363 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_finish_transfer(i2c_dev); i2c_dev 366 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, i2c_dev 368 drivers/i2c/busses/i2c-bcm2835.c dev_err(i2c_dev->dev, "i2c transfer timed out\n"); i2c_dev 372 drivers/i2c/busses/i2c-bcm2835.c if (!i2c_dev->msg_err) i2c_dev 375 drivers/i2c/busses/i2c-bcm2835.c dev_dbg(i2c_dev->dev, "i2c transfer failed: %x\n", i2c_dev->msg_err); i2c_dev 377 drivers/i2c/busses/i2c-bcm2835.c if (i2c_dev->msg_err & BCM2835_I2C_S_ERR) i2c_dev 404 drivers/i2c/busses/i2c-bcm2835.c struct bcm2835_i2c_dev *i2c_dev; i2c_dev 411 drivers/i2c/busses/i2c-bcm2835.c i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 412 drivers/i2c/busses/i2c-bcm2835.c if (!i2c_dev) i2c_dev 414 drivers/i2c/busses/i2c-bcm2835.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 415 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->dev = &pdev->dev; i2c_dev 416 drivers/i2c/busses/i2c-bcm2835.c init_completion(&i2c_dev->completion); i2c_dev 419 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->regs = devm_ioremap_resource(&pdev->dev, mem); i2c_dev 420 drivers/i2c/busses/i2c-bcm2835.c if (IS_ERR(i2c_dev->regs)) i2c_dev 421 drivers/i2c/busses/i2c-bcm2835.c return PTR_ERR(i2c_dev->regs); i2c_dev 430 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->bus_clk = bcm2835_i2c_register_div(&pdev->dev, mclk, i2c_dev); i2c_dev 432 drivers/i2c/busses/i2c-bcm2835.c if (IS_ERR(i2c_dev->bus_clk)) { i2c_dev 434 drivers/i2c/busses/i2c-bcm2835.c return PTR_ERR(i2c_dev->bus_clk); i2c_dev 445 drivers/i2c/busses/i2c-bcm2835.c ret = clk_set_rate_exclusive(i2c_dev->bus_clk, bus_clk_rate); i2c_dev 451 drivers/i2c/busses/i2c-bcm2835.c ret = clk_prepare_enable(i2c_dev->bus_clk); i2c_dev 462 drivers/i2c/busses/i2c-bcm2835.c i2c_dev->irq = irq->start; i2c_dev 464 drivers/i2c/busses/i2c-bcm2835.c ret = request_irq(i2c_dev->irq, bcm2835_i2c_isr, IRQF_SHARED, i2c_dev 465 drivers/i2c/busses/i2c-bcm2835.c dev_name(&pdev->dev), i2c_dev); i2c_dev 471 drivers/i2c/busses/i2c-bcm2835.c adap = &i2c_dev->adapter; i2c_dev 472 drivers/i2c/busses/i2c-bcm2835.c i2c_set_adapdata(adap, i2c_dev); i2c_dev 482 drivers/i2c/busses/i2c-bcm2835.c bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, 0); i2c_dev 486 drivers/i2c/busses/i2c-bcm2835.c free_irq(i2c_dev->irq, i2c_dev); i2c_dev 493 drivers/i2c/busses/i2c-bcm2835.c struct bcm2835_i2c_dev *i2c_dev = platform_get_drvdata(pdev); i2c_dev 495 drivers/i2c/busses/i2c-bcm2835.c clk_rate_exclusive_put(i2c_dev->bus_clk); i2c_dev 496 drivers/i2c/busses/i2c-bcm2835.c clk_disable_unprepare(i2c_dev->bus_clk); i2c_dev 498 drivers/i2c/busses/i2c-bcm2835.c free_irq(i2c_dev->irq, i2c_dev); i2c_dev 499 drivers/i2c/busses/i2c-bcm2835.c i2c_del_adapter(&i2c_dev->adapter); i2c_dev 685 drivers/i2c/busses/i2c-brcmstb.c struct brcmstb_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 687 drivers/i2c/busses/i2c-brcmstb.c i2c_mark_adapter_suspended(&i2c_dev->adapter); i2c_dev 693 drivers/i2c/busses/i2c-brcmstb.c struct brcmstb_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 695 drivers/i2c/busses/i2c-brcmstb.c brcmstb_i2c_set_bsc_reg_defaults(i2c_dev); i2c_dev 696 drivers/i2c/busses/i2c-brcmstb.c i2c_mark_adapter_resumed(&i2c_dev->adapter); i2c_dev 144 drivers/i2c/busses/i2c-davinci.c static inline void davinci_i2c_write_reg(struct davinci_i2c_dev *i2c_dev, i2c_dev 147 drivers/i2c/busses/i2c-davinci.c writew_relaxed(val, i2c_dev->base + reg); i2c_dev 150 drivers/i2c/busses/i2c-davinci.c static inline u16 davinci_i2c_read_reg(struct davinci_i2c_dev *i2c_dev, int reg) i2c_dev 152 drivers/i2c/busses/i2c-davinci.c return readw_relaxed(i2c_dev->base + reg); i2c_dev 155 drivers/i2c/busses/i2c-davinci.c static inline void davinci_i2c_reset_ctrl(struct davinci_i2c_dev *i2c_dev, i2c_dev 160 drivers/i2c/busses/i2c-davinci.c w = davinci_i2c_read_reg(i2c_dev, DAVINCI_I2C_MDR_REG); i2c_dev 166 drivers/i2c/busses/i2c-davinci.c davinci_i2c_write_reg(i2c_dev, DAVINCI_I2C_MDR_REG, w); i2c_dev 924 drivers/i2c/busses/i2c-davinci.c struct davinci_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 927 drivers/i2c/busses/i2c-davinci.c davinci_i2c_reset_ctrl(i2c_dev, 0); i2c_dev 934 drivers/i2c/busses/i2c-davinci.c struct davinci_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 937 drivers/i2c/busses/i2c-davinci.c davinci_i2c_reset_ctrl(i2c_dev, 1); i2c_dev 120 drivers/i2c/busses/i2c-owl.c static void owl_i2c_reset(struct owl_i2c_dev *i2c_dev) i2c_dev 122 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_CTL, i2c_dev 125 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_CTL, i2c_dev 129 drivers/i2c/busses/i2c-owl.c writel(0, i2c_dev->base + OWL_I2C_REG_STAT); i2c_dev 132 drivers/i2c/busses/i2c-owl.c static int owl_i2c_reset_fifo(struct owl_i2c_dev *i2c_dev) i2c_dev 137 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_FIFOCTL, i2c_dev 143 drivers/i2c/busses/i2c-owl.c val = readl(i2c_dev->base + OWL_I2C_REG_FIFOCTL); i2c_dev 150 drivers/i2c/busses/i2c-owl.c dev_err(&i2c_dev->adap.dev, "FIFO reset timeout\n"); i2c_dev 157 drivers/i2c/busses/i2c-owl.c static void owl_i2c_set_freq(struct owl_i2c_dev *i2c_dev) i2c_dev 161 drivers/i2c/busses/i2c-owl.c val = DIV_ROUND_UP(i2c_dev->clk_rate, i2c_dev->bus_freq * 16); i2c_dev 164 drivers/i2c/busses/i2c-owl.c writel(OWL_I2C_DIV_FACTOR(val), i2c_dev->base + OWL_I2C_REG_CLKDIV); i2c_dev 169 drivers/i2c/busses/i2c-owl.c struct owl_i2c_dev *i2c_dev = _dev; i2c_dev 170 drivers/i2c/busses/i2c-owl.c struct i2c_msg *msg = i2c_dev->msg; i2c_dev 174 drivers/i2c/busses/i2c-owl.c spin_lock_irqsave(&i2c_dev->lock, flags); i2c_dev 176 drivers/i2c/busses/i2c-owl.c i2c_dev->err = 0; i2c_dev 179 drivers/i2c/busses/i2c-owl.c fifostat = readl(i2c_dev->base + OWL_I2C_REG_FIFOSTAT); i2c_dev 181 drivers/i2c/busses/i2c-owl.c i2c_dev->err = -ENXIO; i2c_dev 186 drivers/i2c/busses/i2c-owl.c stat = readl(i2c_dev->base + OWL_I2C_REG_STAT); i2c_dev 188 drivers/i2c/busses/i2c-owl.c i2c_dev->err = -EIO; i2c_dev 194 drivers/i2c/busses/i2c-owl.c while ((readl(i2c_dev->base + OWL_I2C_REG_FIFOSTAT) & i2c_dev 195 drivers/i2c/busses/i2c-owl.c OWL_I2C_FIFOSTAT_RFE) && i2c_dev->msg_ptr < msg->len) { i2c_dev 196 drivers/i2c/busses/i2c-owl.c msg->buf[i2c_dev->msg_ptr++] = readl(i2c_dev->base + i2c_dev 201 drivers/i2c/busses/i2c-owl.c while (!(readl(i2c_dev->base + OWL_I2C_REG_FIFOSTAT) & i2c_dev 202 drivers/i2c/busses/i2c-owl.c OWL_I2C_FIFOSTAT_TFF) && i2c_dev->msg_ptr < msg->len) { i2c_dev 203 drivers/i2c/busses/i2c-owl.c writel(msg->buf[i2c_dev->msg_ptr++], i2c_dev 204 drivers/i2c/busses/i2c-owl.c i2c_dev->base + OWL_I2C_REG_TXDAT); i2c_dev 210 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_STAT, i2c_dev 213 drivers/i2c/busses/i2c-owl.c complete_all(&i2c_dev->msg_complete); i2c_dev 214 drivers/i2c/busses/i2c-owl.c spin_unlock_irqrestore(&i2c_dev->lock, flags); i2c_dev 226 drivers/i2c/busses/i2c-owl.c struct owl_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 231 drivers/i2c/busses/i2c-owl.c while (readl(i2c_dev->base + OWL_I2C_REG_STAT) & OWL_I2C_STAT_BBB) { i2c_dev 244 drivers/i2c/busses/i2c-owl.c struct owl_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 251 drivers/i2c/busses/i2c-owl.c spin_lock_irqsave(&i2c_dev->lock, flags); i2c_dev 254 drivers/i2c/busses/i2c-owl.c owl_i2c_reset(i2c_dev); i2c_dev 257 drivers/i2c/busses/i2c-owl.c owl_i2c_set_freq(i2c_dev); i2c_dev 263 drivers/i2c/busses/i2c-owl.c spin_unlock_irqrestore(&i2c_dev->lock, flags); i2c_dev 266 drivers/i2c/busses/i2c-owl.c ret = owl_i2c_reset_fifo(i2c_dev); i2c_dev 275 drivers/i2c/busses/i2c-owl.c spin_lock_irqsave(&i2c_dev->lock, flags); i2c_dev 278 drivers/i2c/busses/i2c-owl.c val = readl(i2c_dev->base + OWL_I2C_REG_STAT); i2c_dev 281 drivers/i2c/busses/i2c-owl.c writel(val, i2c_dev->base + OWL_I2C_REG_STAT); i2c_dev 286 drivers/i2c/busses/i2c-owl.c reinit_completion(&i2c_dev->msg_complete); i2c_dev 289 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_CTL, i2c_dev 307 drivers/i2c/busses/i2c-owl.c writel(addr, i2c_dev->base + OWL_I2C_REG_TXDAT); i2c_dev 312 drivers/i2c/busses/i2c-owl.c i2c_dev->base + OWL_I2C_REG_TXDAT); i2c_dev 321 drivers/i2c/busses/i2c-owl.c i2c_dev->msg = msg; i2c_dev 322 drivers/i2c/busses/i2c-owl.c i2c_dev->msg_ptr = 0; i2c_dev 325 drivers/i2c/busses/i2c-owl.c writel(msg->len, i2c_dev->base + OWL_I2C_REG_DATCNT); i2c_dev 328 drivers/i2c/busses/i2c-owl.c writel(addr, i2c_dev->base + OWL_I2C_REG_TXDAT); i2c_dev 334 drivers/i2c/busses/i2c-owl.c if (readl(i2c_dev->base + OWL_I2C_REG_FIFOSTAT) & i2c_dev 339 drivers/i2c/busses/i2c-owl.c i2c_dev->base + OWL_I2C_REG_TXDAT); i2c_dev 342 drivers/i2c/busses/i2c-owl.c i2c_dev->msg_ptr = idx; i2c_dev 347 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_FIFOCTL, i2c_dev 350 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_FIFOCTL, i2c_dev 354 drivers/i2c/busses/i2c-owl.c writel(i2c_cmd, i2c_dev->base + OWL_I2C_REG_CMD); i2c_dev 356 drivers/i2c/busses/i2c-owl.c spin_unlock_irqrestore(&i2c_dev->lock, flags); i2c_dev 358 drivers/i2c/busses/i2c-owl.c time_left = wait_for_completion_timeout(&i2c_dev->msg_complete, i2c_dev 361 drivers/i2c/busses/i2c-owl.c spin_lock_irqsave(&i2c_dev->lock, flags); i2c_dev 365 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_CTL, i2c_dev 372 drivers/i2c/busses/i2c-owl.c ret = i2c_dev->err < 0 ? i2c_dev->err : num; i2c_dev 375 drivers/i2c/busses/i2c-owl.c spin_unlock_irqrestore(&i2c_dev->lock, flags); i2c_dev 379 drivers/i2c/busses/i2c-owl.c owl_i2c_update_reg(i2c_dev->base + OWL_I2C_REG_CTL, i2c_dev 401 drivers/i2c/busses/i2c-owl.c struct owl_i2c_dev *i2c_dev; i2c_dev 405 drivers/i2c/busses/i2c-owl.c i2c_dev = devm_kzalloc(dev, sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 406 drivers/i2c/busses/i2c-owl.c if (!i2c_dev) i2c_dev 410 drivers/i2c/busses/i2c-owl.c i2c_dev->base = devm_ioremap_resource(dev, res); i2c_dev 411 drivers/i2c/busses/i2c-owl.c if (IS_ERR(i2c_dev->base)) i2c_dev 412 drivers/i2c/busses/i2c-owl.c return PTR_ERR(i2c_dev->base); i2c_dev 421 drivers/i2c/busses/i2c-owl.c &i2c_dev->bus_freq)) i2c_dev 422 drivers/i2c/busses/i2c-owl.c i2c_dev->bus_freq = OWL_I2C_DEF_SPEED_HZ; i2c_dev 425 drivers/i2c/busses/i2c-owl.c if (i2c_dev->bus_freq != OWL_I2C_DEF_SPEED_HZ && i2c_dev 426 drivers/i2c/busses/i2c-owl.c i2c_dev->bus_freq != OWL_I2C_MAX_SPEED_HZ) { i2c_dev 427 drivers/i2c/busses/i2c-owl.c dev_err(dev, "invalid clock-frequency %d\n", i2c_dev->bus_freq); i2c_dev 431 drivers/i2c/busses/i2c-owl.c i2c_dev->clk = devm_clk_get(dev, NULL); i2c_dev 432 drivers/i2c/busses/i2c-owl.c if (IS_ERR(i2c_dev->clk)) { i2c_dev 434 drivers/i2c/busses/i2c-owl.c return PTR_ERR(i2c_dev->clk); i2c_dev 437 drivers/i2c/busses/i2c-owl.c ret = clk_prepare_enable(i2c_dev->clk); i2c_dev 441 drivers/i2c/busses/i2c-owl.c i2c_dev->clk_rate = clk_get_rate(i2c_dev->clk); i2c_dev 442 drivers/i2c/busses/i2c-owl.c if (!i2c_dev->clk_rate) { i2c_dev 448 drivers/i2c/busses/i2c-owl.c init_completion(&i2c_dev->msg_complete); i2c_dev 449 drivers/i2c/busses/i2c-owl.c spin_lock_init(&i2c_dev->lock); i2c_dev 450 drivers/i2c/busses/i2c-owl.c i2c_dev->adap.owner = THIS_MODULE; i2c_dev 451 drivers/i2c/busses/i2c-owl.c i2c_dev->adap.algo = &owl_i2c_algorithm; i2c_dev 452 drivers/i2c/busses/i2c-owl.c i2c_dev->adap.timeout = OWL_I2C_TIMEOUT; i2c_dev 453 drivers/i2c/busses/i2c-owl.c i2c_dev->adap.quirks = &owl_i2c_quirks; i2c_dev 454 drivers/i2c/busses/i2c-owl.c i2c_dev->adap.dev.parent = dev; i2c_dev 455 drivers/i2c/busses/i2c-owl.c i2c_dev->adap.dev.of_node = dev->of_node; i2c_dev 456 drivers/i2c/busses/i2c-owl.c snprintf(i2c_dev->adap.name, sizeof(i2c_dev->adap.name), i2c_dev 458 drivers/i2c/busses/i2c-owl.c i2c_set_adapdata(&i2c_dev->adap, i2c_dev); i2c_dev 460 drivers/i2c/busses/i2c-owl.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 463 drivers/i2c/busses/i2c-owl.c i2c_dev); i2c_dev 469 drivers/i2c/busses/i2c-owl.c return i2c_add_adapter(&i2c_dev->adap); i2c_dev 472 drivers/i2c/busses/i2c-owl.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 92 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_set_count(struct sprd_i2c *i2c_dev, u32 count) i2c_dev 94 drivers/i2c/busses/i2c-sprd.c writel(count, i2c_dev->base + I2C_COUNT); i2c_dev 97 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_send_stop(struct sprd_i2c *i2c_dev, int stop) i2c_dev 99 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_CTL); i2c_dev 102 drivers/i2c/busses/i2c-sprd.c writel(tmp & ~STP_EN, i2c_dev->base + I2C_CTL); i2c_dev 104 drivers/i2c/busses/i2c-sprd.c writel(tmp | STP_EN, i2c_dev->base + I2C_CTL); i2c_dev 107 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_clear_start(struct sprd_i2c *i2c_dev) i2c_dev 109 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_CTL); i2c_dev 111 drivers/i2c/busses/i2c-sprd.c writel(tmp & ~I2C_START, i2c_dev->base + I2C_CTL); i2c_dev 114 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_clear_ack(struct sprd_i2c *i2c_dev) i2c_dev 116 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_STATUS); i2c_dev 118 drivers/i2c/busses/i2c-sprd.c writel(tmp & ~I2C_RX_ACK, i2c_dev->base + I2C_STATUS); i2c_dev 121 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_clear_irq(struct sprd_i2c *i2c_dev) i2c_dev 123 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_STATUS); i2c_dev 125 drivers/i2c/busses/i2c-sprd.c writel(tmp & ~I2C_INT, i2c_dev->base + I2C_STATUS); i2c_dev 128 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_reset_fifo(struct sprd_i2c *i2c_dev) i2c_dev 130 drivers/i2c/busses/i2c-sprd.c writel(I2C_RST, i2c_dev->base + ADDR_RST); i2c_dev 133 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_set_devaddr(struct sprd_i2c *i2c_dev, struct i2c_msg *m) i2c_dev 135 drivers/i2c/busses/i2c-sprd.c writel(m->addr << 1, i2c_dev->base + I2C_ADDR_CFG); i2c_dev 138 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_write_bytes(struct sprd_i2c *i2c_dev, u8 *buf, u32 len) i2c_dev 143 drivers/i2c/busses/i2c-sprd.c writeb(buf[i], i2c_dev->base + I2C_TX); i2c_dev 146 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_read_bytes(struct sprd_i2c *i2c_dev, u8 *buf, u32 len) i2c_dev 151 drivers/i2c/busses/i2c-sprd.c buf[i] = readb(i2c_dev->base + I2C_RX); i2c_dev 154 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_set_full_thld(struct sprd_i2c *i2c_dev, u32 full_thld) i2c_dev 156 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_CTL); i2c_dev 160 drivers/i2c/busses/i2c-sprd.c writel(tmp, i2c_dev->base + I2C_CTL); i2c_dev 163 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_set_empty_thld(struct sprd_i2c *i2c_dev, u32 empty_thld) i2c_dev 165 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_CTL); i2c_dev 169 drivers/i2c/busses/i2c-sprd.c writel(tmp, i2c_dev->base + I2C_CTL); i2c_dev 172 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_set_fifo_full_int(struct sprd_i2c *i2c_dev, int enable) i2c_dev 174 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_CTL); i2c_dev 181 drivers/i2c/busses/i2c-sprd.c writel(tmp, i2c_dev->base + I2C_CTL); i2c_dev 184 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_set_fifo_empty_int(struct sprd_i2c *i2c_dev, int enable) i2c_dev 186 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_CTL); i2c_dev 193 drivers/i2c/busses/i2c-sprd.c writel(tmp, i2c_dev->base + I2C_CTL); i2c_dev 196 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_opt_start(struct sprd_i2c *i2c_dev) i2c_dev 198 drivers/i2c/busses/i2c-sprd.c u32 tmp = readl(i2c_dev->base + I2C_CTL); i2c_dev 200 drivers/i2c/busses/i2c-sprd.c writel(tmp | I2C_START, i2c_dev->base + I2C_CTL); i2c_dev 203 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_opt_mode(struct sprd_i2c *i2c_dev, int rw) i2c_dev 205 drivers/i2c/busses/i2c-sprd.c u32 cmd = readl(i2c_dev->base + I2C_CTL) & ~I2C_MODE; i2c_dev 207 drivers/i2c/busses/i2c-sprd.c writel(cmd | rw << 3, i2c_dev->base + I2C_CTL); i2c_dev 210 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_data_transfer(struct sprd_i2c *i2c_dev) i2c_dev 212 drivers/i2c/busses/i2c-sprd.c u32 i2c_count = i2c_dev->count; i2c_dev 214 drivers/i2c/busses/i2c-sprd.c struct i2c_msg *msg = i2c_dev->msg; i2c_dev 217 drivers/i2c/busses/i2c-sprd.c sprd_i2c_read_bytes(i2c_dev, i2c_dev->buf, I2C_FIFO_FULL_THLD); i2c_dev 218 drivers/i2c/busses/i2c-sprd.c i2c_dev->count -= I2C_FIFO_FULL_THLD; i2c_dev 219 drivers/i2c/busses/i2c-sprd.c i2c_dev->buf += I2C_FIFO_FULL_THLD; i2c_dev 226 drivers/i2c/busses/i2c-sprd.c if (i2c_dev->count >= I2C_FIFO_FULL_THLD) i2c_dev 227 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_fifo_full_int(i2c_dev, 1); i2c_dev 229 drivers/i2c/busses/i2c-sprd.c sprd_i2c_write_bytes(i2c_dev, i2c_dev->buf, need_tran); i2c_dev 230 drivers/i2c/busses/i2c-sprd.c i2c_dev->buf += need_tran; i2c_dev 231 drivers/i2c/busses/i2c-sprd.c i2c_dev->count -= need_tran; i2c_dev 239 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_fifo_empty_int(i2c_dev, 1); i2c_dev 246 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = i2c_adap->algo_data; i2c_dev 248 drivers/i2c/busses/i2c-sprd.c i2c_dev->msg = msg; i2c_dev 249 drivers/i2c/busses/i2c-sprd.c i2c_dev->buf = msg->buf; i2c_dev 250 drivers/i2c/busses/i2c-sprd.c i2c_dev->count = msg->len; i2c_dev 252 drivers/i2c/busses/i2c-sprd.c reinit_completion(&i2c_dev->complete); i2c_dev 253 drivers/i2c/busses/i2c-sprd.c sprd_i2c_reset_fifo(i2c_dev); i2c_dev 254 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_devaddr(i2c_dev, msg); i2c_dev 255 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_count(i2c_dev, msg->len); i2c_dev 258 drivers/i2c/busses/i2c-sprd.c sprd_i2c_opt_mode(i2c_dev, 1); i2c_dev 259 drivers/i2c/busses/i2c-sprd.c sprd_i2c_send_stop(i2c_dev, 1); i2c_dev 261 drivers/i2c/busses/i2c-sprd.c sprd_i2c_opt_mode(i2c_dev, 0); i2c_dev 262 drivers/i2c/busses/i2c-sprd.c sprd_i2c_send_stop(i2c_dev, !!is_last_msg); i2c_dev 270 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_fifo_full_int(i2c_dev, 1); i2c_dev 272 drivers/i2c/busses/i2c-sprd.c sprd_i2c_data_transfer(i2c_dev); i2c_dev 274 drivers/i2c/busses/i2c-sprd.c sprd_i2c_opt_start(i2c_dev); i2c_dev 276 drivers/i2c/busses/i2c-sprd.c wait_for_completion(&i2c_dev->complete); i2c_dev 278 drivers/i2c/busses/i2c-sprd.c return i2c_dev->err; i2c_dev 284 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = i2c_adap->algo_data; i2c_dev 287 drivers/i2c/busses/i2c-sprd.c ret = pm_runtime_get_sync(i2c_dev->dev); i2c_dev 300 drivers/i2c/busses/i2c-sprd.c pm_runtime_mark_last_busy(i2c_dev->dev); i2c_dev 301 drivers/i2c/busses/i2c-sprd.c pm_runtime_put_autosuspend(i2c_dev->dev); i2c_dev 316 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_set_clk(struct sprd_i2c *i2c_dev, u32 freq) i2c_dev 318 drivers/i2c/busses/i2c-sprd.c u32 apb_clk = i2c_dev->src_clk; i2c_dev 336 drivers/i2c/busses/i2c-sprd.c writel(div0, i2c_dev->base + ADDR_DVD0); i2c_dev 337 drivers/i2c/busses/i2c-sprd.c writel(div1, i2c_dev->base + ADDR_DVD1); i2c_dev 341 drivers/i2c/busses/i2c-sprd.c writel((6 * apb_clk) / 10000000, i2c_dev->base + ADDR_STA0_DVD); i2c_dev 343 drivers/i2c/busses/i2c-sprd.c writel((4 * apb_clk) / 1000000, i2c_dev->base + ADDR_STA0_DVD); i2c_dev 346 drivers/i2c/busses/i2c-sprd.c static void sprd_i2c_enable(struct sprd_i2c *i2c_dev) i2c_dev 350 drivers/i2c/busses/i2c-sprd.c writel(tmp, i2c_dev->base + I2C_CTL); i2c_dev 352 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_full_thld(i2c_dev, I2C_FIFO_FULL_THLD); i2c_dev 353 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_empty_thld(i2c_dev, I2C_FIFO_EMPTY_THLD); i2c_dev 355 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_clk(i2c_dev, i2c_dev->bus_freq); i2c_dev 356 drivers/i2c/busses/i2c-sprd.c sprd_i2c_reset_fifo(i2c_dev); i2c_dev 357 drivers/i2c/busses/i2c-sprd.c sprd_i2c_clear_irq(i2c_dev); i2c_dev 359 drivers/i2c/busses/i2c-sprd.c tmp = readl(i2c_dev->base + I2C_CTL); i2c_dev 360 drivers/i2c/busses/i2c-sprd.c writel(tmp | I2C_EN | I2C_INT_EN, i2c_dev->base + I2C_CTL); i2c_dev 365 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = dev_id; i2c_dev 366 drivers/i2c/busses/i2c-sprd.c struct i2c_msg *msg = i2c_dev->msg; i2c_dev 367 drivers/i2c/busses/i2c-sprd.c bool ack = !(readl(i2c_dev->base + I2C_STATUS) & I2C_RX_ACK); i2c_dev 371 drivers/i2c/busses/i2c-sprd.c i2c_tran = i2c_dev->count >= I2C_FIFO_FULL_THLD; i2c_dev 373 drivers/i2c/busses/i2c-sprd.c i2c_tran = i2c_dev->count; i2c_dev 384 drivers/i2c/busses/i2c-sprd.c sprd_i2c_data_transfer(i2c_dev); i2c_dev 388 drivers/i2c/busses/i2c-sprd.c i2c_dev->err = 0; i2c_dev 395 drivers/i2c/busses/i2c-sprd.c i2c_dev->err = -EIO; i2c_dev 396 drivers/i2c/busses/i2c-sprd.c else if (msg->flags & I2C_M_RD && i2c_dev->count) i2c_dev 397 drivers/i2c/busses/i2c-sprd.c sprd_i2c_read_bytes(i2c_dev, i2c_dev->buf, i2c_dev->count); i2c_dev 400 drivers/i2c/busses/i2c-sprd.c sprd_i2c_clear_ack(i2c_dev); i2c_dev 401 drivers/i2c/busses/i2c-sprd.c sprd_i2c_clear_start(i2c_dev); i2c_dev 402 drivers/i2c/busses/i2c-sprd.c complete(&i2c_dev->complete); i2c_dev 409 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = dev_id; i2c_dev 410 drivers/i2c/busses/i2c-sprd.c struct i2c_msg *msg = i2c_dev->msg; i2c_dev 411 drivers/i2c/busses/i2c-sprd.c bool ack = !(readl(i2c_dev->base + I2C_STATUS) & I2C_RX_ACK); i2c_dev 415 drivers/i2c/busses/i2c-sprd.c i2c_tran = i2c_dev->count >= I2C_FIFO_FULL_THLD; i2c_dev 417 drivers/i2c/busses/i2c-sprd.c i2c_tran = i2c_dev->count; i2c_dev 431 drivers/i2c/busses/i2c-sprd.c sprd_i2c_clear_start(i2c_dev); i2c_dev 432 drivers/i2c/busses/i2c-sprd.c sprd_i2c_clear_irq(i2c_dev); i2c_dev 435 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_fifo_empty_int(i2c_dev, 0); i2c_dev 436 drivers/i2c/busses/i2c-sprd.c sprd_i2c_set_fifo_full_int(i2c_dev, 0); i2c_dev 441 drivers/i2c/busses/i2c-sprd.c static int sprd_i2c_clk_init(struct sprd_i2c *i2c_dev) i2c_dev 445 drivers/i2c/busses/i2c-sprd.c clk_i2c = devm_clk_get(i2c_dev->dev, "i2c"); i2c_dev 447 drivers/i2c/busses/i2c-sprd.c dev_warn(i2c_dev->dev, "i2c%d can't get the i2c clock\n", i2c_dev 448 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.nr); i2c_dev 452 drivers/i2c/busses/i2c-sprd.c clk_parent = devm_clk_get(i2c_dev->dev, "source"); i2c_dev 454 drivers/i2c/busses/i2c-sprd.c dev_warn(i2c_dev->dev, "i2c%d can't get the source clock\n", i2c_dev 455 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.nr); i2c_dev 460 drivers/i2c/busses/i2c-sprd.c i2c_dev->src_clk = clk_get_rate(clk_i2c); i2c_dev 462 drivers/i2c/busses/i2c-sprd.c i2c_dev->src_clk = 26000000; i2c_dev 464 drivers/i2c/busses/i2c-sprd.c dev_dbg(i2c_dev->dev, "i2c%d set source clock is %d\n", i2c_dev 465 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.nr, i2c_dev->src_clk); i2c_dev 467 drivers/i2c/busses/i2c-sprd.c i2c_dev->clk = devm_clk_get(i2c_dev->dev, "enable"); i2c_dev 468 drivers/i2c/busses/i2c-sprd.c if (IS_ERR(i2c_dev->clk)) { i2c_dev 469 drivers/i2c/busses/i2c-sprd.c dev_err(i2c_dev->dev, "i2c%d can't get the enable clock\n", i2c_dev 470 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.nr); i2c_dev 471 drivers/i2c/busses/i2c-sprd.c return PTR_ERR(i2c_dev->clk); i2c_dev 480 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev; i2c_dev 486 drivers/i2c/busses/i2c-sprd.c i2c_dev = devm_kzalloc(dev, sizeof(struct sprd_i2c), GFP_KERNEL); i2c_dev 487 drivers/i2c/busses/i2c-sprd.c if (!i2c_dev) i2c_dev 490 drivers/i2c/busses/i2c-sprd.c i2c_dev->base = devm_platform_ioremap_resource(pdev, 0); i2c_dev 491 drivers/i2c/busses/i2c-sprd.c if (IS_ERR(i2c_dev->base)) i2c_dev 492 drivers/i2c/busses/i2c-sprd.c return PTR_ERR(i2c_dev->base); i2c_dev 494 drivers/i2c/busses/i2c-sprd.c i2c_dev->irq = platform_get_irq(pdev, 0); i2c_dev 495 drivers/i2c/busses/i2c-sprd.c if (i2c_dev->irq < 0) { i2c_dev 497 drivers/i2c/busses/i2c-sprd.c return i2c_dev->irq; i2c_dev 500 drivers/i2c/busses/i2c-sprd.c i2c_set_adapdata(&i2c_dev->adap, i2c_dev); i2c_dev 501 drivers/i2c/busses/i2c-sprd.c init_completion(&i2c_dev->complete); i2c_dev 502 drivers/i2c/busses/i2c-sprd.c snprintf(i2c_dev->adap.name, sizeof(i2c_dev->adap.name), i2c_dev 505 drivers/i2c/busses/i2c-sprd.c i2c_dev->bus_freq = 100000; i2c_dev 506 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.owner = THIS_MODULE; i2c_dev 507 drivers/i2c/busses/i2c-sprd.c i2c_dev->dev = dev; i2c_dev 508 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.retries = 3; i2c_dev 509 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.algo = &sprd_i2c_algo; i2c_dev 510 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.algo_data = i2c_dev; i2c_dev 511 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.dev.parent = dev; i2c_dev 512 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.nr = pdev->id; i2c_dev 513 drivers/i2c/busses/i2c-sprd.c i2c_dev->adap.dev.of_node = dev->of_node; i2c_dev 516 drivers/i2c/busses/i2c-sprd.c i2c_dev->bus_freq = prop; i2c_dev 519 drivers/i2c/busses/i2c-sprd.c if (i2c_dev->bus_freq != 100000 && i2c_dev->bus_freq != 400000) i2c_dev 522 drivers/i2c/busses/i2c-sprd.c ret = sprd_i2c_clk_init(i2c_dev); i2c_dev 526 drivers/i2c/busses/i2c-sprd.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 528 drivers/i2c/busses/i2c-sprd.c ret = clk_prepare_enable(i2c_dev->clk); i2c_dev 532 drivers/i2c/busses/i2c-sprd.c sprd_i2c_enable(i2c_dev); i2c_dev 534 drivers/i2c/busses/i2c-sprd.c pm_runtime_set_autosuspend_delay(i2c_dev->dev, SPRD_I2C_PM_TIMEOUT); i2c_dev 535 drivers/i2c/busses/i2c-sprd.c pm_runtime_use_autosuspend(i2c_dev->dev); i2c_dev 536 drivers/i2c/busses/i2c-sprd.c pm_runtime_set_active(i2c_dev->dev); i2c_dev 537 drivers/i2c/busses/i2c-sprd.c pm_runtime_enable(i2c_dev->dev); i2c_dev 539 drivers/i2c/busses/i2c-sprd.c ret = pm_runtime_get_sync(i2c_dev->dev); i2c_dev 543 drivers/i2c/busses/i2c-sprd.c ret = devm_request_threaded_irq(dev, i2c_dev->irq, i2c_dev 546 drivers/i2c/busses/i2c-sprd.c pdev->name, i2c_dev); i2c_dev 548 drivers/i2c/busses/i2c-sprd.c dev_err(&pdev->dev, "failed to request irq %d\n", i2c_dev->irq); i2c_dev 552 drivers/i2c/busses/i2c-sprd.c ret = i2c_add_numbered_adapter(&i2c_dev->adap); i2c_dev 558 drivers/i2c/busses/i2c-sprd.c pm_runtime_mark_last_busy(i2c_dev->dev); i2c_dev 559 drivers/i2c/busses/i2c-sprd.c pm_runtime_put_autosuspend(i2c_dev->dev); i2c_dev 563 drivers/i2c/busses/i2c-sprd.c pm_runtime_put_noidle(i2c_dev->dev); i2c_dev 564 drivers/i2c/busses/i2c-sprd.c pm_runtime_disable(i2c_dev->dev); i2c_dev 565 drivers/i2c/busses/i2c-sprd.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 571 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = platform_get_drvdata(pdev); i2c_dev 574 drivers/i2c/busses/i2c-sprd.c ret = pm_runtime_get_sync(i2c_dev->dev); i2c_dev 578 drivers/i2c/busses/i2c-sprd.c i2c_del_adapter(&i2c_dev->adap); i2c_dev 579 drivers/i2c/busses/i2c-sprd.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 581 drivers/i2c/busses/i2c-sprd.c pm_runtime_put_noidle(i2c_dev->dev); i2c_dev 582 drivers/i2c/busses/i2c-sprd.c pm_runtime_disable(i2c_dev->dev); i2c_dev 589 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = dev_get_drvdata(dev); i2c_dev 591 drivers/i2c/busses/i2c-sprd.c i2c_mark_adapter_suspended(&i2c_dev->adap); i2c_dev 597 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = dev_get_drvdata(dev); i2c_dev 599 drivers/i2c/busses/i2c-sprd.c i2c_mark_adapter_resumed(&i2c_dev->adap); i2c_dev 605 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = dev_get_drvdata(dev); i2c_dev 607 drivers/i2c/busses/i2c-sprd.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 614 drivers/i2c/busses/i2c-sprd.c struct sprd_i2c *i2c_dev = dev_get_drvdata(dev); i2c_dev 617 drivers/i2c/busses/i2c-sprd.c ret = clk_prepare_enable(i2c_dev->clk); i2c_dev 621 drivers/i2c/busses/i2c-sprd.c sprd_i2c_enable(i2c_dev); i2c_dev 235 drivers/i2c/busses/i2c-st.c static void st_i2c_flush_rx_fifo(struct st_i2c_dev *i2c_dev) i2c_dev 244 drivers/i2c/busses/i2c-st.c if (readl_relaxed(i2c_dev->base + SSC_STA) & SSC_STA_RIR) i2c_dev 247 drivers/i2c/busses/i2c-st.c count = readl_relaxed(i2c_dev->base + SSC_RX_FSTAT) & i2c_dev 251 drivers/i2c/busses/i2c-st.c readl_relaxed(i2c_dev->base + SSC_RBUF); i2c_dev 254 drivers/i2c/busses/i2c-st.c static void st_i2c_soft_reset(struct st_i2c_dev *i2c_dev) i2c_dev 260 drivers/i2c/busses/i2c-st.c st_i2c_flush_rx_fifo(i2c_dev); i2c_dev 262 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_CTL, SSC_CTL_SR); i2c_dev 263 drivers/i2c/busses/i2c-st.c st_i2c_clr_bits(i2c_dev->base + SSC_CTL, SSC_CTL_SR); i2c_dev 270 drivers/i2c/busses/i2c-st.c static void st_i2c_hw_config(struct st_i2c_dev *i2c_dev) i2c_dev 274 drivers/i2c/busses/i2c-st.c struct st_i2c_timings *t = &i2c_timings[i2c_dev->mode]; i2c_dev 276 drivers/i2c/busses/i2c-st.c st_i2c_soft_reset(i2c_dev); i2c_dev 280 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_CLR); i2c_dev 284 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_CTL); i2c_dev 286 drivers/i2c/busses/i2c-st.c rate = clk_get_rate(i2c_dev->clk); i2c_dev 291 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_BRG); i2c_dev 294 drivers/i2c/busses/i2c-st.c writel_relaxed(1, i2c_dev->base + SSC_PRE_SCALER_BRG); i2c_dev 297 drivers/i2c/busses/i2c-st.c writel_relaxed(SSC_I2C_I2CM, i2c_dev->base + SSC_I2C); i2c_dev 301 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_REP_START_HOLD); i2c_dev 305 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_REP_START_SETUP); i2c_dev 309 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_START_HOLD); i2c_dev 313 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_DATA_SETUP); i2c_dev 317 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_STOP_SETUP); i2c_dev 321 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_BUS_FREE); i2c_dev 325 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_PRSCALER); i2c_dev 326 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_PRSCALER_DATAOUT); i2c_dev 329 drivers/i2c/busses/i2c-st.c val = i2c_dev->scl_min_width_us * rate / 100000000; i2c_dev 330 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_NOISE_SUPP_WIDTH); i2c_dev 333 drivers/i2c/busses/i2c-st.c val = i2c_dev->sda_min_width_us * rate / 100000000; i2c_dev 334 drivers/i2c/busses/i2c-st.c writel_relaxed(val, i2c_dev->base + SSC_NOISE_SUPP_WIDTH_DATAOUT); i2c_dev 339 drivers/i2c/busses/i2c-st.c struct st_i2c_dev *i2c_dev = i2c_get_adapdata(i2c_adap); i2c_dev 342 drivers/i2c/busses/i2c-st.c dev_dbg(i2c_dev->dev, "Trying to recover bus\n"); i2c_dev 352 drivers/i2c/busses/i2c-st.c writel_relaxed(0, i2c_dev->base + SSC_IEN); i2c_dev 354 drivers/i2c/busses/i2c-st.c st_i2c_hw_config(i2c_dev); i2c_dev 357 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_CTL, ctl); i2c_dev 359 drivers/i2c/busses/i2c-st.c st_i2c_clr_bits(i2c_dev->base + SSC_I2C, SSC_I2C_I2CM); i2c_dev 362 drivers/i2c/busses/i2c-st.c writel_relaxed(0, i2c_dev->base + SSC_TBUF); i2c_dev 364 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_I2C, SSC_I2C_I2CM); i2c_dev 369 drivers/i2c/busses/i2c-st.c static int st_i2c_wait_free_bus(struct st_i2c_dev *i2c_dev) i2c_dev 375 drivers/i2c/busses/i2c-st.c sta = readl_relaxed(i2c_dev->base + SSC_STA); i2c_dev 382 drivers/i2c/busses/i2c-st.c dev_err(i2c_dev->dev, "bus not free (status = 0x%08x)\n", sta); i2c_dev 384 drivers/i2c/busses/i2c-st.c ret = i2c_recover_bus(&i2c_dev->adap); i2c_dev 386 drivers/i2c/busses/i2c-st.c dev_err(i2c_dev->dev, "Failed to recover the bus (%d)\n", ret); i2c_dev 398 drivers/i2c/busses/i2c-st.c static inline void st_i2c_write_tx_fifo(struct st_i2c_dev *i2c_dev, u8 byte) i2c_dev 402 drivers/i2c/busses/i2c-st.c writel_relaxed(tbuf | 1, i2c_dev->base + SSC_TBUF); i2c_dev 412 drivers/i2c/busses/i2c-st.c static void st_i2c_wr_fill_tx_fifo(struct st_i2c_dev *i2c_dev) i2c_dev 414 drivers/i2c/busses/i2c-st.c struct st_i2c_client *c = &i2c_dev->client; i2c_dev 418 drivers/i2c/busses/i2c-st.c sta = readl_relaxed(i2c_dev->base + SSC_STA); i2c_dev 422 drivers/i2c/busses/i2c-st.c tx_fstat = readl_relaxed(i2c_dev->base + SSC_TX_FSTAT); i2c_dev 431 drivers/i2c/busses/i2c-st.c st_i2c_write_tx_fifo(i2c_dev, *c->buf); i2c_dev 442 drivers/i2c/busses/i2c-st.c static void st_i2c_rd_fill_tx_fifo(struct st_i2c_dev *i2c_dev, int max) i2c_dev 444 drivers/i2c/busses/i2c-st.c struct st_i2c_client *c = &i2c_dev->client; i2c_dev 448 drivers/i2c/busses/i2c-st.c sta = readl_relaxed(i2c_dev->base + SSC_STA); i2c_dev 452 drivers/i2c/busses/i2c-st.c tx_fstat = readl_relaxed(i2c_dev->base + SSC_TX_FSTAT); i2c_dev 461 drivers/i2c/busses/i2c-st.c st_i2c_write_tx_fifo(i2c_dev, 0xff); i2c_dev 464 drivers/i2c/busses/i2c-st.c static void st_i2c_read_rx_fifo(struct st_i2c_dev *i2c_dev) i2c_dev 466 drivers/i2c/busses/i2c-st.c struct st_i2c_client *c = &i2c_dev->client; i2c_dev 470 drivers/i2c/busses/i2c-st.c sta = readl_relaxed(i2c_dev->base + SSC_STA); i2c_dev 474 drivers/i2c/busses/i2c-st.c i = readl_relaxed(i2c_dev->base + SSC_RX_FSTAT); i2c_dev 479 drivers/i2c/busses/i2c-st.c rbuf = readl_relaxed(i2c_dev->base + SSC_RBUF) >> 1; i2c_dev 484 drivers/i2c/busses/i2c-st.c dev_err(i2c_dev->dev, "Unexpected %d bytes in rx fifo\n", i); i2c_dev 485 drivers/i2c/busses/i2c-st.c st_i2c_flush_rx_fifo(i2c_dev); i2c_dev 493 drivers/i2c/busses/i2c-st.c static void st_i2c_terminate_xfer(struct st_i2c_dev *i2c_dev) i2c_dev 495 drivers/i2c/busses/i2c-st.c struct st_i2c_client *c = &i2c_dev->client; i2c_dev 497 drivers/i2c/busses/i2c-st.c st_i2c_clr_bits(i2c_dev->base + SSC_IEN, SSC_IEN_TEEN); i2c_dev 498 drivers/i2c/busses/i2c-st.c st_i2c_clr_bits(i2c_dev->base + SSC_I2C, SSC_I2C_STRTG); i2c_dev 501 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_IEN, SSC_IEN_STOPEN); i2c_dev 502 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_I2C, SSC_I2C_STOPG); i2c_dev 504 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_IEN, SSC_IEN_REPSTRTEN); i2c_dev 505 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_I2C, SSC_I2C_REPSTRTG); i2c_dev 513 drivers/i2c/busses/i2c-st.c static void st_i2c_handle_write(struct st_i2c_dev *i2c_dev) i2c_dev 515 drivers/i2c/busses/i2c-st.c struct st_i2c_client *c = &i2c_dev->client; i2c_dev 517 drivers/i2c/busses/i2c-st.c st_i2c_flush_rx_fifo(i2c_dev); i2c_dev 521 drivers/i2c/busses/i2c-st.c st_i2c_terminate_xfer(i2c_dev); i2c_dev 523 drivers/i2c/busses/i2c-st.c st_i2c_wr_fill_tx_fifo(i2c_dev); i2c_dev 530 drivers/i2c/busses/i2c-st.c static void st_i2c_handle_read(struct st_i2c_dev *i2c_dev) i2c_dev 532 drivers/i2c/busses/i2c-st.c struct st_i2c_client *c = &i2c_dev->client; i2c_dev 537 drivers/i2c/busses/i2c-st.c readl_relaxed(i2c_dev->base + SSC_RBUF); i2c_dev 538 drivers/i2c/busses/i2c-st.c st_i2c_clr_bits(i2c_dev->base + SSC_I2C, SSC_I2C_TXENB); i2c_dev 540 drivers/i2c/busses/i2c-st.c st_i2c_read_rx_fifo(i2c_dev); i2c_dev 545 drivers/i2c/busses/i2c-st.c st_i2c_terminate_xfer(i2c_dev); i2c_dev 548 drivers/i2c/busses/i2c-st.c st_i2c_clr_bits(i2c_dev->base + SSC_I2C, SSC_I2C_ACKG); i2c_dev 552 drivers/i2c/busses/i2c-st.c writel_relaxed(ien, i2c_dev->base + SSC_IEN); i2c_dev 554 drivers/i2c/busses/i2c-st.c st_i2c_rd_fill_tx_fifo(i2c_dev, c->count); i2c_dev 556 drivers/i2c/busses/i2c-st.c st_i2c_rd_fill_tx_fifo(i2c_dev, c->count - 1); i2c_dev 567 drivers/i2c/busses/i2c-st.c struct st_i2c_dev *i2c_dev = data; i2c_dev 568 drivers/i2c/busses/i2c-st.c struct st_i2c_client *c = &i2c_dev->client; i2c_dev 572 drivers/i2c/busses/i2c-st.c ien = readl_relaxed(i2c_dev->base + SSC_IEN); i2c_dev 573 drivers/i2c/busses/i2c-st.c sta = readl_relaxed(i2c_dev->base + SSC_STA); i2c_dev 578 drivers/i2c/busses/i2c-st.c dev_dbg(i2c_dev->dev, "spurious it (sta=0x%04x, ien=0x%04x)\n", i2c_dev 586 drivers/i2c/busses/i2c-st.c st_i2c_handle_read(i2c_dev); i2c_dev 588 drivers/i2c/busses/i2c-st.c st_i2c_handle_write(i2c_dev); i2c_dev 593 drivers/i2c/busses/i2c-st.c writel_relaxed(0, i2c_dev->base + SSC_IEN); i2c_dev 594 drivers/i2c/busses/i2c-st.c complete(&i2c_dev->complete); i2c_dev 598 drivers/i2c/busses/i2c-st.c writel_relaxed(SSC_CLR_NACK, i2c_dev->base + SSC_CLR); i2c_dev 602 drivers/i2c/busses/i2c-st.c st_i2c_handle_read(i2c_dev); i2c_dev 607 drivers/i2c/busses/i2c-st.c writel_relaxed(it, i2c_dev->base + SSC_IEN); i2c_dev 609 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_I2C, SSC_I2C_STOPG); i2c_dev 614 drivers/i2c/busses/i2c-st.c writel_relaxed(SSC_CLR_SSCARBL, i2c_dev->base + SSC_CLR); i2c_dev 617 drivers/i2c/busses/i2c-st.c writel_relaxed(it, i2c_dev->base + SSC_IEN); i2c_dev 619 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_I2C, SSC_I2C_STOPG); i2c_dev 624 drivers/i2c/busses/i2c-st.c dev_err(i2c_dev->dev, i2c_dev 633 drivers/i2c/busses/i2c-st.c readl(i2c_dev->base + SSC_IEN); i2c_dev 645 drivers/i2c/busses/i2c-st.c static int st_i2c_xfer_msg(struct st_i2c_dev *i2c_dev, struct i2c_msg *msg, i2c_dev 648 drivers/i2c/busses/i2c-st.c struct st_i2c_client *c = &i2c_dev->client; i2c_dev 660 drivers/i2c/busses/i2c-st.c reinit_completion(&i2c_dev->complete); i2c_dev 663 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_CTL, ctl); i2c_dev 668 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_I2C, i2c); i2c_dev 671 drivers/i2c/busses/i2c-st.c st_i2c_write_tx_fifo(i2c_dev, c->addr); i2c_dev 675 drivers/i2c/busses/i2c-st.c st_i2c_wr_fill_tx_fifo(i2c_dev); i2c_dev 678 drivers/i2c/busses/i2c-st.c writel_relaxed(it, i2c_dev->base + SSC_IEN); i2c_dev 681 drivers/i2c/busses/i2c-st.c ret = st_i2c_wait_free_bus(i2c_dev); i2c_dev 685 drivers/i2c/busses/i2c-st.c st_i2c_set_bits(i2c_dev->base + SSC_I2C, SSC_I2C_STRTG); i2c_dev 688 drivers/i2c/busses/i2c-st.c timeout = wait_for_completion_timeout(&i2c_dev->complete, i2c_dev 689 drivers/i2c/busses/i2c-st.c i2c_dev->adap.timeout); i2c_dev 693 drivers/i2c/busses/i2c-st.c dev_err(i2c_dev->dev, "Write to slave 0x%x timed out\n", i2c_dev 699 drivers/i2c/busses/i2c-st.c st_i2c_clr_bits(i2c_dev->base + SSC_I2C, i2c); i2c_dev 702 drivers/i2c/busses/i2c-st.c i2c_dev->base + SSC_CLR); i2c_dev 716 drivers/i2c/busses/i2c-st.c struct st_i2c_dev *i2c_dev = i2c_get_adapdata(i2c_adap); i2c_dev 719 drivers/i2c/busses/i2c-st.c i2c_dev->busy = true; i2c_dev 721 drivers/i2c/busses/i2c-st.c ret = clk_prepare_enable(i2c_dev->clk); i2c_dev 723 drivers/i2c/busses/i2c-st.c dev_err(i2c_dev->dev, "Failed to prepare_enable clock\n"); i2c_dev 727 drivers/i2c/busses/i2c-st.c pinctrl_pm_select_default_state(i2c_dev->dev); i2c_dev 729 drivers/i2c/busses/i2c-st.c st_i2c_hw_config(i2c_dev); i2c_dev 732 drivers/i2c/busses/i2c-st.c ret = st_i2c_xfer_msg(i2c_dev, &msgs[i], i == 0, i == num - 1); i2c_dev 734 drivers/i2c/busses/i2c-st.c pinctrl_pm_select_idle_state(i2c_dev->dev); i2c_dev 736 drivers/i2c/busses/i2c-st.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 738 drivers/i2c/busses/i2c-st.c i2c_dev->busy = false; i2c_dev 746 drivers/i2c/busses/i2c-st.c struct st_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 748 drivers/i2c/busses/i2c-st.c if (i2c_dev->busy) i2c_dev 786 drivers/i2c/busses/i2c-st.c struct st_i2c_dev *i2c_dev) i2c_dev 791 drivers/i2c/busses/i2c-st.c &i2c_dev->scl_min_width_us); i2c_dev 793 drivers/i2c/busses/i2c-st.c dev_err(i2c_dev->dev, "st,i2c-min-scl-pulse-width-us invalid\n"); i2c_dev 798 drivers/i2c/busses/i2c-st.c &i2c_dev->sda_min_width_us); i2c_dev 800 drivers/i2c/busses/i2c-st.c dev_err(i2c_dev->dev, "st,i2c-min-sda-pulse-width-us invalid\n"); i2c_dev 810 drivers/i2c/busses/i2c-st.c struct st_i2c_dev *i2c_dev; i2c_dev 816 drivers/i2c/busses/i2c-st.c i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 817 drivers/i2c/busses/i2c-st.c if (!i2c_dev) i2c_dev 821 drivers/i2c/busses/i2c-st.c i2c_dev->base = devm_ioremap_resource(&pdev->dev, res); i2c_dev 822 drivers/i2c/busses/i2c-st.c if (IS_ERR(i2c_dev->base)) i2c_dev 823 drivers/i2c/busses/i2c-st.c return PTR_ERR(i2c_dev->base); i2c_dev 825 drivers/i2c/busses/i2c-st.c i2c_dev->irq = irq_of_parse_and_map(np, 0); i2c_dev 826 drivers/i2c/busses/i2c-st.c if (!i2c_dev->irq) { i2c_dev 831 drivers/i2c/busses/i2c-st.c i2c_dev->clk = of_clk_get_by_name(np, "ssc"); i2c_dev 832 drivers/i2c/busses/i2c-st.c if (IS_ERR(i2c_dev->clk)) { i2c_dev 834 drivers/i2c/busses/i2c-st.c return PTR_ERR(i2c_dev->clk); i2c_dev 837 drivers/i2c/busses/i2c-st.c i2c_dev->mode = I2C_MODE_STANDARD; i2c_dev 840 drivers/i2c/busses/i2c-st.c i2c_dev->mode = I2C_MODE_FAST; i2c_dev 842 drivers/i2c/busses/i2c-st.c i2c_dev->dev = &pdev->dev; i2c_dev 844 drivers/i2c/busses/i2c-st.c ret = devm_request_threaded_irq(&pdev->dev, i2c_dev->irq, i2c_dev 846 drivers/i2c/busses/i2c-st.c IRQF_ONESHOT, pdev->name, i2c_dev); i2c_dev 848 drivers/i2c/busses/i2c-st.c dev_err(&pdev->dev, "Failed to request irq %i\n", i2c_dev->irq); i2c_dev 852 drivers/i2c/busses/i2c-st.c pinctrl_pm_select_default_state(i2c_dev->dev); i2c_dev 854 drivers/i2c/busses/i2c-st.c pinctrl_pm_select_idle_state(i2c_dev->dev); i2c_dev 856 drivers/i2c/busses/i2c-st.c ret = st_i2c_of_get_deglitch(np, i2c_dev); i2c_dev 860 drivers/i2c/busses/i2c-st.c adap = &i2c_dev->adap; i2c_dev 861 drivers/i2c/busses/i2c-st.c i2c_set_adapdata(adap, i2c_dev); i2c_dev 871 drivers/i2c/busses/i2c-st.c init_completion(&i2c_dev->complete); i2c_dev 877 drivers/i2c/busses/i2c-st.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 879 drivers/i2c/busses/i2c-st.c dev_info(i2c_dev->dev, "%s initialized\n", adap->name); i2c_dev 886 drivers/i2c/busses/i2c-st.c struct st_i2c_dev *i2c_dev = platform_get_drvdata(pdev); i2c_dev 888 drivers/i2c/busses/i2c-st.c i2c_del_adapter(&i2c_dev->adap); i2c_dev 144 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_disable_irq(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 146 drivers/i2c/busses/i2c-stm32f4.c void __iomem *reg = i2c_dev->base + STM32F4_I2C_CR2; i2c_dev 151 drivers/i2c/busses/i2c-stm32f4.c static int stm32f4_i2c_set_periph_clk_freq(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 156 drivers/i2c/busses/i2c-stm32f4.c i2c_dev->parent_rate = clk_get_rate(i2c_dev->clk); i2c_dev 157 drivers/i2c/busses/i2c-stm32f4.c freq = DIV_ROUND_UP(i2c_dev->parent_rate, HZ_TO_MHZ); i2c_dev 159 drivers/i2c/busses/i2c-stm32f4.c if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD) { i2c_dev 167 drivers/i2c/busses/i2c-stm32f4.c dev_err(i2c_dev->dev, i2c_dev 179 drivers/i2c/busses/i2c-stm32f4.c dev_err(i2c_dev->dev, i2c_dev 186 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(cr2, i2c_dev->base + STM32F4_I2C_CR2); i2c_dev 191 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_set_rise_time(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 193 drivers/i2c/busses/i2c-stm32f4.c u32 freq = DIV_ROUND_UP(i2c_dev->parent_rate, HZ_TO_MHZ); i2c_dev 216 drivers/i2c/busses/i2c-stm32f4.c if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD) i2c_dev 222 drivers/i2c/busses/i2c-stm32f4.c i2c_dev->base + STM32F4_I2C_TRISE); i2c_dev 225 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_set_speed_mode(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 230 drivers/i2c/busses/i2c-stm32f4.c if (i2c_dev->speed == STM32_I2C_SPEED_STANDARD) { i2c_dev 246 drivers/i2c/busses/i2c-stm32f4.c val = i2c_dev->parent_rate / (100000 << 1); i2c_dev 266 drivers/i2c/busses/i2c-stm32f4.c val = DIV_ROUND_UP(i2c_dev->parent_rate, 400000 * 3); i2c_dev 273 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(ccr, i2c_dev->base + STM32F4_I2C_CCR); i2c_dev 280 drivers/i2c/busses/i2c-stm32f4.c static int stm32f4_i2c_hw_config(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 284 drivers/i2c/busses/i2c-stm32f4.c ret = stm32f4_i2c_set_periph_clk_freq(i2c_dev); i2c_dev 288 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_set_rise_time(i2c_dev); i2c_dev 290 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_set_speed_mode(i2c_dev); i2c_dev 293 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(STM32F4_I2C_CR1_PE, i2c_dev->base + STM32F4_I2C_CR1); i2c_dev 298 drivers/i2c/busses/i2c-stm32f4.c static int stm32f4_i2c_wait_free_bus(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 303 drivers/i2c/busses/i2c-stm32f4.c ret = readl_relaxed_poll_timeout(i2c_dev->base + STM32F4_I2C_SR2, i2c_dev 308 drivers/i2c/busses/i2c-stm32f4.c dev_dbg(i2c_dev->dev, "bus not free\n"); i2c_dev 320 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_write_byte(struct stm32f4_i2c_dev *i2c_dev, u8 byte) i2c_dev 322 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(byte, i2c_dev->base + STM32F4_I2C_DR); i2c_dev 331 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_write_msg(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 333 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 335 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_write_byte(i2c_dev, *msg->buf++); i2c_dev 339 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_read_msg(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 341 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 344 drivers/i2c/busses/i2c-stm32f4.c rbuf = readl_relaxed(i2c_dev->base + STM32F4_I2C_DR); i2c_dev 349 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_terminate_xfer(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 351 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 354 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_disable_irq(i2c_dev); i2c_dev 356 drivers/i2c/busses/i2c-stm32f4.c reg = i2c_dev->base + STM32F4_I2C_CR1; i2c_dev 362 drivers/i2c/busses/i2c-stm32f4.c complete(&i2c_dev->complete); i2c_dev 369 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_handle_write(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 371 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 372 drivers/i2c/busses/i2c-stm32f4.c void __iomem *reg = i2c_dev->base + STM32F4_I2C_CR2; i2c_dev 375 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_write_msg(i2c_dev); i2c_dev 384 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_terminate_xfer(i2c_dev); i2c_dev 394 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_handle_read(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 396 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 397 drivers/i2c/busses/i2c-stm32f4.c void __iomem *reg = i2c_dev->base + STM32F4_I2C_CR2; i2c_dev 401 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_disable_irq(i2c_dev); i2c_dev 402 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_read_msg(i2c_dev); i2c_dev 403 drivers/i2c/busses/i2c-stm32f4.c complete(&i2c_dev->complete); i2c_dev 422 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_read_msg(i2c_dev); i2c_dev 434 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_handle_rx_done(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 436 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 451 drivers/i2c/busses/i2c-stm32f4.c reg = i2c_dev->base + STM32F4_I2C_CR1; i2c_dev 458 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_read_msg(i2c_dev); i2c_dev 460 drivers/i2c/busses/i2c-stm32f4.c reg = i2c_dev->base + STM32F4_I2C_CR2; i2c_dev 464 drivers/i2c/busses/i2c-stm32f4.c complete(&i2c_dev->complete); i2c_dev 472 drivers/i2c/busses/i2c-stm32f4.c reg = i2c_dev->base + STM32F4_I2C_CR1; i2c_dev 474 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_read_msg(i2c_dev); i2c_dev 477 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_read_msg(i2c_dev); i2c_dev 486 drivers/i2c/busses/i2c-stm32f4.c static void stm32f4_i2c_handle_rx_addr(struct stm32f4_i2c_dev *i2c_dev) i2c_dev 488 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 493 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_terminate_xfer(i2c_dev); i2c_dev 496 drivers/i2c/busses/i2c-stm32f4.c readl_relaxed(i2c_dev->base + STM32F4_I2C_SR2); i2c_dev 506 drivers/i2c/busses/i2c-stm32f4.c cr1 = readl_relaxed(i2c_dev->base + STM32F4_I2C_CR1); i2c_dev 508 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(cr1, i2c_dev->base + STM32F4_I2C_CR1); i2c_dev 510 drivers/i2c/busses/i2c-stm32f4.c readl_relaxed(i2c_dev->base + STM32F4_I2C_SR2); i2c_dev 516 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(cr1, i2c_dev->base + STM32F4_I2C_CR1); i2c_dev 526 drivers/i2c/busses/i2c-stm32f4.c cr1 = readl_relaxed(i2c_dev->base + STM32F4_I2C_CR1); i2c_dev 529 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(cr1, i2c_dev->base + STM32F4_I2C_CR1); i2c_dev 531 drivers/i2c/busses/i2c-stm32f4.c readl_relaxed(i2c_dev->base + STM32F4_I2C_SR2); i2c_dev 541 drivers/i2c/busses/i2c-stm32f4.c cr1 = readl_relaxed(i2c_dev->base + STM32F4_I2C_CR1); i2c_dev 544 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(cr1, i2c_dev->base + STM32F4_I2C_CR1); i2c_dev 546 drivers/i2c/busses/i2c-stm32f4.c readl_relaxed(i2c_dev->base + STM32F4_I2C_SR2); i2c_dev 558 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_dev *i2c_dev = data; i2c_dev 559 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 563 drivers/i2c/busses/i2c-stm32f4.c cr2 = readl_relaxed(i2c_dev->base + STM32F4_I2C_CR2); i2c_dev 570 drivers/i2c/busses/i2c-stm32f4.c status = readl_relaxed(i2c_dev->base + STM32F4_I2C_SR1); i2c_dev 573 drivers/i2c/busses/i2c-stm32f4.c dev_dbg(i2c_dev->dev, i2c_dev 581 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_write_byte(i2c_dev, msg->addr); i2c_dev 586 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_handle_rx_addr(i2c_dev); i2c_dev 588 drivers/i2c/busses/i2c-stm32f4.c readl_relaxed(i2c_dev->base + STM32F4_I2C_SR2); i2c_dev 595 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(cr2, i2c_dev->base + STM32F4_I2C_CR2); i2c_dev 600 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_handle_write(i2c_dev); i2c_dev 604 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_handle_read(i2c_dev); i2c_dev 615 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_handle_rx_done(i2c_dev); i2c_dev 617 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_handle_write(i2c_dev); i2c_dev 630 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_dev *i2c_dev = data; i2c_dev 631 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *msg = &i2c_dev->msg; i2c_dev 635 drivers/i2c/busses/i2c-stm32f4.c status = readl_relaxed(i2c_dev->base + STM32F4_I2C_SR1); i2c_dev 640 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(status, i2c_dev->base + STM32F4_I2C_SR1); i2c_dev 650 drivers/i2c/busses/i2c-stm32f4.c reg = i2c_dev->base + STM32F4_I2C_CR1; i2c_dev 654 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(status, i2c_dev->base + STM32F4_I2C_SR1); i2c_dev 661 drivers/i2c/busses/i2c-stm32f4.c writel_relaxed(status, i2c_dev->base + STM32F4_I2C_SR1); i2c_dev 665 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_disable_irq(i2c_dev); i2c_dev 666 drivers/i2c/busses/i2c-stm32f4.c complete(&i2c_dev->complete); i2c_dev 678 drivers/i2c/busses/i2c-stm32f4.c static int stm32f4_i2c_xfer_msg(struct stm32f4_i2c_dev *i2c_dev, i2c_dev 682 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_msg *f4_msg = &i2c_dev->msg; i2c_dev 683 drivers/i2c/busses/i2c-stm32f4.c void __iomem *reg = i2c_dev->base + STM32F4_I2C_CR1; i2c_dev 694 drivers/i2c/busses/i2c-stm32f4.c reinit_completion(&i2c_dev->complete); i2c_dev 698 drivers/i2c/busses/i2c-stm32f4.c stm32f4_i2c_set_bits(i2c_dev->base + STM32F4_I2C_CR2, mask); i2c_dev 701 drivers/i2c/busses/i2c-stm32f4.c ret = stm32f4_i2c_wait_free_bus(i2c_dev); i2c_dev 709 drivers/i2c/busses/i2c-stm32f4.c timeout = wait_for_completion_timeout(&i2c_dev->complete, i2c_dev 710 drivers/i2c/busses/i2c-stm32f4.c i2c_dev->adap.timeout); i2c_dev 728 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_dev *i2c_dev = i2c_get_adapdata(i2c_adap); i2c_dev 731 drivers/i2c/busses/i2c-stm32f4.c ret = clk_enable(i2c_dev->clk); i2c_dev 733 drivers/i2c/busses/i2c-stm32f4.c dev_err(i2c_dev->dev, "Failed to enable clock\n"); i2c_dev 738 drivers/i2c/busses/i2c-stm32f4.c ret = stm32f4_i2c_xfer_msg(i2c_dev, &msgs[i], i == 0, i2c_dev 741 drivers/i2c/busses/i2c-stm32f4.c clk_disable(i2c_dev->clk); i2c_dev 759 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_dev *i2c_dev; i2c_dev 766 drivers/i2c/busses/i2c-stm32f4.c i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 767 drivers/i2c/busses/i2c-stm32f4.c if (!i2c_dev) i2c_dev 771 drivers/i2c/busses/i2c-stm32f4.c i2c_dev->base = devm_ioremap_resource(&pdev->dev, res); i2c_dev 772 drivers/i2c/busses/i2c-stm32f4.c if (IS_ERR(i2c_dev->base)) i2c_dev 773 drivers/i2c/busses/i2c-stm32f4.c return PTR_ERR(i2c_dev->base); i2c_dev 787 drivers/i2c/busses/i2c-stm32f4.c i2c_dev->clk = devm_clk_get(&pdev->dev, NULL); i2c_dev 788 drivers/i2c/busses/i2c-stm32f4.c if (IS_ERR(i2c_dev->clk)) { i2c_dev 790 drivers/i2c/busses/i2c-stm32f4.c return PTR_ERR(i2c_dev->clk); i2c_dev 792 drivers/i2c/busses/i2c-stm32f4.c ret = clk_prepare_enable(i2c_dev->clk); i2c_dev 794 drivers/i2c/busses/i2c-stm32f4.c dev_err(i2c_dev->dev, "Failed to prepare_enable clock\n"); i2c_dev 808 drivers/i2c/busses/i2c-stm32f4.c i2c_dev->speed = STM32_I2C_SPEED_STANDARD; i2c_dev 811 drivers/i2c/busses/i2c-stm32f4.c i2c_dev->speed = STM32_I2C_SPEED_FAST; i2c_dev 813 drivers/i2c/busses/i2c-stm32f4.c i2c_dev->dev = &pdev->dev; i2c_dev 816 drivers/i2c/busses/i2c-stm32f4.c pdev->name, i2c_dev); i2c_dev 824 drivers/i2c/busses/i2c-stm32f4.c pdev->name, i2c_dev); i2c_dev 831 drivers/i2c/busses/i2c-stm32f4.c ret = stm32f4_i2c_hw_config(i2c_dev); i2c_dev 835 drivers/i2c/busses/i2c-stm32f4.c adap = &i2c_dev->adap; i2c_dev 836 drivers/i2c/busses/i2c-stm32f4.c i2c_set_adapdata(adap, i2c_dev); i2c_dev 845 drivers/i2c/busses/i2c-stm32f4.c init_completion(&i2c_dev->complete); i2c_dev 851 drivers/i2c/busses/i2c-stm32f4.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 853 drivers/i2c/busses/i2c-stm32f4.c clk_disable(i2c_dev->clk); i2c_dev 855 drivers/i2c/busses/i2c-stm32f4.c dev_info(i2c_dev->dev, "STM32F4 I2C driver registered\n"); i2c_dev 860 drivers/i2c/busses/i2c-stm32f4.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 866 drivers/i2c/busses/i2c-stm32f4.c struct stm32f4_i2c_dev *i2c_dev = platform_get_drvdata(pdev); i2c_dev 868 drivers/i2c/busses/i2c-stm32f4.c i2c_del_adapter(&i2c_dev->adap); i2c_dev 870 drivers/i2c/busses/i2c-stm32f4.c clk_unprepare(i2c_dev->clk); i2c_dev 371 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_disable_irq(struct stm32f7_i2c_dev *i2c_dev, u32 mask) i2c_dev 373 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1, mask); i2c_dev 376 drivers/i2c/busses/i2c-stm32f7.c static int stm32f7_i2c_compute_timing(struct stm32f7_i2c_dev *i2c_dev, i2c_dev 398 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "speed out of bound {%d/%d}\n", i2c_dev 405 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, i2c_dev 413 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, i2c_dev 420 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "ERROR: Freq {%d/%d}\n", i2c_dev 447 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, "SDADEL(min/max): %i/%i, SCLDEL(Min): %i\n", i2c_dev 488 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "no Prescaler solution\n"); i2c_dev 545 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "no solution at all\n"); i2c_dev 556 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, i2c_dev 572 drivers/i2c/busses/i2c-stm32f7.c static int stm32f7_i2c_setup_timing(struct stm32f7_i2c_dev *i2c_dev, i2c_dev 577 drivers/i2c/busses/i2c-stm32f7.c setup->speed = i2c_dev->speed; i2c_dev 579 drivers/i2c/busses/i2c-stm32f7.c setup->clock_src = clk_get_rate(i2c_dev->clk); i2c_dev 582 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "clock rate is 0\n"); i2c_dev 587 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_compute_timing(i2c_dev, setup, i2c_dev 588 drivers/i2c/busses/i2c-stm32f7.c &i2c_dev->timing); i2c_dev 590 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, i2c_dev 592 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->speed > STM32_I2C_SPEED_STANDARD) { i2c_dev 593 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->speed--; i2c_dev 594 drivers/i2c/busses/i2c-stm32f7.c setup->speed = i2c_dev->speed; i2c_dev 597 drivers/i2c/busses/i2c-stm32f7.c dev_warn(i2c_dev->dev, i2c_dev 607 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "Impossible to compute I2C timings.\n"); i2c_dev 611 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, "I2C Speed(%i), Freq(%i), Clk Source(%i)\n", i2c_dev 613 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, "I2C Rise(%i) and Fall(%i) Time\n", i2c_dev 615 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, "I2C Analog Filter(%s), DNF(%i)\n", i2c_dev 621 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_disable_dma_req(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 623 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 631 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = (struct stm32f7_i2c_dev *)arg; i2c_dev 632 drivers/i2c/busses/i2c-stm32f7.c struct stm32_i2c_dma *dma = i2c_dev->dma; i2c_dev 635 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_disable_dma_req(i2c_dev); i2c_dev 640 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_hw_config(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 642 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_timings *t = &i2c_dev->timing; i2c_dev 651 drivers/i2c/busses/i2c-stm32f7.c writel_relaxed(timing, i2c_dev->base + STM32F7_I2C_TIMINGR); i2c_dev 654 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->setup.analog_filter) i2c_dev 655 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1, i2c_dev 658 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1, i2c_dev 660 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_set_bits(i2c_dev->base + STM32F7_I2C_CR1, i2c_dev 664 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_write_tx_data(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 666 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 667 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 675 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_read_rx_data(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 677 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 678 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 689 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_reload(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 691 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 694 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->use_dma) i2c_dev 697 drivers/i2c/busses/i2c-stm32f7.c cr2 = readl_relaxed(i2c_dev->base + STM32F7_I2C_CR2); i2c_dev 707 drivers/i2c/busses/i2c-stm32f7.c writel_relaxed(cr2, i2c_dev->base + STM32F7_I2C_CR2); i2c_dev 710 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_smbus_reload(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 712 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 720 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_read_rx_data(i2c_dev); i2c_dev 727 drivers/i2c/busses/i2c-stm32f7.c cr2 = readl_relaxed(i2c_dev->base + STM32F7_I2C_CR2); i2c_dev 730 drivers/i2c/busses/i2c-stm32f7.c writel_relaxed(cr2, i2c_dev->base + STM32F7_I2C_CR2); i2c_dev 735 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = i2c_get_adapdata(i2c_adap); i2c_dev 737 drivers/i2c/busses/i2c-stm32f7.c dev_info(i2c_dev->dev, "Trying to recover bus\n"); i2c_dev 739 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_clr_bits(i2c_dev->base + STM32F7_I2C_CR1, i2c_dev 742 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_hw_config(i2c_dev); i2c_dev 747 drivers/i2c/busses/i2c-stm32f7.c static int stm32f7_i2c_wait_free_bus(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 752 drivers/i2c/busses/i2c-stm32f7.c ret = readl_relaxed_poll_timeout(i2c_dev->base + STM32F7_I2C_ISR, i2c_dev 759 drivers/i2c/busses/i2c-stm32f7.c dev_info(i2c_dev->dev, "bus busy\n"); i2c_dev 761 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_release_bus(&i2c_dev->adap); i2c_dev 763 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "Failed to recover the bus (%d)\n", ret); i2c_dev 770 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_xfer_msg(struct stm32f7_i2c_dev *i2c_dev, i2c_dev 773 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 774 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 782 drivers/i2c/busses/i2c-stm32f7.c f7_msg->stop = (i2c_dev->msg_id >= i2c_dev->msg_num - 1); i2c_dev 784 drivers/i2c/busses/i2c-stm32f7.c reinit_completion(&i2c_dev->complete); i2c_dev 823 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->use_dma = false; i2c_dev 824 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->dma && f7_msg->count >= STM32F7_I2C_DMA_LEN_MIN) { i2c_dev 825 drivers/i2c/busses/i2c-stm32f7.c ret = stm32_i2c_prep_dma_xfer(i2c_dev->dev, i2c_dev->dma, i2c_dev 829 drivers/i2c/busses/i2c-stm32f7.c i2c_dev); i2c_dev 831 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->use_dma = true; i2c_dev 833 drivers/i2c/busses/i2c-stm32f7.c dev_warn(i2c_dev->dev, "can't use DMA\n"); i2c_dev 836 drivers/i2c/busses/i2c-stm32f7.c if (!i2c_dev->use_dma) { i2c_dev 851 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->master_mode = true; i2c_dev 858 drivers/i2c/busses/i2c-stm32f7.c static int stm32f7_i2c_smbus_xfer_msg(struct stm32f7_i2c_dev *i2c_dev, i2c_dev 862 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 863 drivers/i2c/busses/i2c-stm32f7.c struct device *dev = i2c_dev->dev; i2c_dev 864 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 869 drivers/i2c/busses/i2c-stm32f7.c reinit_completion(&i2c_dev->complete); i2c_dev 989 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->use_dma = false; i2c_dev 990 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->dma && f7_msg->count >= STM32F7_I2C_DMA_LEN_MIN) { i2c_dev 991 drivers/i2c/busses/i2c-stm32f7.c ret = stm32_i2c_prep_dma_xfer(i2c_dev->dev, i2c_dev->dma, i2c_dev 995 drivers/i2c/busses/i2c-stm32f7.c i2c_dev); i2c_dev 997 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->use_dma = true; i2c_dev 999 drivers/i2c/busses/i2c-stm32f7.c dev_warn(i2c_dev->dev, "can't use DMA\n"); i2c_dev 1002 drivers/i2c/busses/i2c-stm32f7.c if (!i2c_dev->use_dma) { i2c_dev 1017 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->master_mode = true; i2c_dev 1026 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_smbus_rep_start(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 1028 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 1029 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 1079 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->use_dma = false; i2c_dev 1080 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->dma && f7_msg->count >= STM32F7_I2C_DMA_LEN_MIN && i2c_dev 1083 drivers/i2c/busses/i2c-stm32f7.c ret = stm32_i2c_prep_dma_xfer(i2c_dev->dev, i2c_dev->dma, i2c_dev 1087 drivers/i2c/busses/i2c-stm32f7.c i2c_dev); i2c_dev 1090 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->use_dma = true; i2c_dev 1092 drivers/i2c/busses/i2c-stm32f7.c dev_warn(i2c_dev->dev, "can't use DMA\n"); i2c_dev 1095 drivers/i2c/busses/i2c-stm32f7.c if (!i2c_dev->use_dma) i2c_dev 1108 drivers/i2c/busses/i2c-stm32f7.c static int stm32f7_i2c_smbus_check_pec(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 1110 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 1113 drivers/i2c/busses/i2c-stm32f7.c internal_pec = readl_relaxed(i2c_dev->base + STM32F7_I2C_PECR); i2c_dev 1130 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "Unsupported smbus protocol for PEC\n"); i2c_dev 1135 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "Bad PEC 0x%02x vs. 0x%02x\n", i2c_dev 1169 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_slave_start(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 1171 drivers/i2c/busses/i2c-stm32f7.c struct i2c_client *slave = i2c_dev->slave_running; i2c_dev 1172 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 1176 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->slave_dir) { i2c_dev 1217 drivers/i2c/busses/i2c-stm32f7.c static void stm32f7_i2c_slave_addr(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 1219 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 1223 drivers/i2c/busses/i2c-stm32f7.c isr = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); i2c_dev 1228 drivers/i2c/busses/i2c-stm32f7.c if (stm32f7_i2c_is_addr_match(i2c_dev->slave[i], addcode)) { i2c_dev 1229 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->slave_running = i2c_dev->slave[i]; i2c_dev 1230 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->slave_dir = dir; i2c_dev 1233 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_slave_start(i2c_dev); i2c_dev 1243 drivers/i2c/busses/i2c-stm32f7.c static int stm32f7_i2c_get_slave_id(struct stm32f7_i2c_dev *i2c_dev, i2c_dev 1249 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->slave[i] == slave) { i2c_dev 1255 drivers/i2c/busses/i2c-stm32f7.c dev_err(i2c_dev->dev, "Slave 0x%x not registered\n", slave->addr); i2c_dev 1260 drivers/i2c/busses/i2c-stm32f7.c static int stm32f7_i2c_get_free_slave_id(struct stm32f7_i2c_dev *i2c_dev, i2c_dev 1263 drivers/i2c/busses/i2c-stm32f7.c struct device *dev = i2c_dev->dev; i2c_dev 1273 drivers/i2c/busses/i2c-stm32f7.c if (!i2c_dev->slave[i]) { i2c_dev 1284 drivers/i2c/busses/i2c-stm32f7.c static bool stm32f7_i2c_is_slave_registered(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 1289 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->slave[i]) i2c_dev 1296 drivers/i2c/busses/i2c-stm32f7.c static bool stm32f7_i2c_is_slave_busy(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 1302 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->slave[i]) i2c_dev 1309 drivers/i2c/busses/i2c-stm32f7.c static irqreturn_t stm32f7_i2c_slave_isr_event(struct stm32f7_i2c_dev *i2c_dev) i2c_dev 1311 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 1316 drivers/i2c/busses/i2c-stm32f7.c status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); i2c_dev 1320 drivers/i2c/busses/i2c-stm32f7.c i2c_slave_event(i2c_dev->slave_running, i2c_dev 1334 drivers/i2c/busses/i2c-stm32f7.c val = readb_relaxed(i2c_dev->base + STM32F7_I2C_RXDR); i2c_dev 1335 drivers/i2c/busses/i2c-stm32f7.c ret = i2c_slave_event(i2c_dev->slave_running, i2c_dev 1339 drivers/i2c/busses/i2c-stm32f7.c cr2 = readl_relaxed(i2c_dev->base + STM32F7_I2C_CR2); i2c_dev 1341 drivers/i2c/busses/i2c-stm32f7.c writel_relaxed(cr2, i2c_dev->base + STM32F7_I2C_CR2); i2c_dev 1350 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, "<%s>: Receive NACK\n", __func__); i2c_dev 1357 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_disable_irq(i2c_dev, STM32F7_I2C_XFER_IRQ_MASK); i2c_dev 1359 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->slave_dir) { i2c_dev 1372 drivers/i2c/busses/i2c-stm32f7.c i2c_slave_event(i2c_dev->slave_running, I2C_SLAVE_STOP, &val); i2c_dev 1374 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->slave_running = NULL; i2c_dev 1379 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_slave_addr(i2c_dev); i2c_dev 1386 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = data; i2c_dev 1387 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 1388 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 1393 drivers/i2c/busses/i2c-stm32f7.c if (!i2c_dev->master_mode) { i2c_dev 1394 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_slave_isr_event(i2c_dev); i2c_dev 1398 drivers/i2c/busses/i2c-stm32f7.c status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); i2c_dev 1402 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_write_tx_data(i2c_dev); i2c_dev 1406 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_read_rx_data(i2c_dev); i2c_dev 1410 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, "<%s>: Receive NACK\n", __func__); i2c_dev 1418 drivers/i2c/busses/i2c-stm32f7.c if (stm32f7_i2c_is_slave_registered(i2c_dev)) i2c_dev 1422 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_disable_irq(i2c_dev, mask); i2c_dev 1427 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->use_dma) { i2c_dev 1430 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->master_mode = false; i2c_dev 1431 drivers/i2c/busses/i2c-stm32f7.c complete(&i2c_dev->complete); i2c_dev 1440 drivers/i2c/busses/i2c-stm32f7.c } else if (i2c_dev->use_dma) { i2c_dev 1443 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_smbus_rep_start(i2c_dev); i2c_dev 1445 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->msg_id++; i2c_dev 1446 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->msg++; i2c_dev 1447 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_xfer_msg(i2c_dev, i2c_dev->msg); i2c_dev 1453 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_smbus_reload(i2c_dev); i2c_dev 1455 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_reload(i2c_dev); i2c_dev 1463 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = data; i2c_dev 1464 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 1465 drivers/i2c/busses/i2c-stm32f7.c struct stm32_i2c_dma *dma = i2c_dev->dma; i2c_dev 1473 drivers/i2c/busses/i2c-stm32f7.c ret = wait_for_completion_timeout(&i2c_dev->dma->dma_complete, HZ); i2c_dev 1475 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, "<%s>: Timed out\n", __func__); i2c_dev 1476 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_disable_dma_req(i2c_dev); i2c_dev 1481 drivers/i2c/busses/i2c-stm32f7.c status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); i2c_dev 1485 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_smbus_rep_start(i2c_dev); i2c_dev 1487 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->msg_id++; i2c_dev 1488 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->msg++; i2c_dev 1489 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_xfer_msg(i2c_dev, i2c_dev->msg); i2c_dev 1492 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->master_mode = false; i2c_dev 1493 drivers/i2c/busses/i2c-stm32f7.c complete(&i2c_dev->complete); i2c_dev 1501 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = data; i2c_dev 1502 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 1503 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 1504 drivers/i2c/busses/i2c-stm32f7.c struct device *dev = i2c_dev->dev; i2c_dev 1505 drivers/i2c/busses/i2c-stm32f7.c struct stm32_i2c_dma *dma = i2c_dev->dma; i2c_dev 1508 drivers/i2c/busses/i2c-stm32f7.c status = readl_relaxed(i2c_dev->base + STM32F7_I2C_ISR); i2c_dev 1514 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_release_bus(&i2c_dev->adap); i2c_dev 1531 drivers/i2c/busses/i2c-stm32f7.c if (!i2c_dev->slave_running) { i2c_dev 1534 drivers/i2c/busses/i2c-stm32f7.c if (stm32f7_i2c_is_slave_registered(i2c_dev)) i2c_dev 1538 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_disable_irq(i2c_dev, mask); i2c_dev 1542 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->use_dma) { i2c_dev 1543 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_disable_dma_req(i2c_dev); i2c_dev 1547 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->master_mode = false; i2c_dev 1548 drivers/i2c/busses/i2c-stm32f7.c complete(&i2c_dev->complete); i2c_dev 1556 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = i2c_get_adapdata(i2c_adap); i2c_dev 1557 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 1558 drivers/i2c/busses/i2c-stm32f7.c struct stm32_i2c_dma *dma = i2c_dev->dma; i2c_dev 1562 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->msg = msgs; i2c_dev 1563 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->msg_num = num; i2c_dev 1564 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->msg_id = 0; i2c_dev 1567 drivers/i2c/busses/i2c-stm32f7.c ret = pm_runtime_get_sync(i2c_dev->dev); i2c_dev 1571 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_wait_free_bus(i2c_dev); i2c_dev 1575 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_xfer_msg(i2c_dev, msgs); i2c_dev 1577 drivers/i2c/busses/i2c-stm32f7.c time_left = wait_for_completion_timeout(&i2c_dev->complete, i2c_dev 1578 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->adap.timeout); i2c_dev 1582 drivers/i2c/busses/i2c-stm32f7.c dev_dbg(i2c_dev->dev, "Access to slave 0x%x timed out\n", i2c_dev 1583 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->msg->addr); i2c_dev 1584 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->use_dma) i2c_dev 1590 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_mark_last_busy(i2c_dev->dev); i2c_dev 1591 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_put_autosuspend(i2c_dev->dev); i2c_dev 1601 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = i2c_get_adapdata(adapter); i2c_dev 1602 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_msg *f7_msg = &i2c_dev->f7_msg; i2c_dev 1603 drivers/i2c/busses/i2c-stm32f7.c struct stm32_i2c_dma *dma = i2c_dev->dma; i2c_dev 1604 drivers/i2c/busses/i2c-stm32f7.c struct device *dev = i2c_dev->dev; i2c_dev 1617 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_wait_free_bus(i2c_dev); i2c_dev 1621 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_smbus_xfer_msg(i2c_dev, flags, command, data); i2c_dev 1625 drivers/i2c/busses/i2c-stm32f7.c timeout = wait_for_completion_timeout(&i2c_dev->complete, i2c_dev 1626 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->adap.timeout); i2c_dev 1633 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->use_dma) i2c_dev 1641 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_smbus_check_pec(i2c_dev); i2c_dev 1676 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = i2c_get_adapdata(slave->adapter); i2c_dev 1677 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 1678 drivers/i2c/busses/i2c-stm32f7.c struct device *dev = i2c_dev->dev; i2c_dev 1687 drivers/i2c/busses/i2c-stm32f7.c if (stm32f7_i2c_is_slave_busy(i2c_dev)) { i2c_dev 1692 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_get_free_slave_id(i2c_dev, slave, &id); i2c_dev 1702 drivers/i2c/busses/i2c-stm32f7.c oar1 = readl_relaxed(i2c_dev->base + STM32F7_I2C_OAR1); i2c_dev 1711 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->slave[id] = slave; i2c_dev 1712 drivers/i2c/busses/i2c-stm32f7.c writel_relaxed(oar1, i2c_dev->base + STM32F7_I2C_OAR1); i2c_dev 1715 drivers/i2c/busses/i2c-stm32f7.c oar2 = readl_relaxed(i2c_dev->base + STM32F7_I2C_OAR2); i2c_dev 1724 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->slave[id] = slave; i2c_dev 1725 drivers/i2c/busses/i2c-stm32f7.c writel_relaxed(oar2, i2c_dev->base + STM32F7_I2C_OAR2); i2c_dev 1749 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = i2c_get_adapdata(slave->adapter); i2c_dev 1750 drivers/i2c/busses/i2c-stm32f7.c void __iomem *base = i2c_dev->base; i2c_dev 1754 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_get_slave_id(i2c_dev, slave, &id); i2c_dev 1758 drivers/i2c/busses/i2c-stm32f7.c WARN_ON(!i2c_dev->slave[id]); i2c_dev 1760 drivers/i2c/busses/i2c-stm32f7.c ret = pm_runtime_get_sync(i2c_dev->dev); i2c_dev 1772 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->slave[id] = NULL; i2c_dev 1774 drivers/i2c/busses/i2c-stm32f7.c if (!(stm32f7_i2c_is_slave_registered(i2c_dev))) i2c_dev 1775 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_disable_irq(i2c_dev, STM32F7_I2C_ALL_IRQ_MASK); i2c_dev 1777 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_mark_last_busy(i2c_dev->dev); i2c_dev 1778 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_put_autosuspend(i2c_dev->dev); i2c_dev 1784 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev) i2c_dev 1790 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->regmap = syscon_regmap_lookup_by_phandle(np, "st,syscfg-fmp"); i2c_dev 1791 drivers/i2c/busses/i2c-stm32f7.c if (IS_ERR(i2c_dev->regmap)) { i2c_dev 1804 drivers/i2c/busses/i2c-stm32f7.c return regmap_update_bits(i2c_dev->regmap, reg, mask, mask); i2c_dev 1827 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev; i2c_dev 1836 drivers/i2c/busses/i2c-stm32f7.c i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 1837 drivers/i2c/busses/i2c-stm32f7.c if (!i2c_dev) i2c_dev 1841 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->base = devm_ioremap_resource(&pdev->dev, res); i2c_dev 1842 drivers/i2c/busses/i2c-stm32f7.c if (IS_ERR(i2c_dev->base)) i2c_dev 1843 drivers/i2c/busses/i2c-stm32f7.c return PTR_ERR(i2c_dev->base); i2c_dev 1862 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->clk = devm_clk_get(&pdev->dev, NULL); i2c_dev 1863 drivers/i2c/busses/i2c-stm32f7.c if (IS_ERR(i2c_dev->clk)) { i2c_dev 1865 drivers/i2c/busses/i2c-stm32f7.c return PTR_ERR(i2c_dev->clk); i2c_dev 1868 drivers/i2c/busses/i2c-stm32f7.c ret = clk_prepare_enable(i2c_dev->clk); i2c_dev 1874 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->speed = STM32_I2C_SPEED_STANDARD; i2c_dev 1878 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->speed = STM32_I2C_SPEED_FAST_PLUS; i2c_dev 1879 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_setup_fm_plus_bits(pdev, i2c_dev); i2c_dev 1883 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->speed = STM32_I2C_SPEED_FAST; i2c_dev 1885 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->speed = STM32_I2C_SPEED_STANDARD; i2c_dev 1898 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->dev = &pdev->dev; i2c_dev 1904 drivers/i2c/busses/i2c-stm32f7.c pdev->name, i2c_dev); i2c_dev 1912 drivers/i2c/busses/i2c-stm32f7.c pdev->name, i2c_dev); i2c_dev 1925 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->setup = *setup; i2c_dev 1927 drivers/i2c/busses/i2c-stm32f7.c ret = device_property_read_u32(i2c_dev->dev, "i2c-scl-rising-time-ns", i2c_dev 1930 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->setup.rise_time = rise_time; i2c_dev 1932 drivers/i2c/busses/i2c-stm32f7.c ret = device_property_read_u32(i2c_dev->dev, "i2c-scl-falling-time-ns", i2c_dev 1935 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->setup.fall_time = fall_time; i2c_dev 1937 drivers/i2c/busses/i2c-stm32f7.c ret = stm32f7_i2c_setup_timing(i2c_dev, &i2c_dev->setup); i2c_dev 1941 drivers/i2c/busses/i2c-stm32f7.c adap = &i2c_dev->adap; i2c_dev 1942 drivers/i2c/busses/i2c-stm32f7.c i2c_set_adapdata(adap, i2c_dev); i2c_dev 1952 drivers/i2c/busses/i2c-stm32f7.c init_completion(&i2c_dev->complete); i2c_dev 1955 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->dma = stm32_i2c_dma_request(i2c_dev->dev, phy_addr, i2c_dev 1958 drivers/i2c/busses/i2c-stm32f7.c if (PTR_ERR(i2c_dev->dma) == -ENODEV) i2c_dev 1959 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->dma = NULL; i2c_dev 1960 drivers/i2c/busses/i2c-stm32f7.c else if (IS_ERR(i2c_dev->dma)) { i2c_dev 1961 drivers/i2c/busses/i2c-stm32f7.c ret = PTR_ERR(i2c_dev->dma); i2c_dev 1968 drivers/i2c/busses/i2c-stm32f7.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 1970 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_set_autosuspend_delay(i2c_dev->dev, i2c_dev 1972 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_use_autosuspend(i2c_dev->dev); i2c_dev 1973 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_set_active(i2c_dev->dev); i2c_dev 1974 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_enable(i2c_dev->dev); i2c_dev 1978 drivers/i2c/busses/i2c-stm32f7.c stm32f7_i2c_hw_config(i2c_dev); i2c_dev 1984 drivers/i2c/busses/i2c-stm32f7.c dev_info(i2c_dev->dev, "STM32F7 I2C-%d bus adapter\n", adap->nr); i2c_dev 1986 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_mark_last_busy(i2c_dev->dev); i2c_dev 1987 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_put_autosuspend(i2c_dev->dev); i2c_dev 1992 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_put_noidle(i2c_dev->dev); i2c_dev 1993 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_disable(i2c_dev->dev); i2c_dev 1994 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_set_suspended(i2c_dev->dev); i2c_dev 1995 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_dont_use_autosuspend(i2c_dev->dev); i2c_dev 1997 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->dma) { i2c_dev 1998 drivers/i2c/busses/i2c-stm32f7.c stm32_i2c_dma_free(i2c_dev->dma); i2c_dev 1999 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->dma = NULL; i2c_dev 2003 drivers/i2c/busses/i2c-stm32f7.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 2010 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = platform_get_drvdata(pdev); i2c_dev 2012 drivers/i2c/busses/i2c-stm32f7.c i2c_del_adapter(&i2c_dev->adap); i2c_dev 2013 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_get_sync(i2c_dev->dev); i2c_dev 2015 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_put_noidle(i2c_dev->dev); i2c_dev 2016 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_disable(i2c_dev->dev); i2c_dev 2017 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_set_suspended(i2c_dev->dev); i2c_dev 2018 drivers/i2c/busses/i2c-stm32f7.c pm_runtime_dont_use_autosuspend(i2c_dev->dev); i2c_dev 2020 drivers/i2c/busses/i2c-stm32f7.c if (i2c_dev->dma) { i2c_dev 2021 drivers/i2c/busses/i2c-stm32f7.c stm32_i2c_dma_free(i2c_dev->dma); i2c_dev 2022 drivers/i2c/busses/i2c-stm32f7.c i2c_dev->dma = NULL; i2c_dev 2025 drivers/i2c/busses/i2c-stm32f7.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 2033 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 2035 drivers/i2c/busses/i2c-stm32f7.c if (!stm32f7_i2c_is_slave_registered(i2c_dev)) i2c_dev 2036 drivers/i2c/busses/i2c-stm32f7.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 2043 drivers/i2c/busses/i2c-stm32f7.c struct stm32f7_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 2046 drivers/i2c/busses/i2c-stm32f7.c if (!stm32f7_i2c_is_slave_registered(i2c_dev)) { i2c_dev 2047 drivers/i2c/busses/i2c-stm32f7.c ret = clk_prepare_enable(i2c_dev->clk); i2c_dev 284 drivers/i2c/busses/i2c-tegra.c static void dvc_writel(struct tegra_i2c_dev *i2c_dev, u32 val, i2c_dev 287 drivers/i2c/busses/i2c-tegra.c writel(val, i2c_dev->base + reg); i2c_dev 290 drivers/i2c/busses/i2c-tegra.c static u32 dvc_readl(struct tegra_i2c_dev *i2c_dev, unsigned long reg) i2c_dev 292 drivers/i2c/busses/i2c-tegra.c return readl(i2c_dev->base + reg); i2c_dev 299 drivers/i2c/busses/i2c-tegra.c static unsigned long tegra_i2c_reg_addr(struct tegra_i2c_dev *i2c_dev, i2c_dev 302 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_dvc) i2c_dev 307 drivers/i2c/busses/i2c-tegra.c static void i2c_writel(struct tegra_i2c_dev *i2c_dev, u32 val, i2c_dev 310 drivers/i2c/busses/i2c-tegra.c writel(val, i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg)); i2c_dev 314 drivers/i2c/busses/i2c-tegra.c readl(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg)); i2c_dev 317 drivers/i2c/busses/i2c-tegra.c static u32 i2c_readl(struct tegra_i2c_dev *i2c_dev, unsigned long reg) i2c_dev 319 drivers/i2c/busses/i2c-tegra.c return readl(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg)); i2c_dev 322 drivers/i2c/busses/i2c-tegra.c static void i2c_writesl(struct tegra_i2c_dev *i2c_dev, void *data, i2c_dev 325 drivers/i2c/busses/i2c-tegra.c writesl(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg), data, len); i2c_dev 328 drivers/i2c/busses/i2c-tegra.c static void i2c_readsl(struct tegra_i2c_dev *i2c_dev, void *data, i2c_dev 331 drivers/i2c/busses/i2c-tegra.c readsl(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg), data, len); i2c_dev 334 drivers/i2c/busses/i2c-tegra.c static void tegra_i2c_mask_irq(struct tegra_i2c_dev *i2c_dev, u32 mask) i2c_dev 338 drivers/i2c/busses/i2c-tegra.c int_mask = i2c_readl(i2c_dev, I2C_INT_MASK) & ~mask; i2c_dev 339 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, int_mask, I2C_INT_MASK); i2c_dev 342 drivers/i2c/busses/i2c-tegra.c static void tegra_i2c_unmask_irq(struct tegra_i2c_dev *i2c_dev, u32 mask) i2c_dev 346 drivers/i2c/busses/i2c-tegra.c int_mask = i2c_readl(i2c_dev, I2C_INT_MASK) | mask; i2c_dev 347 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, int_mask, I2C_INT_MASK); i2c_dev 352 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = args; i2c_dev 354 drivers/i2c/busses/i2c-tegra.c complete(&i2c_dev->dma_complete); i2c_dev 357 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_dma_submit(struct tegra_i2c_dev *i2c_dev, size_t len) i2c_dev 363 drivers/i2c/busses/i2c-tegra.c dev_dbg(i2c_dev->dev, "starting DMA for length: %zu\n", len); i2c_dev 364 drivers/i2c/busses/i2c-tegra.c reinit_completion(&i2c_dev->dma_complete); i2c_dev 365 drivers/i2c/busses/i2c-tegra.c dir = i2c_dev->msg_read ? DMA_DEV_TO_MEM : DMA_MEM_TO_DEV; i2c_dev 366 drivers/i2c/busses/i2c-tegra.c chan = i2c_dev->msg_read ? i2c_dev->rx_dma_chan : i2c_dev->tx_dma_chan; i2c_dev 367 drivers/i2c/busses/i2c-tegra.c dma_desc = dmaengine_prep_slave_single(chan, i2c_dev->dma_phys, i2c_dev 371 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "failed to get DMA descriptor\n"); i2c_dev 376 drivers/i2c/busses/i2c-tegra.c dma_desc->callback_param = i2c_dev; i2c_dev 382 drivers/i2c/busses/i2c-tegra.c static void tegra_i2c_release_dma(struct tegra_i2c_dev *i2c_dev) i2c_dev 384 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->dma_buf) { i2c_dev 385 drivers/i2c/busses/i2c-tegra.c dma_free_coherent(i2c_dev->dev, i2c_dev->dma_buf_size, i2c_dev 386 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_buf, i2c_dev->dma_phys); i2c_dev 387 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_buf = NULL; i2c_dev 390 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->tx_dma_chan) { i2c_dev 391 drivers/i2c/busses/i2c-tegra.c dma_release_channel(i2c_dev->tx_dma_chan); i2c_dev 392 drivers/i2c/busses/i2c-tegra.c i2c_dev->tx_dma_chan = NULL; i2c_dev 395 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->rx_dma_chan) { i2c_dev 396 drivers/i2c/busses/i2c-tegra.c dma_release_channel(i2c_dev->rx_dma_chan); i2c_dev 397 drivers/i2c/busses/i2c-tegra.c i2c_dev->rx_dma_chan = NULL; i2c_dev 401 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_init_dma(struct tegra_i2c_dev *i2c_dev) i2c_dev 408 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->hw->has_apb_dma) i2c_dev 412 drivers/i2c/busses/i2c-tegra.c dev_dbg(i2c_dev->dev, "Support for APB DMA not enabled!\n"); i2c_dev 416 drivers/i2c/busses/i2c-tegra.c chan = dma_request_slave_channel_reason(i2c_dev->dev, "rx"); i2c_dev 422 drivers/i2c/busses/i2c-tegra.c i2c_dev->rx_dma_chan = chan; i2c_dev 424 drivers/i2c/busses/i2c-tegra.c chan = dma_request_slave_channel_reason(i2c_dev->dev, "tx"); i2c_dev 430 drivers/i2c/busses/i2c-tegra.c i2c_dev->tx_dma_chan = chan; i2c_dev 432 drivers/i2c/busses/i2c-tegra.c dma_buf = dma_alloc_coherent(i2c_dev->dev, i2c_dev->dma_buf_size, i2c_dev 435 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "failed to allocate the DMA buffer\n"); i2c_dev 440 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_buf = dma_buf; i2c_dev 441 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_phys = dma_phys; i2c_dev 445 drivers/i2c/busses/i2c-tegra.c tegra_i2c_release_dma(i2c_dev); i2c_dev 447 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "cannot use DMA: %d\n", err); i2c_dev 448 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "falling back to PIO\n"); i2c_dev 455 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_flush_fifos(struct tegra_i2c_dev *i2c_dev) i2c_dev 461 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_mst_fifo) { i2c_dev 471 drivers/i2c/busses/i2c-tegra.c val = i2c_readl(i2c_dev, offset); i2c_dev 473 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, val, offset); i2c_dev 475 drivers/i2c/busses/i2c-tegra.c while (i2c_readl(i2c_dev, offset) & mask) { i2c_dev 477 drivers/i2c/busses/i2c-tegra.c dev_warn(i2c_dev->dev, "timeout waiting for fifo flush\n"); i2c_dev 485 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_empty_rx_fifo(struct tegra_i2c_dev *i2c_dev) i2c_dev 489 drivers/i2c/busses/i2c-tegra.c u8 *buf = i2c_dev->msg_buf; i2c_dev 490 drivers/i2c/busses/i2c-tegra.c size_t buf_remaining = i2c_dev->msg_buf_remaining; i2c_dev 497 drivers/i2c/busses/i2c-tegra.c if (WARN_ON_ONCE(!(i2c_dev->msg_buf_remaining))) i2c_dev 500 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_mst_fifo) { i2c_dev 501 drivers/i2c/busses/i2c-tegra.c val = i2c_readl(i2c_dev, I2C_MST_FIFO_STATUS); i2c_dev 505 drivers/i2c/busses/i2c-tegra.c val = i2c_readl(i2c_dev, I2C_FIFO_STATUS); i2c_dev 515 drivers/i2c/busses/i2c-tegra.c i2c_readsl(i2c_dev, buf, I2C_RX_FIFO, words_to_transfer); i2c_dev 531 drivers/i2c/busses/i2c-tegra.c val = i2c_readl(i2c_dev, I2C_RX_FIFO); i2c_dev 542 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf_remaining = buf_remaining; i2c_dev 543 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf = buf; i2c_dev 548 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_fill_tx_fifo(struct tegra_i2c_dev *i2c_dev) i2c_dev 552 drivers/i2c/busses/i2c-tegra.c u8 *buf = i2c_dev->msg_buf; i2c_dev 553 drivers/i2c/busses/i2c-tegra.c size_t buf_remaining = i2c_dev->msg_buf_remaining; i2c_dev 556 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_mst_fifo) { i2c_dev 557 drivers/i2c/busses/i2c-tegra.c val = i2c_readl(i2c_dev, I2C_MST_FIFO_STATUS); i2c_dev 561 drivers/i2c/busses/i2c-tegra.c val = i2c_readl(i2c_dev, I2C_FIFO_STATUS); i2c_dev 583 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf_remaining = buf_remaining; i2c_dev 584 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf = buf + i2c_dev 588 drivers/i2c/busses/i2c-tegra.c i2c_writesl(i2c_dev, buf, I2C_TX_FIFO, words_to_transfer); i2c_dev 608 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf_remaining = 0; i2c_dev 609 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf = NULL; i2c_dev 612 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, val, I2C_TX_FIFO); i2c_dev 625 drivers/i2c/busses/i2c-tegra.c static void tegra_dvc_init(struct tegra_i2c_dev *i2c_dev) i2c_dev 629 drivers/i2c/busses/i2c-tegra.c val = dvc_readl(i2c_dev, DVC_CTRL_REG3); i2c_dev 632 drivers/i2c/busses/i2c-tegra.c dvc_writel(i2c_dev, val, DVC_CTRL_REG3); i2c_dev 634 drivers/i2c/busses/i2c-tegra.c val = dvc_readl(i2c_dev, DVC_CTRL_REG1); i2c_dev 636 drivers/i2c/busses/i2c-tegra.c dvc_writel(i2c_dev, val, DVC_CTRL_REG1); i2c_dev 641 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 644 drivers/i2c/busses/i2c-tegra.c ret = pinctrl_pm_select_default_state(i2c_dev->dev); i2c_dev 648 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->hw->has_single_clk_source) { i2c_dev 649 drivers/i2c/busses/i2c-tegra.c ret = clk_enable(i2c_dev->fast_clk); i2c_dev 651 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, i2c_dev 657 drivers/i2c/busses/i2c-tegra.c ret = clk_enable(i2c_dev->div_clk); i2c_dev 659 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, i2c_dev 661 drivers/i2c/busses/i2c-tegra.c clk_disable(i2c_dev->fast_clk); i2c_dev 670 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 672 drivers/i2c/busses/i2c-tegra.c clk_disable(i2c_dev->div_clk); i2c_dev 673 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->hw->has_single_clk_source) i2c_dev 674 drivers/i2c/busses/i2c-tegra.c clk_disable(i2c_dev->fast_clk); i2c_dev 676 drivers/i2c/busses/i2c-tegra.c return pinctrl_pm_select_idle_state(i2c_dev->dev); i2c_dev 679 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_wait_for_config_load(struct tegra_i2c_dev *i2c_dev) i2c_dev 686 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_config_load_reg) { i2c_dev 687 drivers/i2c/busses/i2c-tegra.c reg_offset = tegra_i2c_reg_addr(i2c_dev, I2C_CONFIG_LOAD); i2c_dev 688 drivers/i2c/busses/i2c-tegra.c addr = i2c_dev->base + reg_offset; i2c_dev 689 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, I2C_MSTR_CONFIG_LOAD, I2C_CONFIG_LOAD); i2c_dev 699 drivers/i2c/busses/i2c-tegra.c dev_warn(i2c_dev->dev, i2c_dev 708 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_init(struct tegra_i2c_dev *i2c_dev, bool clk_reinit) i2c_dev 716 drivers/i2c/busses/i2c-tegra.c reset_control_assert(i2c_dev->rst); i2c_dev 718 drivers/i2c/busses/i2c-tegra.c reset_control_deassert(i2c_dev->rst); i2c_dev 720 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_dvc) i2c_dev 721 drivers/i2c/busses/i2c-tegra.c tegra_dvc_init(i2c_dev); i2c_dev 726 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_multi_master_mode) i2c_dev 729 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, val, I2C_CNFG); i2c_dev 730 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, 0, I2C_INT_MASK); i2c_dev 733 drivers/i2c/busses/i2c-tegra.c clk_divisor = i2c_dev->hw->clk_divisor_hs_mode; i2c_dev 734 drivers/i2c/busses/i2c-tegra.c clk_divisor |= i2c_dev->clk_divisor_non_hs_mode << i2c_dev 736 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, clk_divisor, I2C_CLK_DIVISOR); i2c_dev 738 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->bus_clk_rate > I2C_STANDARD_MODE && i2c_dev 739 drivers/i2c/busses/i2c-tegra.c i2c_dev->bus_clk_rate <= I2C_FAST_PLUS_MODE) { i2c_dev 740 drivers/i2c/busses/i2c-tegra.c tlow = i2c_dev->hw->tlow_fast_fastplus_mode; i2c_dev 741 drivers/i2c/busses/i2c-tegra.c thigh = i2c_dev->hw->thigh_fast_fastplus_mode; i2c_dev 742 drivers/i2c/busses/i2c-tegra.c tsu_thd = i2c_dev->hw->setup_hold_time_fast_fast_plus_mode; i2c_dev 744 drivers/i2c/busses/i2c-tegra.c tlow = i2c_dev->hw->tlow_std_mode; i2c_dev 745 drivers/i2c/busses/i2c-tegra.c thigh = i2c_dev->hw->thigh_std_mode; i2c_dev 746 drivers/i2c/busses/i2c-tegra.c tsu_thd = i2c_dev->hw->setup_hold_time_std_mode; i2c_dev 749 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_interface_timing_reg) { i2c_dev 751 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, val, I2C_INTERFACE_TIMING_0); i2c_dev 758 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_interface_timing_reg && tsu_thd) i2c_dev 759 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, tsu_thd, I2C_INTERFACE_TIMING_1); i2c_dev 763 drivers/i2c/busses/i2c-tegra.c clk_multiplier *= (i2c_dev->clk_divisor_non_hs_mode + 1); i2c_dev 764 drivers/i2c/busses/i2c-tegra.c err = clk_set_rate(i2c_dev->div_clk, i2c_dev 765 drivers/i2c/busses/i2c-tegra.c i2c_dev->bus_clk_rate * clk_multiplier); i2c_dev 767 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, i2c_dev 773 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->is_dvc) { i2c_dev 774 drivers/i2c/busses/i2c-tegra.c u32 sl_cfg = i2c_readl(i2c_dev, I2C_SL_CNFG); i2c_dev 777 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, sl_cfg, I2C_SL_CNFG); i2c_dev 778 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, 0xfc, I2C_SL_ADDR1); i2c_dev 779 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, 0x00, I2C_SL_ADDR2); i2c_dev 782 drivers/i2c/busses/i2c-tegra.c err = tegra_i2c_flush_fifos(i2c_dev); i2c_dev 786 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_multimaster_mode && i2c_dev->hw->has_slcg_override_reg) i2c_dev 787 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, I2C_MST_CORE_CLKEN_OVR, I2C_CLKEN_OVERRIDE); i2c_dev 789 drivers/i2c/busses/i2c-tegra.c err = tegra_i2c_wait_for_config_load(i2c_dev); i2c_dev 793 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->irq_disabled) { i2c_dev 794 drivers/i2c/busses/i2c-tegra.c i2c_dev->irq_disabled = false; i2c_dev 795 drivers/i2c/busses/i2c-tegra.c enable_irq(i2c_dev->irq); i2c_dev 801 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_disable_packet_mode(struct tegra_i2c_dev *i2c_dev) i2c_dev 811 drivers/i2c/busses/i2c-tegra.c udelay(DIV_ROUND_UP(2 * 1000000, i2c_dev->bus_clk_rate)); i2c_dev 813 drivers/i2c/busses/i2c-tegra.c cnfg = i2c_readl(i2c_dev, I2C_CNFG); i2c_dev 815 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, cnfg & ~I2C_CNFG_PACKET_MODE_EN, I2C_CNFG); i2c_dev 817 drivers/i2c/busses/i2c-tegra.c return tegra_i2c_wait_for_config_load(i2c_dev); i2c_dev 824 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = dev_id; i2c_dev 826 drivers/i2c/busses/i2c-tegra.c status = i2c_readl(i2c_dev, I2C_INT_STATUS); i2c_dev 828 drivers/i2c/busses/i2c-tegra.c spin_lock(&i2c_dev->xfer_lock); i2c_dev 830 drivers/i2c/busses/i2c-tegra.c dev_warn(i2c_dev->dev, "irq status 0 %08x %08x %08x\n", i2c_dev 831 drivers/i2c/busses/i2c-tegra.c i2c_readl(i2c_dev, I2C_PACKET_TRANSFER_STATUS), i2c_dev 832 drivers/i2c/busses/i2c-tegra.c i2c_readl(i2c_dev, I2C_STATUS), i2c_dev 833 drivers/i2c/busses/i2c-tegra.c i2c_readl(i2c_dev, I2C_CNFG)); i2c_dev 834 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_err |= I2C_ERR_UNKNOWN_INTERRUPT; i2c_dev 836 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->irq_disabled) { i2c_dev 837 drivers/i2c/busses/i2c-tegra.c disable_irq_nosync(i2c_dev->irq); i2c_dev 838 drivers/i2c/busses/i2c-tegra.c i2c_dev->irq_disabled = true; i2c_dev 844 drivers/i2c/busses/i2c-tegra.c tegra_i2c_disable_packet_mode(i2c_dev); i2c_dev 846 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_err |= I2C_ERR_NO_ACK; i2c_dev 848 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_err |= I2C_ERR_ARBITRATION_LOST; i2c_dev 856 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->supports_bus_clear && (status & I2C_INT_BUS_CLR_DONE)) i2c_dev 859 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->is_curr_dma_xfer) { i2c_dev 860 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_read && (status & I2C_INT_RX_FIFO_DATA_REQ)) { i2c_dev 861 drivers/i2c/busses/i2c-tegra.c if (tegra_i2c_empty_rx_fifo(i2c_dev)) { i2c_dev 867 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_err |= I2C_ERR_RX_BUFFER_OVERFLOW; i2c_dev 872 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->msg_read && (status & I2C_INT_TX_FIFO_DATA_REQ)) { i2c_dev 873 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_buf_remaining) i2c_dev 874 drivers/i2c/busses/i2c-tegra.c tegra_i2c_fill_tx_fifo(i2c_dev); i2c_dev 876 drivers/i2c/busses/i2c-tegra.c tegra_i2c_mask_irq(i2c_dev, i2c_dev 881 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, status, I2C_INT_STATUS); i2c_dev 882 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_dvc) i2c_dev 883 drivers/i2c/busses/i2c-tegra.c dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS); i2c_dev 893 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_curr_dma_xfer) i2c_dev 894 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf_remaining = 0; i2c_dev 899 drivers/i2c/busses/i2c-tegra.c if (WARN_ON_ONCE(i2c_dev->msg_buf_remaining)) { i2c_dev 900 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_err |= I2C_ERR_UNKNOWN_INTERRUPT; i2c_dev 903 drivers/i2c/busses/i2c-tegra.c complete(&i2c_dev->msg_complete); i2c_dev 908 drivers/i2c/busses/i2c-tegra.c tegra_i2c_mask_irq(i2c_dev, I2C_INT_NO_ACK | I2C_INT_ARBITRATION_LOST | i2c_dev 911 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->supports_bus_clear) i2c_dev 912 drivers/i2c/busses/i2c-tegra.c tegra_i2c_mask_irq(i2c_dev, I2C_INT_BUS_CLR_DONE); i2c_dev 913 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, status, I2C_INT_STATUS); i2c_dev 914 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_dvc) i2c_dev 915 drivers/i2c/busses/i2c-tegra.c dvc_writel(i2c_dev, DVC_STATUS_I2C_DONE_INTR, DVC_STATUS); i2c_dev 917 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_curr_dma_xfer) { i2c_dev 918 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_read) i2c_dev 919 drivers/i2c/busses/i2c-tegra.c dmaengine_terminate_async(i2c_dev->rx_dma_chan); i2c_dev 921 drivers/i2c/busses/i2c-tegra.c dmaengine_terminate_async(i2c_dev->tx_dma_chan); i2c_dev 923 drivers/i2c/busses/i2c-tegra.c complete(&i2c_dev->dma_complete); i2c_dev 926 drivers/i2c/busses/i2c-tegra.c complete(&i2c_dev->msg_complete); i2c_dev 928 drivers/i2c/busses/i2c-tegra.c spin_unlock(&i2c_dev->xfer_lock); i2c_dev 932 drivers/i2c/busses/i2c-tegra.c static void tegra_i2c_config_fifo_trig(struct tegra_i2c_dev *i2c_dev, i2c_dev 942 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_mst_fifo) i2c_dev 947 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_curr_dma_xfer) { i2c_dev 955 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_read) { i2c_dev 956 drivers/i2c/busses/i2c-tegra.c chan = i2c_dev->rx_dma_chan; i2c_dev 957 drivers/i2c/busses/i2c-tegra.c reg_offset = tegra_i2c_reg_addr(i2c_dev, I2C_RX_FIFO); i2c_dev 958 drivers/i2c/busses/i2c-tegra.c slv_config.src_addr = i2c_dev->base_phys + reg_offset; i2c_dev 962 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_mst_fifo) i2c_dev 967 drivers/i2c/busses/i2c-tegra.c chan = i2c_dev->tx_dma_chan; i2c_dev 968 drivers/i2c/busses/i2c-tegra.c reg_offset = tegra_i2c_reg_addr(i2c_dev, I2C_TX_FIFO); i2c_dev 969 drivers/i2c/busses/i2c-tegra.c slv_config.dst_addr = i2c_dev->base_phys + reg_offset; i2c_dev 973 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_mst_fifo) i2c_dev 982 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "DMA slave config failed: %d\n", i2c_dev 984 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "falling back to PIO\n"); i2c_dev 985 drivers/i2c/busses/i2c-tegra.c tegra_i2c_release_dma(i2c_dev); i2c_dev 986 drivers/i2c/busses/i2c-tegra.c i2c_dev->is_curr_dma_xfer = false; i2c_dev 992 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_mst_fifo) i2c_dev 999 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, val, reg); i2c_dev 1004 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 1009 drivers/i2c/busses/i2c-tegra.c reinit_completion(&i2c_dev->msg_complete); i2c_dev 1012 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, reg, I2C_BUS_CLEAR_CNFG); i2c_dev 1013 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_config_load_reg) { i2c_dev 1014 drivers/i2c/busses/i2c-tegra.c err = tegra_i2c_wait_for_config_load(i2c_dev); i2c_dev 1020 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, reg, I2C_BUS_CLEAR_CNFG); i2c_dev 1021 drivers/i2c/busses/i2c-tegra.c tegra_i2c_unmask_irq(i2c_dev, I2C_INT_BUS_CLR_DONE); i2c_dev 1023 drivers/i2c/busses/i2c-tegra.c time_left = wait_for_completion_timeout(&i2c_dev->msg_complete, i2c_dev 1026 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "timed out for bus clear\n"); i2c_dev 1030 drivers/i2c/busses/i2c-tegra.c reg = i2c_readl(i2c_dev, I2C_BUS_CLEAR_STATUS); i2c_dev 1032 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, i2c_dev 1040 drivers/i2c/busses/i2c-tegra.c static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev, i2c_dev 1054 drivers/i2c/busses/i2c-tegra.c tegra_i2c_flush_fifos(i2c_dev); i2c_dev 1056 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf = msg->buf; i2c_dev 1057 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_buf_remaining = msg->len; i2c_dev 1058 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_err = I2C_ERR_NONE; i2c_dev 1059 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_read = (msg->flags & I2C_M_RD); i2c_dev 1060 drivers/i2c/busses/i2c-tegra.c reinit_completion(&i2c_dev->msg_complete); i2c_dev 1062 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_read) i2c_dev 1068 drivers/i2c/busses/i2c-tegra.c i2c_dev->is_curr_dma_xfer = (xfer_size > I2C_PIO_MODE_MAX_LEN) && i2c_dev 1069 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_buf; i2c_dev 1070 drivers/i2c/busses/i2c-tegra.c tegra_i2c_config_fifo_trig(i2c_dev, xfer_size); i2c_dev 1071 drivers/i2c/busses/i2c-tegra.c dma = i2c_dev->is_curr_dma_xfer; i2c_dev 1077 drivers/i2c/busses/i2c-tegra.c i2c_dev->bus_clk_rate); i2c_dev 1078 drivers/i2c/busses/i2c-tegra.c spin_lock_irqsave(&i2c_dev->xfer_lock, flags); i2c_dev 1081 drivers/i2c/busses/i2c-tegra.c tegra_i2c_unmask_irq(i2c_dev, int_mask); i2c_dev 1083 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_read) { i2c_dev 1084 drivers/i2c/busses/i2c-tegra.c dma_sync_single_for_device(i2c_dev->dev, i2c_dev 1085 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_phys, i2c_dev 1088 drivers/i2c/busses/i2c-tegra.c err = tegra_i2c_dma_submit(i2c_dev, xfer_size); i2c_dev 1090 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, i2c_dev 1097 drivers/i2c/busses/i2c-tegra.c dma_sync_single_for_cpu(i2c_dev->dev, i2c_dev 1098 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_phys, i2c_dev 1101 drivers/i2c/busses/i2c-tegra.c buffer = i2c_dev->dma_buf; i2c_dev 1107 drivers/i2c/busses/i2c-tegra.c (i2c_dev->cont_id << PACKET_HEADER0_CONT_ID_SHIFT) | i2c_dev 1109 drivers/i2c/busses/i2c-tegra.c if (dma && !i2c_dev->msg_read) i2c_dev 1112 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, packet_header, I2C_TX_FIFO); i2c_dev 1115 drivers/i2c/busses/i2c-tegra.c if (dma && !i2c_dev->msg_read) i2c_dev 1118 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, packet_header, I2C_TX_FIFO); i2c_dev 1135 drivers/i2c/busses/i2c-tegra.c if (dma && !i2c_dev->msg_read) i2c_dev 1138 drivers/i2c/busses/i2c-tegra.c i2c_writel(i2c_dev, packet_header, I2C_TX_FIFO); i2c_dev 1140 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->msg_read) { i2c_dev 1143 drivers/i2c/busses/i2c-tegra.c dma_sync_single_for_device(i2c_dev->dev, i2c_dev 1144 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_phys, i2c_dev 1147 drivers/i2c/busses/i2c-tegra.c err = tegra_i2c_dma_submit(i2c_dev, xfer_size); i2c_dev 1149 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, i2c_dev 1155 drivers/i2c/busses/i2c-tegra.c tegra_i2c_fill_tx_fifo(i2c_dev); i2c_dev 1159 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_per_pkt_xfer_complete_irq) i2c_dev 1164 drivers/i2c/busses/i2c-tegra.c else if (i2c_dev->msg_buf_remaining) i2c_dev 1168 drivers/i2c/busses/i2c-tegra.c tegra_i2c_unmask_irq(i2c_dev, int_mask); i2c_dev 1169 drivers/i2c/busses/i2c-tegra.c dev_dbg(i2c_dev->dev, "unmasked irq: %02x\n", i2c_dev 1170 drivers/i2c/busses/i2c-tegra.c i2c_readl(i2c_dev, I2C_INT_MASK)); i2c_dev 1173 drivers/i2c/busses/i2c-tegra.c spin_unlock_irqrestore(&i2c_dev->xfer_lock, flags); i2c_dev 1179 drivers/i2c/busses/i2c-tegra.c time_left = wait_for_completion_timeout(&i2c_dev->dma_complete, i2c_dev 1182 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "DMA transfer timeout\n"); i2c_dev 1183 drivers/i2c/busses/i2c-tegra.c dmaengine_terminate_sync(i2c_dev->msg_read ? i2c_dev 1184 drivers/i2c/busses/i2c-tegra.c i2c_dev->rx_dma_chan : i2c_dev 1185 drivers/i2c/busses/i2c-tegra.c i2c_dev->tx_dma_chan); i2c_dev 1186 drivers/i2c/busses/i2c-tegra.c tegra_i2c_init(i2c_dev, true); i2c_dev 1190 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_read && i2c_dev->msg_err == I2C_ERR_NONE) { i2c_dev 1191 drivers/i2c/busses/i2c-tegra.c dma_sync_single_for_cpu(i2c_dev->dev, i2c_dev 1192 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_phys, i2c_dev 1195 drivers/i2c/busses/i2c-tegra.c memcpy(i2c_dev->msg_buf, i2c_dev->dma_buf, i2c_dev 1199 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_err != I2C_ERR_NONE) i2c_dev 1200 drivers/i2c/busses/i2c-tegra.c dmaengine_synchronize(i2c_dev->msg_read ? i2c_dev 1201 drivers/i2c/busses/i2c-tegra.c i2c_dev->rx_dma_chan : i2c_dev 1202 drivers/i2c/busses/i2c-tegra.c i2c_dev->tx_dma_chan); i2c_dev 1205 drivers/i2c/busses/i2c-tegra.c time_left = wait_for_completion_timeout(&i2c_dev->msg_complete, i2c_dev 1207 drivers/i2c/busses/i2c-tegra.c tegra_i2c_mask_irq(i2c_dev, int_mask); i2c_dev 1210 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "i2c transfer timed out\n"); i2c_dev 1212 drivers/i2c/busses/i2c-tegra.c tegra_i2c_init(i2c_dev, true); i2c_dev 1216 drivers/i2c/busses/i2c-tegra.c dev_dbg(i2c_dev->dev, "transfer complete: %lu %d %d\n", i2c_dev 1217 drivers/i2c/busses/i2c-tegra.c time_left, completion_done(&i2c_dev->msg_complete), i2c_dev 1218 drivers/i2c/busses/i2c-tegra.c i2c_dev->msg_err); i2c_dev 1220 drivers/i2c/busses/i2c-tegra.c i2c_dev->is_curr_dma_xfer = false; i2c_dev 1221 drivers/i2c/busses/i2c-tegra.c if (likely(i2c_dev->msg_err == I2C_ERR_NONE)) i2c_dev 1224 drivers/i2c/busses/i2c-tegra.c tegra_i2c_init(i2c_dev, true); i2c_dev 1226 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_err == I2C_ERR_ARBITRATION_LOST) { i2c_dev 1227 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->is_multimaster_mode) i2c_dev 1228 drivers/i2c/busses/i2c-tegra.c return i2c_recover_bus(&i2c_dev->adapter); i2c_dev 1232 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->msg_err == I2C_ERR_NO_ACK) { i2c_dev 1244 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 1248 drivers/i2c/busses/i2c-tegra.c ret = pm_runtime_get_sync(i2c_dev->dev); i2c_dev 1250 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "runtime resume failed %d\n", ret); i2c_dev 1263 drivers/i2c/busses/i2c-tegra.c ret = tegra_i2c_xfer_msg(i2c_dev, &msgs[i], end_type); i2c_dev 1268 drivers/i2c/busses/i2c-tegra.c pm_runtime_put(i2c_dev->dev); i2c_dev 1275 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 1279 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->has_continue_xfer_support) i2c_dev 1284 drivers/i2c/busses/i2c-tegra.c static void tegra_i2c_parse_dt(struct tegra_i2c_dev *i2c_dev) i2c_dev 1286 drivers/i2c/busses/i2c-tegra.c struct device_node *np = i2c_dev->dev->of_node; i2c_dev 1291 drivers/i2c/busses/i2c-tegra.c &i2c_dev->bus_clk_rate); i2c_dev 1293 drivers/i2c/busses/i2c-tegra.c i2c_dev->bus_clk_rate = 100000; /* default clock rate */ i2c_dev 1296 drivers/i2c/busses/i2c-tegra.c i2c_dev->is_multimaster_mode = multi_mode; i2c_dev 1511 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev; i2c_dev 1541 drivers/i2c/busses/i2c-tegra.c i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 1542 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev) i2c_dev 1545 drivers/i2c/busses/i2c-tegra.c i2c_dev->base = base; i2c_dev 1546 drivers/i2c/busses/i2c-tegra.c i2c_dev->base_phys = base_phys; i2c_dev 1547 drivers/i2c/busses/i2c-tegra.c i2c_dev->div_clk = div_clk; i2c_dev 1548 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.algo = &tegra_i2c_algo; i2c_dev 1549 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.retries = 1; i2c_dev 1550 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.timeout = 6 * HZ; i2c_dev 1551 drivers/i2c/busses/i2c-tegra.c i2c_dev->irq = irq; i2c_dev 1552 drivers/i2c/busses/i2c-tegra.c i2c_dev->cont_id = pdev->id; i2c_dev 1553 drivers/i2c/busses/i2c-tegra.c i2c_dev->dev = &pdev->dev; i2c_dev 1555 drivers/i2c/busses/i2c-tegra.c i2c_dev->rst = devm_reset_control_get_exclusive(&pdev->dev, "i2c"); i2c_dev 1556 drivers/i2c/busses/i2c-tegra.c if (IS_ERR(i2c_dev->rst)) { i2c_dev 1558 drivers/i2c/busses/i2c-tegra.c return PTR_ERR(i2c_dev->rst); i2c_dev 1561 drivers/i2c/busses/i2c-tegra.c tegra_i2c_parse_dt(i2c_dev); i2c_dev 1563 drivers/i2c/busses/i2c-tegra.c i2c_dev->hw = of_device_get_match_data(&pdev->dev); i2c_dev 1564 drivers/i2c/busses/i2c-tegra.c i2c_dev->is_dvc = of_device_is_compatible(pdev->dev.of_node, i2c_dev 1566 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.quirks = i2c_dev->hw->quirks; i2c_dev 1567 drivers/i2c/busses/i2c-tegra.c i2c_dev->dma_buf_size = i2c_dev->adapter.quirks->max_write_len + i2c_dev 1569 drivers/i2c/busses/i2c-tegra.c init_completion(&i2c_dev->msg_complete); i2c_dev 1570 drivers/i2c/busses/i2c-tegra.c init_completion(&i2c_dev->dma_complete); i2c_dev 1571 drivers/i2c/busses/i2c-tegra.c spin_lock_init(&i2c_dev->xfer_lock); i2c_dev 1573 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->hw->has_single_clk_source) { i2c_dev 1579 drivers/i2c/busses/i2c-tegra.c i2c_dev->fast_clk = fast_clk; i2c_dev 1582 drivers/i2c/busses/i2c-tegra.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 1584 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->hw->has_single_clk_source) { i2c_dev 1585 drivers/i2c/busses/i2c-tegra.c ret = clk_prepare(i2c_dev->fast_clk); i2c_dev 1587 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "Clock prepare failed %d\n", ret); i2c_dev 1592 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->bus_clk_rate > I2C_FAST_MODE && i2c_dev 1593 drivers/i2c/busses/i2c-tegra.c i2c_dev->bus_clk_rate <= I2C_FAST_PLUS_MODE) i2c_dev 1594 drivers/i2c/busses/i2c-tegra.c i2c_dev->clk_divisor_non_hs_mode = i2c_dev 1595 drivers/i2c/busses/i2c-tegra.c i2c_dev->hw->clk_divisor_fast_plus_mode; i2c_dev 1596 drivers/i2c/busses/i2c-tegra.c else if (i2c_dev->bus_clk_rate > I2C_STANDARD_MODE && i2c_dev 1597 drivers/i2c/busses/i2c-tegra.c i2c_dev->bus_clk_rate <= I2C_FAST_MODE) i2c_dev 1598 drivers/i2c/busses/i2c-tegra.c i2c_dev->clk_divisor_non_hs_mode = i2c_dev 1599 drivers/i2c/busses/i2c-tegra.c i2c_dev->hw->clk_divisor_fast_mode; i2c_dev 1601 drivers/i2c/busses/i2c-tegra.c i2c_dev->clk_divisor_non_hs_mode = i2c_dev 1602 drivers/i2c/busses/i2c-tegra.c i2c_dev->hw->clk_divisor_std_mode; i2c_dev 1604 drivers/i2c/busses/i2c-tegra.c ret = clk_prepare(i2c_dev->div_clk); i2c_dev 1606 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "Clock prepare failed %d\n", ret); i2c_dev 1618 drivers/i2c/busses/i2c-tegra.c ret = pm_runtime_get_sync(i2c_dev->dev); i2c_dev 1625 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_multimaster_mode) { i2c_dev 1626 drivers/i2c/busses/i2c-tegra.c ret = clk_enable(i2c_dev->div_clk); i2c_dev 1628 drivers/i2c/busses/i2c-tegra.c dev_err(i2c_dev->dev, "div_clk enable failed %d\n", i2c_dev 1634 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->hw->supports_bus_clear) i2c_dev 1635 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.bus_recovery_info = &tegra_i2c_recovery_info; i2c_dev 1637 drivers/i2c/busses/i2c-tegra.c ret = tegra_i2c_init_dma(i2c_dev); i2c_dev 1641 drivers/i2c/busses/i2c-tegra.c ret = tegra_i2c_init(i2c_dev, false); i2c_dev 1647 drivers/i2c/busses/i2c-tegra.c ret = devm_request_irq(&pdev->dev, i2c_dev->irq, i2c_dev 1648 drivers/i2c/busses/i2c-tegra.c tegra_i2c_isr, 0, dev_name(&pdev->dev), i2c_dev); i2c_dev 1650 drivers/i2c/busses/i2c-tegra.c dev_err(&pdev->dev, "Failed to request irq %i\n", i2c_dev->irq); i2c_dev 1654 drivers/i2c/busses/i2c-tegra.c i2c_set_adapdata(&i2c_dev->adapter, i2c_dev); i2c_dev 1655 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.owner = THIS_MODULE; i2c_dev 1656 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.class = I2C_CLASS_DEPRECATED; i2c_dev 1657 drivers/i2c/busses/i2c-tegra.c strlcpy(i2c_dev->adapter.name, dev_name(&pdev->dev), i2c_dev 1658 drivers/i2c/busses/i2c-tegra.c sizeof(i2c_dev->adapter.name)); i2c_dev 1659 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.dev.parent = &pdev->dev; i2c_dev 1660 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.nr = pdev->id; i2c_dev 1661 drivers/i2c/busses/i2c-tegra.c i2c_dev->adapter.dev.of_node = pdev->dev.of_node; i2c_dev 1663 drivers/i2c/busses/i2c-tegra.c ret = i2c_add_numbered_adapter(&i2c_dev->adapter); i2c_dev 1672 drivers/i2c/busses/i2c-tegra.c tegra_i2c_release_dma(i2c_dev); i2c_dev 1675 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_multimaster_mode) i2c_dev 1676 drivers/i2c/busses/i2c-tegra.c clk_disable(i2c_dev->div_clk); i2c_dev 1689 drivers/i2c/busses/i2c-tegra.c clk_unprepare(i2c_dev->div_clk); i2c_dev 1692 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->hw->has_single_clk_source) i2c_dev 1693 drivers/i2c/busses/i2c-tegra.c clk_unprepare(i2c_dev->fast_clk); i2c_dev 1700 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = platform_get_drvdata(pdev); i2c_dev 1702 drivers/i2c/busses/i2c-tegra.c i2c_del_adapter(&i2c_dev->adapter); i2c_dev 1704 drivers/i2c/busses/i2c-tegra.c if (i2c_dev->is_multimaster_mode) i2c_dev 1705 drivers/i2c/busses/i2c-tegra.c clk_disable(i2c_dev->div_clk); i2c_dev 1711 drivers/i2c/busses/i2c-tegra.c clk_unprepare(i2c_dev->div_clk); i2c_dev 1712 drivers/i2c/busses/i2c-tegra.c if (!i2c_dev->hw->has_single_clk_source) i2c_dev 1713 drivers/i2c/busses/i2c-tegra.c clk_unprepare(i2c_dev->fast_clk); i2c_dev 1715 drivers/i2c/busses/i2c-tegra.c tegra_i2c_release_dma(i2c_dev); i2c_dev 1721 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 1724 drivers/i2c/busses/i2c-tegra.c i2c_mark_adapter_suspended(&i2c_dev->adapter); i2c_dev 1735 drivers/i2c/busses/i2c-tegra.c struct tegra_i2c_dev *i2c_dev = dev_get_drvdata(dev); i2c_dev 1742 drivers/i2c/busses/i2c-tegra.c err = tegra_i2c_init(i2c_dev, false); i2c_dev 1754 drivers/i2c/busses/i2c-tegra.c i2c_mark_adapter_resumed(&i2c_dev->adapter); i2c_dev 93 drivers/i2c/busses/i2c-wmt.c static int wmt_i2c_wait_bus_not_busy(struct wmt_i2c_dev *i2c_dev) i2c_dev 98 drivers/i2c/busses/i2c-wmt.c while (!(readw(i2c_dev->base + REG_CSR) & CSR_READY_MASK)) { i2c_dev 100 drivers/i2c/busses/i2c-wmt.c dev_warn(i2c_dev->dev, "timeout waiting for bus ready\n"); i2c_dev 109 drivers/i2c/busses/i2c-wmt.c static int wmt_check_status(struct wmt_i2c_dev *i2c_dev) i2c_dev 113 drivers/i2c/busses/i2c-wmt.c if (i2c_dev->cmd_status & ISR_NACK_ADDR) i2c_dev 116 drivers/i2c/busses/i2c-wmt.c if (i2c_dev->cmd_status & ISR_SCL_TIMEOUT) i2c_dev 125 drivers/i2c/busses/i2c-wmt.c struct wmt_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 132 drivers/i2c/busses/i2c-wmt.c ret = wmt_i2c_wait_bus_not_busy(i2c_dev); i2c_dev 143 drivers/i2c/busses/i2c-wmt.c writew(0, i2c_dev->base + REG_CDR); i2c_dev 145 drivers/i2c/busses/i2c-wmt.c writew(pmsg->buf[0] & 0xFF, i2c_dev->base + REG_CDR); i2c_dev 149 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 151 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 153 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 155 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 158 drivers/i2c/busses/i2c-wmt.c reinit_completion(&i2c_dev->complete); i2c_dev 160 drivers/i2c/busses/i2c-wmt.c if (i2c_dev->mode == I2C_MODE_STANDARD) i2c_dev 167 drivers/i2c/busses/i2c-wmt.c writew(tcr_val, i2c_dev->base + REG_TCR); i2c_dev 170 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 172 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 176 drivers/i2c/busses/i2c-wmt.c wait_result = wait_for_completion_timeout(&i2c_dev->complete, i2c_dev 182 drivers/i2c/busses/i2c-wmt.c ret = wmt_check_status(i2c_dev); i2c_dev 188 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CSR); i2c_dev 190 drivers/i2c/busses/i2c-wmt.c dev_dbg(i2c_dev->dev, "write RCV NACK error\n"); i2c_dev 196 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 202 drivers/i2c/busses/i2c-wmt.c writew(CR_ENABLE, i2c_dev->base + REG_CR); i2c_dev 204 drivers/i2c/busses/i2c-wmt.c writew(pmsg->buf[xfer_len] & 0xFF, i2c_dev->base + i2c_dev 206 drivers/i2c/busses/i2c-wmt.c writew(CR_CPU_RDY | CR_ENABLE, i2c_dev->base + REG_CR); i2c_dev 216 drivers/i2c/busses/i2c-wmt.c struct wmt_i2c_dev *i2c_dev = i2c_get_adapdata(adap); i2c_dev 223 drivers/i2c/busses/i2c-wmt.c ret = wmt_i2c_wait_bus_not_busy(i2c_dev); i2c_dev 228 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 230 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 232 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 234 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 237 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 239 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 243 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 245 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 248 drivers/i2c/busses/i2c-wmt.c reinit_completion(&i2c_dev->complete); i2c_dev 250 drivers/i2c/busses/i2c-wmt.c if (i2c_dev->mode == I2C_MODE_STANDARD) i2c_dev 257 drivers/i2c/busses/i2c-wmt.c writew(tcr_val, i2c_dev->base + REG_TCR); i2c_dev 260 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 262 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 266 drivers/i2c/busses/i2c-wmt.c wait_result = wait_for_completion_timeout(&i2c_dev->complete, i2c_dev 272 drivers/i2c/busses/i2c-wmt.c ret = wmt_check_status(i2c_dev); i2c_dev 276 drivers/i2c/busses/i2c-wmt.c pmsg->buf[xfer_len] = readw(i2c_dev->base + REG_CDR) >> 8; i2c_dev 280 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 282 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 284 drivers/i2c/busses/i2c-wmt.c val = readw(i2c_dev->base + REG_CR); i2c_dev 286 drivers/i2c/busses/i2c-wmt.c writew(val, i2c_dev->base + REG_CR); i2c_dev 326 drivers/i2c/busses/i2c-wmt.c struct wmt_i2c_dev *i2c_dev = data; i2c_dev 329 drivers/i2c/busses/i2c-wmt.c i2c_dev->cmd_status = readw(i2c_dev->base + REG_ISR); i2c_dev 330 drivers/i2c/busses/i2c-wmt.c writew(i2c_dev->cmd_status, i2c_dev->base + REG_ISR); i2c_dev 332 drivers/i2c/busses/i2c-wmt.c complete(&i2c_dev->complete); i2c_dev 337 drivers/i2c/busses/i2c-wmt.c static int wmt_i2c_reset_hardware(struct wmt_i2c_dev *i2c_dev) i2c_dev 341 drivers/i2c/busses/i2c-wmt.c err = clk_prepare_enable(i2c_dev->clk); i2c_dev 343 drivers/i2c/busses/i2c-wmt.c dev_err(i2c_dev->dev, "failed to enable clock\n"); i2c_dev 347 drivers/i2c/busses/i2c-wmt.c err = clk_set_rate(i2c_dev->clk, 20000000); i2c_dev 349 drivers/i2c/busses/i2c-wmt.c dev_err(i2c_dev->dev, "failed to set clock = 20Mhz\n"); i2c_dev 350 drivers/i2c/busses/i2c-wmt.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 354 drivers/i2c/busses/i2c-wmt.c writew(0, i2c_dev->base + REG_CR); i2c_dev 355 drivers/i2c/busses/i2c-wmt.c writew(MCR_APB_166M, i2c_dev->base + REG_MCR); i2c_dev 356 drivers/i2c/busses/i2c-wmt.c writew(ISR_WRITE_ALL, i2c_dev->base + REG_ISR); i2c_dev 357 drivers/i2c/busses/i2c-wmt.c writew(IMR_ENABLE_ALL, i2c_dev->base + REG_IMR); i2c_dev 358 drivers/i2c/busses/i2c-wmt.c writew(CR_ENABLE, i2c_dev->base + REG_CR); i2c_dev 359 drivers/i2c/busses/i2c-wmt.c readw(i2c_dev->base + REG_CSR); /* read clear */ i2c_dev 360 drivers/i2c/busses/i2c-wmt.c writew(ISR_WRITE_ALL, i2c_dev->base + REG_ISR); i2c_dev 362 drivers/i2c/busses/i2c-wmt.c if (i2c_dev->mode == I2C_MODE_STANDARD) i2c_dev 363 drivers/i2c/busses/i2c-wmt.c writew(SCL_TIMEOUT(128) | TR_STD, i2c_dev->base + REG_TR); i2c_dev 365 drivers/i2c/busses/i2c-wmt.c writew(SCL_TIMEOUT(128) | TR_HS, i2c_dev->base + REG_TR); i2c_dev 373 drivers/i2c/busses/i2c-wmt.c struct wmt_i2c_dev *i2c_dev; i2c_dev 379 drivers/i2c/busses/i2c-wmt.c i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 380 drivers/i2c/busses/i2c-wmt.c if (!i2c_dev) i2c_dev 384 drivers/i2c/busses/i2c-wmt.c i2c_dev->base = devm_ioremap_resource(&pdev->dev, res); i2c_dev 385 drivers/i2c/busses/i2c-wmt.c if (IS_ERR(i2c_dev->base)) i2c_dev 386 drivers/i2c/busses/i2c-wmt.c return PTR_ERR(i2c_dev->base); i2c_dev 388 drivers/i2c/busses/i2c-wmt.c i2c_dev->irq = irq_of_parse_and_map(np, 0); i2c_dev 389 drivers/i2c/busses/i2c-wmt.c if (!i2c_dev->irq) { i2c_dev 394 drivers/i2c/busses/i2c-wmt.c i2c_dev->clk = of_clk_get(np, 0); i2c_dev 395 drivers/i2c/busses/i2c-wmt.c if (IS_ERR(i2c_dev->clk)) { i2c_dev 397 drivers/i2c/busses/i2c-wmt.c return PTR_ERR(i2c_dev->clk); i2c_dev 400 drivers/i2c/busses/i2c-wmt.c i2c_dev->mode = I2C_MODE_STANDARD; i2c_dev 403 drivers/i2c/busses/i2c-wmt.c i2c_dev->mode = I2C_MODE_FAST; i2c_dev 405 drivers/i2c/busses/i2c-wmt.c i2c_dev->dev = &pdev->dev; i2c_dev 407 drivers/i2c/busses/i2c-wmt.c err = devm_request_irq(&pdev->dev, i2c_dev->irq, wmt_i2c_isr, 0, i2c_dev 408 drivers/i2c/busses/i2c-wmt.c "i2c", i2c_dev); i2c_dev 410 drivers/i2c/busses/i2c-wmt.c dev_err(&pdev->dev, "failed to request irq %i\n", i2c_dev->irq); i2c_dev 414 drivers/i2c/busses/i2c-wmt.c adap = &i2c_dev->adapter; i2c_dev 415 drivers/i2c/busses/i2c-wmt.c i2c_set_adapdata(adap, i2c_dev); i2c_dev 422 drivers/i2c/busses/i2c-wmt.c init_completion(&i2c_dev->complete); i2c_dev 424 drivers/i2c/busses/i2c-wmt.c err = wmt_i2c_reset_hardware(i2c_dev); i2c_dev 434 drivers/i2c/busses/i2c-wmt.c platform_set_drvdata(pdev, i2c_dev); i2c_dev 441 drivers/i2c/busses/i2c-wmt.c struct wmt_i2c_dev *i2c_dev = platform_get_drvdata(pdev); i2c_dev 444 drivers/i2c/busses/i2c-wmt.c writew(0, i2c_dev->base + REG_IMR); i2c_dev 445 drivers/i2c/busses/i2c-wmt.c clk_disable_unprepare(i2c_dev->clk); i2c_dev 446 drivers/i2c/busses/i2c-wmt.c i2c_del_adapter(&i2c_dev->adapter); i2c_dev 500 drivers/i2c/i2c-core-base.c ATTRIBUTE_GROUPS(i2c_dev); i2c_dev 51 drivers/i2c/i2c-dev.c static struct i2c_dev *i2c_dev_get_by_minor(unsigned index) i2c_dev 53 drivers/i2c/i2c-dev.c struct i2c_dev *i2c_dev; i2c_dev 56 drivers/i2c/i2c-dev.c list_for_each_entry(i2c_dev, &i2c_dev_list, list) { i2c_dev 57 drivers/i2c/i2c-dev.c if (i2c_dev->adap->nr == index) i2c_dev 60 drivers/i2c/i2c-dev.c i2c_dev = NULL; i2c_dev 63 drivers/i2c/i2c-dev.c return i2c_dev; i2c_dev 66 drivers/i2c/i2c-dev.c static struct i2c_dev *get_free_i2c_dev(struct i2c_adapter *adap) i2c_dev 68 drivers/i2c/i2c-dev.c struct i2c_dev *i2c_dev; i2c_dev 76 drivers/i2c/i2c-dev.c i2c_dev = kzalloc(sizeof(*i2c_dev), GFP_KERNEL); i2c_dev 77 drivers/i2c/i2c-dev.c if (!i2c_dev) i2c_dev 79 drivers/i2c/i2c-dev.c i2c_dev->adap = adap; i2c_dev 82 drivers/i2c/i2c-dev.c list_add_tail(&i2c_dev->list, &i2c_dev_list); i2c_dev 84 drivers/i2c/i2c-dev.c return i2c_dev; i2c_dev 87 drivers/i2c/i2c-dev.c static void put_i2c_dev(struct i2c_dev *i2c_dev, bool del_cdev) i2c_dev 90 drivers/i2c/i2c-dev.c list_del(&i2c_dev->list); i2c_dev 93 drivers/i2c/i2c-dev.c cdev_device_del(&i2c_dev->cdev, &i2c_dev->dev); i2c_dev 94 drivers/i2c/i2c-dev.c put_device(&i2c_dev->dev); i2c_dev 100 drivers/i2c/i2c-dev.c struct i2c_dev *i2c_dev = i2c_dev_get_by_minor(MINOR(dev->devt)); i2c_dev 102 drivers/i2c/i2c-dev.c if (!i2c_dev) i2c_dev 104 drivers/i2c/i2c-dev.c return sprintf(buf, "%s\n", i2c_dev->adap->name); i2c_dev 635 drivers/i2c/i2c-dev.c struct i2c_dev *i2c_dev; i2c_dev 637 drivers/i2c/i2c-dev.c i2c_dev = container_of(dev, struct i2c_dev, dev); i2c_dev 638 drivers/i2c/i2c-dev.c kfree(i2c_dev); i2c_dev 644 drivers/i2c/i2c-dev.c struct i2c_dev *i2c_dev; i2c_dev 651 drivers/i2c/i2c-dev.c i2c_dev = get_free_i2c_dev(adap); i2c_dev 652 drivers/i2c/i2c-dev.c if (IS_ERR(i2c_dev)) i2c_dev 653 drivers/i2c/i2c-dev.c return PTR_ERR(i2c_dev); i2c_dev 655 drivers/i2c/i2c-dev.c cdev_init(&i2c_dev->cdev, &i2cdev_fops); i2c_dev 656 drivers/i2c/i2c-dev.c i2c_dev->cdev.owner = THIS_MODULE; i2c_dev 658 drivers/i2c/i2c-dev.c device_initialize(&i2c_dev->dev); i2c_dev 659 drivers/i2c/i2c-dev.c i2c_dev->dev.devt = MKDEV(I2C_MAJOR, adap->nr); i2c_dev 660 drivers/i2c/i2c-dev.c i2c_dev->dev.class = i2c_dev_class; i2c_dev 661 drivers/i2c/i2c-dev.c i2c_dev->dev.parent = &adap->dev; i2c_dev 662 drivers/i2c/i2c-dev.c i2c_dev->dev.release = i2cdev_dev_release; i2c_dev 663 drivers/i2c/i2c-dev.c dev_set_name(&i2c_dev->dev, "i2c-%d", adap->nr); i2c_dev 665 drivers/i2c/i2c-dev.c res = cdev_device_add(&i2c_dev->cdev, &i2c_dev->dev); i2c_dev 667 drivers/i2c/i2c-dev.c put_i2c_dev(i2c_dev, false); i2c_dev 679 drivers/i2c/i2c-dev.c struct i2c_dev *i2c_dev; i2c_dev 685 drivers/i2c/i2c-dev.c i2c_dev = i2c_dev_get_by_minor(adap->nr); i2c_dev 686 drivers/i2c/i2c-dev.c if (!i2c_dev) /* attach_adapter must have failed */ i2c_dev 689 drivers/i2c/i2c-dev.c put_i2c_dev(i2c_dev, true); i2c_dev 369 drivers/media/pci/bt8xx/bttv-input.c struct i2c_client *i2c_dev; i2c_dev 389 drivers/media/pci/bt8xx/bttv-input.c i2c_dev = i2c_new_device(&btv->c.i2c_adap, &info); i2c_dev 399 drivers/media/pci/bt8xx/bttv-input.c i2c_dev = i2c_new_probed_device(&btv->c.i2c_adap, &info, addr_list, NULL); i2c_dev 401 drivers/media/pci/bt8xx/bttv-input.c if (NULL == i2c_dev) i2c_dev 82 drivers/media/usb/em28xx/em28xx-input.c static int em28xx_get_key_terratec(struct i2c_client *i2c_dev, i2c_dev 89 drivers/media/usb/em28xx/em28xx-input.c rc = i2c_master_recv(i2c_dev, &b, 1); i2c_dev 113 drivers/media/usb/em28xx/em28xx-input.c static int em28xx_get_key_em_haup(struct i2c_client *i2c_dev, i2c_dev 120 drivers/media/usb/em28xx/em28xx-input.c size = i2c_master_recv(i2c_dev, buf, sizeof(buf)); i2c_dev 143 drivers/media/usb/em28xx/em28xx-input.c static int em28xx_get_key_pinnacle_usb_grey(struct i2c_client *i2c_dev, i2c_dev 151 drivers/media/usb/em28xx/em28xx-input.c if (i2c_master_recv(i2c_dev, buf, 3) != 3) i2c_dev 162 drivers/media/usb/em28xx/em28xx-input.c static int em28xx_get_key_winfast_usbii_deluxe(struct i2c_client *i2c_dev, i2c_dev 170 drivers/media/usb/em28xx/em28xx-input.c .addr = i2c_dev->addr, i2c_dev 174 drivers/media/usb/em28xx/em28xx-input.c .addr = i2c_dev->addr, i2c_dev 182 drivers/media/usb/em28xx/em28xx-input.c if (i2c_transfer(i2c_dev->adapter, msg, 2) != 2) i2c_dev 189 drivers/media/usb/em28xx/em28xx-input.c if (i2c_transfer(i2c_dev->adapter, msg, 2) != 2) i2c_dev 163 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 241 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 253 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 262 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 275 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 285 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 345 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 416 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 488 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 560 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 601 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 614 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 628 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 641 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 654 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 737 drivers/nfc/fdp/fdp.c struct device *dev = &phy->i2c_dev->dev; i2c_dev 790 drivers/nfc/fdp/fdp.c struct device *dev = &info->phy->i2c_dev->dev; i2c_dev 15 drivers/nfc/fdp/fdp.h struct i2c_client *i2c_dev; i2c_dev 52 drivers/nfc/fdp/i2c.c dev_dbg(&phy->i2c_dev->dev, "%s\n", __func__); i2c_dev 62 drivers/nfc/fdp/i2c.c dev_dbg(&phy->i2c_dev->dev, "%s\n", __func__); i2c_dev 92 drivers/nfc/fdp/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 136 drivers/nfc/fdp/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 204 drivers/nfc/fdp/i2c.c if (!phy || irq != phy->i2c_dev->irq) { i2c_dev 209 drivers/nfc/fdp/i2c.c client = phy->i2c_dev; i2c_dev 308 drivers/nfc/fdp/i2c.c phy->i2c_dev = client; i2c_dev 39 drivers/nfc/microread/i2c.c struct i2c_client *i2c_dev; i2c_dev 107 drivers/nfc/microread/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 144 drivers/nfc/microread/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 204 drivers/nfc/microread/i2c.c if (!phy || irq != phy->i2c_dev->irq) { i2c_dev 248 drivers/nfc/microread/i2c.c phy->i2c_dev = client; i2c_dev 33 drivers/nfc/nxp-nci/i2c.c struct i2c_client *i2c_dev; i2c_dev 64 drivers/nfc/nxp-nci/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 99 drivers/nfc/nxp-nci/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 145 drivers/nfc/nxp-nci/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 194 drivers/nfc/nxp-nci/i2c.c client = phy->i2c_dev; i2c_dev 276 drivers/nfc/nxp-nci/i2c.c phy->i2c_dev = client; i2c_dev 26 drivers/nfc/pn533/i2c.c struct i2c_client *i2c_dev; i2c_dev 40 drivers/nfc/pn533/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 54 drivers/nfc/pn533/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 100 drivers/nfc/pn533/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 138 drivers/nfc/pn533/i2c.c if (!phy || irq != phy->i2c_dev->irq) { i2c_dev 143 drivers/nfc/pn533/i2c.c client = phy->i2c_dev; i2c_dev 193 drivers/nfc/pn533/i2c.c phy->i2c_dev = client; i2c_dev 200 drivers/nfc/pn533/i2c.c &phy->i2c_dev->dev, i2c_dev 150 drivers/nfc/pn544/i2c.c struct i2c_client *i2c_dev; i2c_dev 194 drivers/nfc/pn544/i2c.c nfc_info(&phy->i2c_dev->dev, "Detecting nfc_en polarity\n"); i2c_dev 212 drivers/nfc/pn544/i2c.c dev_dbg(&phy->i2c_dev->dev, "Sending reset cmd\n"); i2c_dev 213 drivers/nfc/pn544/i2c.c ret = i2c_master_send(phy->i2c_dev, rset_cmd, count); i2c_dev 215 drivers/nfc/pn544/i2c.c nfc_info(&phy->i2c_dev->dev, i2c_dev 223 drivers/nfc/pn544/i2c.c nfc_err(&phy->i2c_dev->dev, i2c_dev 299 drivers/nfc/pn544/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 363 drivers/nfc/pn544/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 421 drivers/nfc/pn544/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 489 drivers/nfc/pn544/i2c.c if (!phy || irq != phy->i2c_dev->irq) { i2c_dev 494 drivers/nfc/pn544/i2c.c client = phy->i2c_dev; i2c_dev 644 drivers/nfc/pn544/i2c.c r = pn544_hci_i2c_fw_write_cmd(phy->i2c_dev, i2c_dev 678 drivers/nfc/pn544/i2c.c r = i2c_master_send(phy->i2c_dev, buf, chunklen); i2c_dev 706 drivers/nfc/pn544/i2c.c r = i2c_master_send(phy->i2c_dev, i2c_dev 750 drivers/nfc/pn544/i2c.c &phy->i2c_dev->dev); i2c_dev 789 drivers/nfc/pn544/i2c.c r = pn544_hci_i2c_fw_check_cmd(phy->i2c_dev, i2c_dev 894 drivers/nfc/pn544/i2c.c phy->i2c_dev = client; i2c_dev 26 drivers/nfc/s3fwrn5/i2c.c struct i2c_client *i2c_dev; i2c_dev 99 drivers/nfc/s3fwrn5/i2c.c ret = i2c_master_send(phy->i2c_dev, skb->data, skb->len); i2c_dev 103 drivers/nfc/s3fwrn5/i2c.c ret = i2c_master_send(phy->i2c_dev, skb->data, skb->len); i2c_dev 134 drivers/nfc/s3fwrn5/i2c.c ret = i2c_master_recv(phy->i2c_dev, hdr, hdr_size); i2c_dev 154 drivers/nfc/s3fwrn5/i2c.c ret = i2c_master_recv(phy->i2c_dev, skb_put(skb, data_len), data_len); i2c_dev 228 drivers/nfc/s3fwrn5/i2c.c phy->i2c_dev = client; i2c_dev 235 drivers/nfc/s3fwrn5/i2c.c ret = devm_gpio_request_one(&phy->i2c_dev->dev, phy->gpio_en, i2c_dev 240 drivers/nfc/s3fwrn5/i2c.c ret = devm_gpio_request_one(&phy->i2c_dev->dev, phy->gpio_fw_wake, i2c_dev 245 drivers/nfc/s3fwrn5/i2c.c ret = s3fwrn5_probe(&phy->ndev, phy, &phy->i2c_dev->dev, &i2c_phy_ops, i2c_dev 250 drivers/nfc/s3fwrn5/i2c.c ret = devm_request_threaded_irq(&client->dev, phy->i2c_dev->irq, NULL, i2c_dev 33 drivers/nfc/st-nci/i2c.c struct i2c_client *i2c_dev; i2c_dev 53 drivers/nfc/st-nci/i2c.c enable_irq(phy->i2c_dev->irq); i2c_dev 64 drivers/nfc/st-nci/i2c.c disable_irq_nosync(phy->i2c_dev->irq); i2c_dev 77 drivers/nfc/st-nci/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 112 drivers/nfc/st-nci/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 164 drivers/nfc/st-nci/i2c.c if (!phy || !phy->ndlc || irq != phy->i2c_dev->irq) { i2c_dev 169 drivers/nfc/st-nci/i2c.c client = phy->i2c_dev; i2c_dev 221 drivers/nfc/st-nci/i2c.c phy->i2c_dev = client; i2c_dev 54 drivers/nfc/st21nfca/i2c.c struct i2c_client *i2c_dev; i2c_dev 103 drivers/nfc/st21nfca/i2c.c r = i2c_master_send(phy->i2c_dev, reboot_cmd, i2c_dev 115 drivers/nfc/st21nfca/i2c.c r = i2c_master_recv(phy->i2c_dev, tmp, i2c_dev 188 drivers/nfc/st21nfca/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 355 drivers/nfc/st21nfca/i2c.c struct i2c_client *client = phy->i2c_dev; i2c_dev 430 drivers/nfc/st21nfca/i2c.c if (!phy || irq != phy->i2c_dev->irq) { i2c_dev 435 drivers/nfc/st21nfca/i2c.c client = phy->i2c_dev; i2c_dev 518 drivers/nfc/st21nfca/i2c.c phy->i2c_dev = client; i2c_dev 133 drivers/platform/chrome/chromeos_laptop.c struct i2c_peripheral *i2c_dev; i2c_dev 137 drivers/platform/chrome/chromeos_laptop.c i2c_dev = &cros_laptop->i2c_peripherals[i]; i2c_dev 140 drivers/platform/chrome/chromeos_laptop.c if (i2c_dev->client) i2c_dev 143 drivers/platform/chrome/chromeos_laptop.c if (strncmp(adapter->name, i2c_adapter_names[i2c_dev->type], i2c_dev 144 drivers/platform/chrome/chromeos_laptop.c strlen(i2c_adapter_names[i2c_dev->type]))) i2c_dev 147 drivers/platform/chrome/chromeos_laptop.c if (i2c_dev->pci_devid && i2c_dev 149 drivers/platform/chrome/chromeos_laptop.c i2c_dev->pci_devid)) { i2c_dev 153 drivers/platform/chrome/chromeos_laptop.c i2c_dev->client = i2c_dev 155 drivers/platform/chrome/chromeos_laptop.c &i2c_dev->board_info, i2c_dev 156 drivers/platform/chrome/chromeos_laptop.c i2c_dev->alt_addr); i2c_dev 194 drivers/platform/chrome/chromeos_laptop.c struct i2c_peripheral *i2c_dev; i2c_dev 198 drivers/platform/chrome/chromeos_laptop.c i2c_dev = &cros_laptop->i2c_peripherals[i]; i2c_dev 200 drivers/platform/chrome/chromeos_laptop.c if (i2c_dev->client == client) i2c_dev 201 drivers/platform/chrome/chromeos_laptop.c i2c_dev->client = NULL; i2c_dev 696 drivers/platform/chrome/chromeos_laptop.c static int __init chromeos_laptop_setup_irq(struct i2c_peripheral *i2c_dev) i2c_dev 700 drivers/platform/chrome/chromeos_laptop.c if (i2c_dev->dmi_name) { i2c_dev 701 drivers/platform/chrome/chromeos_laptop.c irq = chromeos_laptop_get_irq_from_dmi(i2c_dev->dmi_name); i2c_dev 705 drivers/platform/chrome/chromeos_laptop.c i2c_dev->irq_resource = (struct resource) i2c_dev 707 drivers/platform/chrome/chromeos_laptop.c IORESOURCE_IRQ | i2c_dev->irqflags); i2c_dev 708 drivers/platform/chrome/chromeos_laptop.c i2c_dev->board_info.resources = &i2c_dev->irq_resource; i2c_dev 709 drivers/platform/chrome/chromeos_laptop.c i2c_dev->board_info.num_resources = 1; i2c_dev 719 drivers/platform/chrome/chromeos_laptop.c struct i2c_peripheral *i2c_dev; i2c_dev 737 drivers/platform/chrome/chromeos_laptop.c i2c_dev = &cros_laptop->i2c_peripherals[i]; i2c_dev 738 drivers/platform/chrome/chromeos_laptop.c info = &i2c_dev->board_info; i2c_dev 740 drivers/platform/chrome/chromeos_laptop.c error = chromeos_laptop_setup_irq(i2c_dev); i2c_dev 759 drivers/platform/chrome/chromeos_laptop.c i2c_dev = &cros_laptop->i2c_peripherals[i]; i2c_dev 760 drivers/platform/chrome/chromeos_laptop.c info = &i2c_dev->board_info; i2c_dev 833 drivers/platform/chrome/chromeos_laptop.c struct i2c_peripheral *i2c_dev; i2c_dev 838 drivers/platform/chrome/chromeos_laptop.c i2c_dev = &cros_laptop->i2c_peripherals[i]; i2c_dev 839 drivers/platform/chrome/chromeos_laptop.c info = &i2c_dev->board_info; i2c_dev 841 drivers/platform/chrome/chromeos_laptop.c i2c_unregister_device(i2c_dev->client); i2c_dev 802 drivers/scsi/esas2r/atioctl.h u8 i2c_dev; i2c_dev 14 include/sound/pt2258.h struct snd_i2c_device *i2c_dev; i2c_dev 40 sound/i2c/other/pt2258.c if (snd_i2c_sendbytes(pt->i2c_dev, bytes, 1) != 1) i2c_dev 48 sound/i2c/other/pt2258.c if (snd_i2c_sendbytes(pt->i2c_dev, bytes, 1) != 1) i2c_dev 58 sound/i2c/other/pt2258.c if (snd_i2c_sendbytes(pt->i2c_dev, bytes, 2) != 2) i2c_dev 111 sound/i2c/other/pt2258.c if (snd_i2c_sendbytes(pt->i2c_dev, bytes, 2) != 2) i2c_dev 119 sound/i2c/other/pt2258.c if (snd_i2c_sendbytes(pt->i2c_dev, bytes, 2) != 2) i2c_dev 156 sound/i2c/other/pt2258.c if (snd_i2c_sendbytes(pt->i2c_dev, bytes, 1) != 1) i2c_dev 170 sound/pci/ice1712/revo.c pt->i2c_dev = spec->dev; i2c_dev 764 sound/soc/intel/boards/bytcr_rt5640.c struct device *i2c_dev; i2c_dev 767 sound/soc/intel/boards/bytcr_rt5640.c i2c_dev = bus_find_device_by_name(&i2c_bus_type, NULL, i2c_dev_name); i2c_dev 768 sound/soc/intel/boards/bytcr_rt5640.c if (!i2c_dev) i2c_dev 809 sound/soc/intel/boards/bytcr_rt5640.c ret = device_add_properties(i2c_dev, props); i2c_dev 810 sound/soc/intel/boards/bytcr_rt5640.c put_device(i2c_dev); i2c_dev 517 sound/soc/intel/boards/bytcr_rt5651.c static int byt_rt5651_add_codec_device_props(struct device *i2c_dev) i2c_dev 537 sound/soc/intel/boards/bytcr_rt5651.c return device_add_properties(i2c_dev, props);