i2c-altera.c (edb2c9dd3948738ef030c32b948543e84f4d3f81) i2c-altera.c (e0442d76213981ab48e8ea0874bb6c47e3af5a36)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright Intel Corporation (C) 2017.
4 *
5 * Based on the i2c-axxia.c driver.
6 */
7#include <linux/clk.h>
8#include <linux/clkdev.h>

--- 368 unchanged lines hidden (view full) ---

377static const struct i2c_algorithm altr_i2c_algo = {
378 .master_xfer = altr_i2c_xfer,
379 .functionality = altr_i2c_func,
380};
381
382static int altr_i2c_probe(struct platform_device *pdev)
383{
384 struct altr_i2c_dev *idev = NULL;
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright Intel Corporation (C) 2017.
4 *
5 * Based on the i2c-axxia.c driver.
6 */
7#include <linux/clk.h>
8#include <linux/clkdev.h>

--- 368 unchanged lines hidden (view full) ---

377static const struct i2c_algorithm altr_i2c_algo = {
378 .master_xfer = altr_i2c_xfer,
379 .functionality = altr_i2c_func,
380};
381
382static int altr_i2c_probe(struct platform_device *pdev)
383{
384 struct altr_i2c_dev *idev = NULL;
385 struct resource *res;
386 int irq, ret;
385 int irq, ret;
386 u32 val;
387
388 idev = devm_kzalloc(&pdev->dev, sizeof(*idev), GFP_KERNEL);
389 if (!idev)
390 return -ENOMEM;
391
387
388 idev = devm_kzalloc(&pdev->dev, sizeof(*idev), GFP_KERNEL);
389 if (!idev)
390 return -ENOMEM;
391
392 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
393 idev->base = devm_ioremap_resource(&pdev->dev, res);
392 idev->base = devm_platform_ioremap_resource(pdev, 0);
394 if (IS_ERR(idev->base))
395 return PTR_ERR(idev->base);
396
397 irq = platform_get_irq(pdev, 0);
398 if (irq < 0) {
399 dev_err(&pdev->dev, "missing interrupt resource\n");
400 return irq;
401 }
402
403 idev->i2c_clk = devm_clk_get(&pdev->dev, NULL);
404 if (IS_ERR(idev->i2c_clk)) {
405 dev_err(&pdev->dev, "missing clock\n");
406 return PTR_ERR(idev->i2c_clk);
407 }
408
409 idev->dev = &pdev->dev;
410 init_completion(&idev->msg_complete);
411 spin_lock_init(&idev->lock);
412
393 if (IS_ERR(idev->base))
394 return PTR_ERR(idev->base);
395
396 irq = platform_get_irq(pdev, 0);
397 if (irq < 0) {
398 dev_err(&pdev->dev, "missing interrupt resource\n");
399 return irq;
400 }
401
402 idev->i2c_clk = devm_clk_get(&pdev->dev, NULL);
403 if (IS_ERR(idev->i2c_clk)) {
404 dev_err(&pdev->dev, "missing clock\n");
405 return PTR_ERR(idev->i2c_clk);
406 }
407
408 idev->dev = &pdev->dev;
409 init_completion(&idev->msg_complete);
410 spin_lock_init(&idev->lock);
411
413 ret = device_property_read_u32(idev->dev, "fifo-size",
412 val = device_property_read_u32(idev->dev, "fifo-size",
414 &idev->fifo_size);
413 &idev->fifo_size);
415 if (ret) {
414 if (val) {
416 dev_err(&pdev->dev, "FIFO size set to default of %d\n",
417 ALTR_I2C_DFLT_FIFO_SZ);
418 idev->fifo_size = ALTR_I2C_DFLT_FIFO_SZ;
419 }
420
415 dev_err(&pdev->dev, "FIFO size set to default of %d\n",
416 ALTR_I2C_DFLT_FIFO_SZ);
417 idev->fifo_size = ALTR_I2C_DFLT_FIFO_SZ;
418 }
419
421 ret = device_property_read_u32(idev->dev, "clock-frequency",
420 val = device_property_read_u32(idev->dev, "clock-frequency",
422 &idev->bus_clk_rate);
421 &idev->bus_clk_rate);
423 if (ret) {
422 if (val) {
424 dev_err(&pdev->dev, "Default to 100kHz\n");
425 idev->bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; /* default clock rate */
426 }
427
428 if (idev->bus_clk_rate > I2C_MAX_FAST_MODE_FREQ) {
429 dev_err(&pdev->dev, "invalid clock-frequency %d\n",
430 idev->bus_clk_rate);
431 return -EINVAL;

--- 68 unchanged lines hidden ---
423 dev_err(&pdev->dev, "Default to 100kHz\n");
424 idev->bus_clk_rate = I2C_MAX_STANDARD_MODE_FREQ; /* default clock rate */
425 }
426
427 if (idev->bus_clk_rate > I2C_MAX_FAST_MODE_FREQ) {
428 dev_err(&pdev->dev, "invalid clock-frequency %d\n",
429 idev->bus_clk_rate);
430 return -EINVAL;

--- 68 unchanged lines hidden ---