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 --- |