Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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

Pull more i2c updates from Wolfram Sang:
"Mostly bugfixes, small but wanted cleanups, and Paul's init.h removal
applied"

* 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
i2c: rcar: fix NACK error code
i2c: update i2c_algorithm documentation
i2c: rcar: use devm_clk_get to ensure clock is properly ref-counted
i2c: rcar: do not print error if device nacks transfer
i2c: rely on driver core when sanitizing devices
i2c: delete non-required instances of include <linux/init.h>
i2c: acorn: is tristate and should use module.h
i2c: piix4: Standardize log messages
i2c: piix4: Use different message for AMD Auxiliary SMBus Controller
i2c: piix4: Add support for AMD ML and CZ SMBus changes

+64 -77
+1 -1
Documentation/i2c/busses/i2c-piix4
··· 13 13 * AMD SP5100 (SB700 derivative found on some server mainboards) 14 14 Datasheet: Publicly available at the AMD website 15 15 http://support.amd.com/us/Embedded_TechDocs/44413.pdf 16 - * AMD Hudson-2, CZ 16 + * AMD Hudson-2, ML, CZ 17 17 Datasheet: Not publicly available 18 18 * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge 19 19 Datasheet: Publicly available at the SMSC website http://www.smsc.com
-1
drivers/i2c/algos/i2c-algo-bit.c
··· 25 25 #include <linux/kernel.h> 26 26 #include <linux/module.h> 27 27 #include <linux/delay.h> 28 - #include <linux/init.h> 29 28 #include <linux/errno.h> 30 29 #include <linux/sched.h> 31 30 #include <linux/i2c.h>
-1
drivers/i2c/algos/i2c-algo-pca.c
··· 24 24 #include <linux/moduleparam.h> 25 25 #include <linux/delay.h> 26 26 #include <linux/jiffies.h> 27 - #include <linux/init.h> 28 27 #include <linux/errno.h> 29 28 #include <linux/i2c.h> 30 29 #include <linux/i2c-algo-pca.h>
-1
drivers/i2c/algos/i2c-algo-pcf.c
··· 30 30 #include <linux/kernel.h> 31 31 #include <linux/module.h> 32 32 #include <linux/delay.h> 33 - #include <linux/init.h> 34 33 #include <linux/errno.h> 35 34 #include <linux/i2c.h> 36 35 #include <linux/i2c-algo-pcf.h>
+1
drivers/i2c/busses/Kconfig
··· 152 152 ATI SB700/SP5100 153 153 ATI SB800 154 154 AMD Hudson-2 155 + AMD ML 155 156 AMD CZ 156 157 Serverworks OSB4 157 158 Serverworks CSB5
+1 -1
drivers/i2c/busses/i2c-acorn.c
··· 12 12 * On Acorn machines, the following i2c devices are on the bus: 13 13 * - PCF8583 real time clock & static RAM 14 14 */ 15 - #include <linux/init.h> 15 + #include <linux/module.h> 16 16 #include <linux/i2c.h> 17 17 #include <linux/i2c-algo-bit.h> 18 18 #include <linux/io.h>
-1
drivers/i2c/busses/i2c-ali1535.c
··· 58 58 #include <linux/delay.h> 59 59 #include <linux/ioport.h> 60 60 #include <linux/i2c.h> 61 - #include <linux/init.h> 62 61 #include <linux/acpi.h> 63 62 #include <linux/io.h> 64 63
-1
drivers/i2c/busses/i2c-ali1563.c
··· 20 20 #include <linux/delay.h> 21 21 #include <linux/i2c.h> 22 22 #include <linux/pci.h> 23 - #include <linux/init.h> 24 23 #include <linux/acpi.h> 25 24 26 25 #define ALI1563_MAX_TIMEOUT 500
-1
drivers/i2c/busses/i2c-ali15x3.c
··· 65 65 #include <linux/ioport.h> 66 66 #include <linux/delay.h> 67 67 #include <linux/i2c.h> 68 - #include <linux/init.h> 69 68 #include <linux/acpi.h> 70 69 #include <linux/io.h> 71 70
-1
drivers/i2c/busses/i2c-amd756.c
··· 41 41 #include <linux/stddef.h> 42 42 #include <linux/ioport.h> 43 43 #include <linux/i2c.h> 44 - #include <linux/init.h> 45 44 #include <linux/acpi.h> 46 45 #include <linux/io.h> 47 46
-1
drivers/i2c/busses/i2c-amd8111.c
··· 13 13 #include <linux/kernel.h> 14 14 #include <linux/stddef.h> 15 15 #include <linux/ioport.h> 16 - #include <linux/init.h> 17 16 #include <linux/i2c.h> 18 17 #include <linux/delay.h> 19 18 #include <linux/acpi.h>
-1
drivers/i2c/busses/i2c-au1550.c
··· 31 31 #include <linux/kernel.h> 32 32 #include <linux/module.h> 33 33 #include <linux/platform_device.h> 34 - #include <linux/init.h> 35 34 #include <linux/errno.h> 36 35 #include <linux/i2c.h> 37 36 #include <linux/slab.h>
-1
drivers/i2c/busses/i2c-cbus-gpio.c
··· 19 19 #include <linux/io.h> 20 20 #include <linux/i2c.h> 21 21 #include <linux/gpio.h> 22 - #include <linux/init.h> 23 22 #include <linux/slab.h> 24 23 #include <linux/delay.h> 25 24 #include <linux/errno.h>
-1
drivers/i2c/busses/i2c-cpm.c
··· 33 33 #include <linux/module.h> 34 34 #include <linux/delay.h> 35 35 #include <linux/slab.h> 36 - #include <linux/init.h> 37 36 #include <linux/interrupt.h> 38 37 #include <linux/errno.h> 39 38 #include <linux/stddef.h>
-1
drivers/i2c/busses/i2c-eg20t.c
··· 18 18 #include <linux/module.h> 19 19 #include <linux/kernel.h> 20 20 #include <linux/delay.h> 21 - #include <linux/init.h> 22 21 #include <linux/errno.h> 23 22 #include <linux/i2c.h> 24 23 #include <linux/fs.h>
-1
drivers/i2c/busses/i2c-exynos5.c
··· 12 12 #include <linux/module.h> 13 13 14 14 #include <linux/i2c.h> 15 - #include <linux/init.h> 16 15 #include <linux/time.h> 17 16 #include <linux/interrupt.h> 18 17 #include <linux/delay.h>
-1
drivers/i2c/busses/i2c-highlander.c
··· 12 12 * of this archive for more details. 13 13 */ 14 14 #include <linux/module.h> 15 - #include <linux/init.h> 16 15 #include <linux/interrupt.h> 17 16 #include <linux/i2c.h> 18 17 #include <linux/platform_device.h>
-1
drivers/i2c/busses/i2c-hydra.c
··· 27 27 #include <linux/types.h> 28 28 #include <linux/i2c.h> 29 29 #include <linux/i2c-algo-bit.h> 30 - #include <linux/init.h> 31 30 #include <linux/io.h> 32 31 #include <asm/hydra.h> 33 32
-1
drivers/i2c/busses/i2c-ibm_iic.c
··· 36 36 #include <linux/ioport.h> 37 37 #include <linux/delay.h> 38 38 #include <linux/slab.h> 39 - #include <linux/init.h> 40 39 #include <linux/interrupt.h> 41 40 #include <asm/irq.h> 42 41 #include <linux/io.h>
-1
drivers/i2c/busses/i2c-iop3xx.c
··· 34 34 #include <linux/module.h> 35 35 #include <linux/delay.h> 36 36 #include <linux/slab.h> 37 - #include <linux/init.h> 38 37 #include <linux/errno.h> 39 38 #include <linux/platform_device.h> 40 39 #include <linux/i2c.h>
-1
drivers/i2c/busses/i2c-isch.c
··· 33 33 #include <linux/stddef.h> 34 34 #include <linux/ioport.h> 35 35 #include <linux/i2c.h> 36 - #include <linux/init.h> 37 36 #include <linux/io.h> 38 37 #include <linux/acpi.h> 39 38
-1
drivers/i2c/busses/i2c-ismt.c
··· 62 62 */ 63 63 64 64 #include <linux/module.h> 65 - #include <linux/init.h> 66 65 #include <linux/pci.h> 67 66 #include <linux/kernel.h> 68 67 #include <linux/stddef.h>
-1
drivers/i2c/busses/i2c-mpc.c
··· 16 16 #include <linux/kernel.h> 17 17 #include <linux/module.h> 18 18 #include <linux/sched.h> 19 - #include <linux/init.h> 20 19 #include <linux/of_address.h> 21 20 #include <linux/of_irq.h> 22 21 #include <linux/of_platform.h>
-1
drivers/i2c/busses/i2c-nforce2.c
··· 51 51 #include <linux/kernel.h> 52 52 #include <linux/stddef.h> 53 53 #include <linux/ioport.h> 54 - #include <linux/init.h> 55 54 #include <linux/i2c.h> 56 55 #include <linux/delay.h> 57 56 #include <linux/dmi.h>
-1
drivers/i2c/busses/i2c-ocores.c
··· 15 15 #include <linux/err.h> 16 16 #include <linux/kernel.h> 17 17 #include <linux/module.h> 18 - #include <linux/init.h> 19 18 #include <linux/errno.h> 20 19 #include <linux/platform_device.h> 21 20 #include <linux/i2c.h>
-1
drivers/i2c/busses/i2c-octeon.c
··· 18 18 #include <linux/delay.h> 19 19 #include <linux/sched.h> 20 20 #include <linux/slab.h> 21 - #include <linux/init.h> 22 21 #include <linux/i2c.h> 23 22 #include <linux/io.h> 24 23 #include <linux/of.h>
-1
drivers/i2c/busses/i2c-pca-platform.c
··· 12 12 */ 13 13 #include <linux/kernel.h> 14 14 #include <linux/module.h> 15 - #include <linux/init.h> 16 15 #include <linux/slab.h> 17 16 #include <linux/delay.h> 18 17 #include <linux/jiffies.h>
+31 -13
drivers/i2c/busses/i2c-piix4.c
··· 22 22 Intel PIIX4, 440MX 23 23 Serverworks OSB4, CSB5, CSB6, HT-1000, HT-1100 24 24 ATI IXP200, IXP300, IXP400, SB600, SB700/SP5100, SB800 25 - AMD Hudson-2, CZ 25 + AMD Hudson-2, ML, CZ 26 26 SMSC Victory66 27 27 28 28 Note: we assume there can only be one device, with one or more ··· 38 38 #include <linux/ioport.h> 39 39 #include <linux/i2c.h> 40 40 #include <linux/slab.h> 41 - #include <linux/init.h> 42 41 #include <linux/dmi.h> 43 42 #include <linux/acpi.h> 44 43 #include <linux/io.h> ··· 207 208 "WARNING: SMBus interface has been FORCEFULLY ENABLED!\n"); 208 209 } else { 209 210 dev_err(&PIIX4_dev->dev, 210 - "Host SMBus controller not enabled!\n"); 211 + "SMBus Host Controller not enabled!\n"); 211 212 release_region(piix4_smba, SMBIOSIZE); 212 213 return -ENODEV; 213 214 } 214 215 } 215 216 216 217 if (((temp & 0x0E) == 8) || ((temp & 0x0E) == 2)) 217 - dev_dbg(&PIIX4_dev->dev, "Using Interrupt 9 for SMBus.\n"); 218 + dev_dbg(&PIIX4_dev->dev, "Using IRQ for SMBus\n"); 218 219 else if ((temp & 0x0E) == 0) 219 - dev_dbg(&PIIX4_dev->dev, "Using Interrupt SMI# for SMBus.\n"); 220 + dev_dbg(&PIIX4_dev->dev, "Using SMI# for SMBus\n"); 220 221 else 221 222 dev_err(&PIIX4_dev->dev, "Illegal Interrupt configuration " 222 223 "(or code out of date)!\n"); ··· 234 235 { 235 236 unsigned short piix4_smba; 236 237 unsigned short smba_idx = 0xcd6; 237 - u8 smba_en_lo, smba_en_hi, i2ccfg, i2ccfg_offset = 0x10, smb_en; 238 + u8 smba_en_lo, smba_en_hi, smb_en, smb_en_status; 239 + u8 i2ccfg, i2ccfg_offset = 0x10; 238 240 239 241 /* SB800 and later SMBus does not support forcing address */ 240 242 if (force || force_addr) { ··· 245 245 } 246 246 247 247 /* Determine the address of the SMBus areas */ 248 - smb_en = (aux) ? 0x28 : 0x2c; 248 + if ((PIIX4_dev->vendor == PCI_VENDOR_ID_AMD && 249 + PIIX4_dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS && 250 + PIIX4_dev->revision >= 0x41) || 251 + (PIIX4_dev->vendor == PCI_VENDOR_ID_AMD && 252 + PIIX4_dev->device == 0x790b && 253 + PIIX4_dev->revision >= 0x49)) 254 + smb_en = 0x00; 255 + else 256 + smb_en = (aux) ? 0x28 : 0x2c; 249 257 250 258 if (!request_region(smba_idx, 2, "smba_idx")) { 251 259 dev_err(&PIIX4_dev->dev, "SMBus base address index region " ··· 266 258 smba_en_hi = inb_p(smba_idx + 1); 267 259 release_region(smba_idx, 2); 268 260 269 - if ((smba_en_lo & 1) == 0) { 261 + if (!smb_en) { 262 + smb_en_status = smba_en_lo & 0x10; 263 + piix4_smba = smba_en_hi << 8; 264 + if (aux) 265 + piix4_smba |= 0x20; 266 + } else { 267 + smb_en_status = smba_en_lo & 0x01; 268 + piix4_smba = ((smba_en_hi << 8) | smba_en_lo) & 0xffe0; 269 + } 270 + 271 + if (!smb_en_status) { 270 272 dev_err(&PIIX4_dev->dev, 271 - "Host SMBus controller not enabled!\n"); 273 + "SMBus Host Controller not enabled!\n"); 272 274 return -ENODEV; 273 275 } 274 276 275 - piix4_smba = ((smba_en_hi << 8) | smba_en_lo) & 0xffe0; 276 277 if (acpi_check_region(piix4_smba, SMBIOSIZE, piix4_driver.name)) 277 278 return -ENODEV; 278 279 ··· 294 277 /* Aux SMBus does not support IRQ information */ 295 278 if (aux) { 296 279 dev_info(&PIIX4_dev->dev, 297 - "SMBus Host Controller at 0x%x\n", piix4_smba); 280 + "Auxiliary SMBus Host Controller at 0x%x\n", 281 + piix4_smba); 298 282 return piix4_smba; 299 283 } 300 284 ··· 310 292 release_region(piix4_smba + i2ccfg_offset, 1); 311 293 312 294 if (i2ccfg & 1) 313 - dev_dbg(&PIIX4_dev->dev, "Using IRQ for SMBus.\n"); 295 + dev_dbg(&PIIX4_dev->dev, "Using IRQ for SMBus\n"); 314 296 else 315 - dev_dbg(&PIIX4_dev->dev, "Using SMI# for SMBus.\n"); 297 + dev_dbg(&PIIX4_dev->dev, "Using SMI# for SMBus\n"); 316 298 317 299 dev_info(&PIIX4_dev->dev, 318 300 "SMBus Host Controller at 0x%x, revision %d\n",
-1
drivers/i2c/busses/i2c-pmcmsp.c
··· 26 26 27 27 #include <linux/kernel.h> 28 28 #include <linux/module.h> 29 - #include <linux/init.h> 30 29 #include <linux/platform_device.h> 31 30 #include <linux/i2c.h> 32 31 #include <linux/interrupt.h>
-1
drivers/i2c/busses/i2c-powermac.c
··· 24 24 #include <linux/kernel.h> 25 25 #include <linux/types.h> 26 26 #include <linux/i2c.h> 27 - #include <linux/init.h> 28 27 #include <linux/device.h> 29 28 #include <linux/platform_device.h> 30 29 #include <linux/of_irq.h>
-1
drivers/i2c/busses/i2c-puv3.c
··· 17 17 #include <linux/types.h> 18 18 #include <linux/delay.h> 19 19 #include <linux/i2c.h> 20 - #include <linux/init.h> 21 20 #include <linux/clk.h> 22 21 #include <linux/platform_device.h> 23 22 #include <linux/io.h>
+11 -11
drivers/i2c/busses/i2c-rcar.c
··· 26 26 #include <linux/clk.h> 27 27 #include <linux/delay.h> 28 28 #include <linux/err.h> 29 - #include <linux/init.h> 30 29 #include <linux/interrupt.h> 31 30 #include <linux/io.h> 32 31 #include <linux/i2c.h> ··· 110 111 void __iomem *io; 111 112 struct i2c_adapter adap; 112 113 struct i2c_msg *msg; 114 + struct clk *clk; 113 115 114 116 spinlock_t lock; 115 117 wait_queue_head_t wait; ··· 227 227 u32 bus_speed, 228 228 struct device *dev) 229 229 { 230 - struct clk *clkp = clk_get(dev, NULL); 231 230 u32 scgd, cdf; 232 231 u32 round, ick; 233 232 u32 scl; 234 233 u32 cdf_width; 235 234 unsigned long rate; 236 - 237 - if (IS_ERR(clkp)) { 238 - dev_err(dev, "couldn't get clock\n"); 239 - return PTR_ERR(clkp); 240 - } 241 235 242 236 switch (priv->devtype) { 243 237 case I2C_RCAR_GEN1: ··· 260 266 * clkp : peripheral_clk 261 267 * F[] : integer up-valuation 262 268 */ 263 - rate = clk_get_rate(clkp); 269 + rate = clk_get_rate(priv->clk); 264 270 cdf = rate / 20000000; 265 271 if (cdf >= 1 << cdf_width) { 266 272 dev_err(dev, "Input clock %lu too high\n", rate); ··· 302 308 303 309 scgd_find: 304 310 dev_dbg(dev, "clk %d/%d(%lu), round %u, CDF:0x%x, SCGD: 0x%x\n", 305 - scl, bus_speed, clk_get_rate(clkp), round, cdf, scgd); 311 + scl, bus_speed, clk_get_rate(priv->clk), round, cdf, scgd); 306 312 307 313 /* 308 314 * keep icccr value ··· 598 604 * error handling 599 605 */ 600 606 if (rcar_i2c_flags_has(priv, ID_NACK)) { 601 - ret = -EREMOTEIO; 607 + ret = -ENXIO; 602 608 break; 603 609 } 604 610 ··· 617 623 618 624 pm_runtime_put(dev); 619 625 620 - if (ret < 0) 626 + if (ret < 0 && ret != -ENXIO) 621 627 dev_err(dev, "error %d : %x\n", ret, priv->flags); 622 628 623 629 return ret; ··· 656 662 if (!priv) { 657 663 dev_err(dev, "no mem for private data\n"); 658 664 return -ENOMEM; 665 + } 666 + 667 + priv->clk = devm_clk_get(dev, NULL); 668 + if (IS_ERR(priv->clk)) { 669 + dev_err(dev, "cannot get clock\n"); 670 + return PTR_ERR(priv->clk); 659 671 } 660 672 661 673 bus_speed = 100000; /* default 100 kHz */
-1
drivers/i2c/busses/i2c-scmi.c
··· 12 12 #include <linux/slab.h> 13 13 #include <linux/kernel.h> 14 14 #include <linux/stddef.h> 15 - #include <linux/init.h> 16 15 #include <linux/i2c.h> 17 16 #include <linux/acpi.h> 18 17
-1
drivers/i2c/busses/i2c-sh7760.c
··· 11 11 #include <linux/delay.h> 12 12 #include <linux/err.h> 13 13 #include <linux/i2c.h> 14 - #include <linux/init.h> 15 14 #include <linux/interrupt.h> 16 15 #include <linux/ioport.h> 17 16 #include <linux/platform_device.h>
-1
drivers/i2c/busses/i2c-simtec.c
··· 20 20 21 21 #include <linux/kernel.h> 22 22 #include <linux/module.h> 23 - #include <linux/init.h> 24 23 #include <linux/delay.h> 25 24 #include <linux/platform_device.h> 26 25 #include <linux/slab.h>
-1
drivers/i2c/busses/i2c-sis630.c
··· 45 45 #include <linux/delay.h> 46 46 #include <linux/pci.h> 47 47 #include <linux/ioport.h> 48 - #include <linux/init.h> 49 48 #include <linux/i2c.h> 50 49 #include <linux/acpi.h> 51 50 #include <linux/io.h>
-1
drivers/i2c/busses/i2c-sis96x.c
··· 36 36 #include <linux/stddef.h> 37 37 #include <linux/ioport.h> 38 38 #include <linux/i2c.h> 39 - #include <linux/init.h> 40 39 #include <linux/acpi.h> 41 40 #include <linux/io.h> 42 41
-1
drivers/i2c/busses/i2c-via.c
··· 22 22 #include <linux/module.h> 23 23 #include <linux/pci.h> 24 24 #include <linux/ioport.h> 25 - #include <linux/init.h> 26 25 #include <linux/i2c.h> 27 26 #include <linux/i2c-algo-bit.h> 28 27 #include <linux/io.h>
-1
drivers/i2c/busses/i2c-xiic.c
··· 30 30 */ 31 31 #include <linux/kernel.h> 32 32 #include <linux/module.h> 33 - #include <linux/init.h> 34 33 #include <linux/errno.h> 35 34 #include <linux/err.h> 36 35 #include <linux/delay.h>
-1
drivers/i2c/busses/i2c-xlr.c
··· 11 11 #include <linux/kernel.h> 12 12 #include <linux/module.h> 13 13 #include <linux/slab.h> 14 - #include <linux/init.h> 15 14 #include <linux/ioport.h> 16 15 #include <linux/delay.h> 17 16 #include <linux/errno.h>
-1
drivers/i2c/busses/scx200_i2c.c
··· 26 26 #include <linux/module.h> 27 27 #include <linux/errno.h> 28 28 #include <linux/kernel.h> 29 - #include <linux/init.h> 30 29 #include <linux/i2c.h> 31 30 #include <linux/i2c-algo-bit.h> 32 31 #include <linux/io.h>
+4 -9
drivers/i2c/i2c-core.c
··· 261 261 262 262 acpi_dev_pm_attach(&client->dev, true); 263 263 status = driver->probe(client, i2c_match_id(driver->id_table, client)); 264 - if (status) { 265 - i2c_set_clientdata(client, NULL); 264 + if (status) 266 265 acpi_dev_pm_detach(&client->dev, true); 267 - } 266 + 268 267 return status; 269 268 } 270 269 ··· 271 272 { 272 273 struct i2c_client *client = i2c_verify_client(dev); 273 274 struct i2c_driver *driver; 274 - int status; 275 + int status = 0; 275 276 276 277 if (!client || !dev->driver) 277 278 return 0; ··· 280 281 if (driver->remove) { 281 282 dev_dbg(dev, "remove\n"); 282 283 status = driver->remove(client); 283 - } else { 284 - dev->driver = NULL; 285 - status = 0; 286 284 } 287 - if (status == 0) 288 - i2c_set_clientdata(client, NULL); 285 + 289 286 acpi_dev_pm_detach(&client->dev, true); 290 287 return status; 291 288 }
-1
drivers/i2c/muxes/i2c-arb-gpio-challenge.c
··· 19 19 #include <linux/kernel.h> 20 20 #include <linux/i2c.h> 21 21 #include <linux/i2c-mux.h> 22 - #include <linux/init.h> 23 22 #include <linux/module.h> 24 23 #include <linux/of_gpio.h> 25 24 #include <linux/platform_device.h>
-1
drivers/i2c/muxes/i2c-mux-gpio.c
··· 12 12 #include <linux/i2c-mux.h> 13 13 #include <linux/i2c-mux-gpio.h> 14 14 #include <linux/platform_device.h> 15 - #include <linux/init.h> 16 15 #include <linux/module.h> 17 16 #include <linux/slab.h> 18 17 #include <linux/gpio.h>
-1
drivers/i2c/muxes/i2c-mux-pca9541.c
··· 17 17 */ 18 18 19 19 #include <linux/module.h> 20 - #include <linux/init.h> 21 20 #include <linux/jiffies.h> 22 21 #include <linux/delay.h> 23 22 #include <linux/slab.h>
-1
drivers/i2c/muxes/i2c-mux-pca954x.c
··· 40 40 #include <linux/i2c.h> 41 41 #include <linux/i2c-mux.h> 42 42 #include <linux/i2c/pca954x.h> 43 - #include <linux/init.h> 44 43 #include <linux/module.h> 45 44 #include <linux/of_gpio.h> 46 45 #include <linux/slab.h>
-1
drivers/i2c/muxes/i2c-mux-pinctrl.c
··· 18 18 19 19 #include <linux/i2c.h> 20 20 #include <linux/i2c-mux.h> 21 - #include <linux/init.h> 22 21 #include <linux/module.h> 23 22 #include <linux/pinctrl/consumer.h> 24 23 #include <linux/i2c-mux-pinctrl.h>
+15 -1
include/linux/i2c.h
··· 342 342 } 343 343 #endif /* I2C_BOARDINFO */ 344 344 345 - /* 345 + /** 346 + * struct i2c_algorithm - represent I2C transfer method 347 + * @master_xfer: Issue a set of i2c transactions to the given I2C adapter 348 + * defined by the msgs array, with num messages available to transfer via 349 + * the adapter specified by adap. 350 + * @smbus_xfer: Issue smbus transactions to the given I2C adapter. If this 351 + * is not present, then the bus layer will try and convert the SMBus calls 352 + * into I2C transfers instead. 353 + * @functionality: Return the flags that this algorithm/adapter pair supports 354 + * from the I2C_FUNC_* flags. 355 + * 346 356 * The following structs are for those who like to implement new bus drivers: 347 357 * i2c_algorithm is the interface to a class of hardware solutions which can 348 358 * be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584 349 359 * to name two of the most common. 360 + * 361 + * The return codes from the @master_xfer field should indicate the type of 362 + * error code that occured during the transfer, as documented in the kernel 363 + * Documentation file Documentation/i2c/fault-codes. 350 364 */ 351 365 struct i2c_algorithm { 352 366 /* If an adapter algorithm can't do I2C-level access, set master_xfer