hc
2024-10-12 a5969cabbb4660eab42b6ef0412cbbd1200cf14d
kernel/drivers/i2c/busses/i2c-stu300.c
....@@ -1,6 +1,6 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Copyright (C) 2007-2012 ST-Ericsson AB
3
- * License terms: GNU General Public License (GPL) version 2
44 * ST DDC I2C master mode driver, used in e.g. U300 series platforms.
55 * Author: Linus Walleij <linus.walleij@stericsson.com>
66 * Author: Jonas Aaberg <jonas.aberg@stericsson.com>
....@@ -132,7 +132,7 @@
132132 #define NUM_ADDR_RESEND_ATTEMPTS 12
133133
134134 /* I2C clock speed, in Hz 0-400kHz*/
135
-static unsigned int scl_frequency = 100000;
135
+static unsigned int scl_frequency = I2C_MAX_STANDARD_MODE_FREQ;
136136 module_param(scl_frequency, uint, 0644);
137137
138138 /**
....@@ -328,12 +328,6 @@
328328 {
329329 int ret;
330330
331
- if (unlikely(irqs_disabled())) {
332
- /* TODO: implement polling for this case if need be. */
333
- WARN(1, "irqs are disabled, cannot poll for event\n");
334
- return -EIO;
335
- }
336
-
337331 /* Lock command issue, fill in an event we wait for */
338332 spin_lock_irq(&dev->cmd_issue_lock);
339333 init_completion(&dev->cmd_complete);
....@@ -379,13 +373,6 @@
379373 enum stu300_event mr_event)
380374 {
381375 int ret;
382
-
383
- if (unlikely(irqs_disabled())) {
384
- /* TODO: implement polling for this case if need be. */
385
- dev_err(&dev->pdev->dev, "irqs are disabled on this "
386
- "system!\n");
387
- return -EIO;
388
- }
389376
390377 /* Is it already here? */
391378 spin_lock_irq(&dev->cmd_issue_lock);
....@@ -457,7 +444,7 @@
457444 "Attempt: %d\n", i+1);
458445
459446 dev_err(&dev->pdev->dev, "base address = "
460
- "0x%08x, reinit hardware\n", (u32) dev->virtbase);
447
+ "0x%p, reinit hardware\n", dev->virtbase);
461448
462449 (void) stu300_init_hw(dev);
463450 }
....@@ -510,7 +497,7 @@
510497 dev_dbg(&dev->pdev->dev, "Clock rate %lu Hz, I2C bus speed %d Hz "
511498 "virtbase %p\n", clkrate, dev->speed, dev->virtbase);
512499
513
- if (dev->speed > 100000)
500
+ if (dev->speed > I2C_MAX_STANDARD_MODE_FREQ)
514501 /* Fast Mode I2C */
515502 val = ((clkrate/dev->speed) - 9)/3 + 1;
516503 else
....@@ -531,7 +518,7 @@
531518 return -EINVAL;
532519 }
533520
534
- if (dev->speed > 100000) {
521
+ if (dev->speed > I2C_MAX_STANDARD_MODE_FREQ) {
535522 /* CC6..CC0 */
536523 stu300_wr8((val & I2C_CCR_CC_MASK) | I2C_CCR_FMSM,
537524 dev->virtbase + I2C_CCR);
....@@ -846,6 +833,13 @@
846833 return num;
847834 }
848835
836
+static int stu300_xfer_todo(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
837
+{
838
+ /* TODO: implement polling for this case if need be. */
839
+ WARN(1, "%s: atomic transfers not implemented\n", dev_name(&adap->dev));
840
+ return -EOPNOTSUPP;
841
+}
842
+
849843 static u32 stu300_func(struct i2c_adapter *adap)
850844 {
851845 /* This is the simplest thing you can think of... */
....@@ -853,8 +847,9 @@
853847 }
854848
855849 static const struct i2c_algorithm stu300_algo = {
856
- .master_xfer = stu300_xfer,
857
- .functionality = stu300_func,
850
+ .master_xfer = stu300_xfer,
851
+ .master_xfer_atomic = stu300_xfer_todo,
852
+ .functionality = stu300_func,
858853 };
859854
860855 static const struct i2c_adapter_quirks stu300_quirks = {
....@@ -865,7 +860,6 @@
865860 {
866861 struct stu300_dev *dev;
867862 struct i2c_adapter *adap;
868
- struct resource *res;
869863 int bus_nr;
870864 int ret = 0;
871865
....@@ -881,8 +875,7 @@
881875 }
882876
883877 dev->pdev = pdev;
884
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
885
- dev->virtbase = devm_ioremap_resource(&pdev->dev, res);
878
+ dev->virtbase = devm_platform_ioremap_resource(pdev, 0);
886879 dev_dbg(&pdev->dev, "initialize bus device I2C%d on virtual "
887880 "base %p\n", bus_nr, dev->virtbase);
888881 if (IS_ERR(dev->virtbase))