summaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'for-next/vybrid'Sascha Hauer2017-01-121-62/+160
|\
| * i.MX: i2c: Add Vybrid supportAndrey Smirnov2017-01-111-28/+122
| | | | | | | | | | Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * i.MX: i2c: Use read/write adapter functionsAndrey Smirnov2017-01-111-42/+46
| | | | | | | | | | | | | | | | | | Use read/write adapter functions instead of directly calling to readb/writeb. This is needed to prepare driver code to support Vybrid SoC's variant of this block. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: gpio: use dynamic bus number unconditionallyUwe Kleine-König2016-11-171-1/+1
| | | | | | | | | | | | | | | | While being a bit more random this helps dt setups where the id of a platform device cannot easily be fixed anyhow. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: gpio: fix handling of return code of of_get_gpioUwe Kleine-König2016-11-171-7/+9
|/ | | | | | | | | | | | Instead of using gpio_is_valid just check the return code of of_get_gpio for being < 0. This fixes -EPROBE_DEFER handling as now this error code is handed to the caller instead of -ENODEV. If the gpio returned by of_get_gpio is an invalid number this isn't noticed by of_i2c_gpio_probe, but then gpio_request later fails which is good enough. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* driver: replace dev_request_mem_region with dev_request_mem_resourceSascha Hauer2016-03-077-19/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dev_request_mem_region doesn't work properly one some SoCs on which PTR_ERR() values clash with valid return values from dev_request_mem_region. Replace them with dev_request_mem_resource where possible. This patch has been generated with the following semantic patch: // <smpl> @@ expression d; expression n; expression io; identifier func; @@ func(...) { +struct resource *iores; <+... -io = dev_request_mem_region(d, n); -if (IS_ERR(io)) { +iores = dev_request_mem_resource(d, n); +if (IS_ERR(iores)) { ... - return PTR_ERR(io); -} + return PTR_ERR(iores); +} +io = IOMEM(iores->start); ...+> } @@ expression d; expression n; expression io; identifier func; @@ func(...) { +struct resource *iores; <+... -io = dev_request_mem_region(d, n); -if (IS_ERR(io)) { +iores = dev_request_mem_resource(d, n); +if (IS_ERR(iores)) - return PTR_ERR(io); -} + return PTR_ERR(iores); +io = IOMEM(iores->start); ...+> } @@ expression d; expression n; expression io; identifier func; @@ func(...) { +struct resource *iores; <+... -io = dev_request_mem_region(d, n); -if (IS_ERR(io)) { - ret = PTR_ERR(io); +iores = dev_request_mem_resource(d, n); +if (IS_ERR(iores)) { + ret = PTR_ERR(iores); ... } +io = IOMEM(iores->start); ...+> } @@ expression d; expression n; expression io; identifier func; @@ func(...) { +struct resource *iores; <+... -io = dev_request_mem_region(d, n); +iores = dev_request_mem_resource(d, n); +if (IS_ERR(iores)) + return PTR_ERR(iores); +io = IOMEM(iores->start); ...+> } @@ identifier func; @@ func(...) { <+... struct resource *iores; -struct resource *iores; ...+> } // </smpl> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* driver: Fix return check of dev_request_mem_regionSascha Hauer2016-02-232-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | dev_request_mem_region returns an ERR_PTR, fix places which check for a NULL pointer instead. This patch has been generated with this semantic patch, written by me and improved by Andrey Smirnov: // <smpl> @@ expression e; expression e1; @@ e = dev_request_mem_region(...); ... -if (!e) - return e1; +if (IS_ERR(e)) + return PTR_ERR(e); @ rule1 @ expression e; @@ e = dev_request_mem_region(...); @@ expression rule1.e; identifier ret, label; constant errno; @@ if (!e) { ... ( - ret = -errno; + ret = PTR_ERR(e); ... goto label; | - return -errno; + return PTR_ERR(e); ) } @depends on rule1@ expression rule1.e; @@ - if (e == NULL) + if (IS_ERR(e)) { ... } // </smpl> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
* i2c-imx: Use xzalloc instead of kzallocAndrey Smirnov2015-11-191-1/+1
| | | | | | | | | Driver's private data structure is allocated with kzalloc without any code to check for kzalloc's possible failure. Fix that by replaceing kzalloc with xzalloc. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c: Add support for DesignWare controllersAndrey Smirnov2015-11-193-0/+581
| | | | | | | | | | | Add a driver for DesignWare I2C controller IP block found on several SoCs including Altera SoC products Tested using Terrasic SoCKit board and GPIO expander board with I2C EEPROM on it Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c: fsl: Add bus recovery supportSascha Hauer2015-09-171-5/+62
| | | | | | | | Useful for recovering busses. This needs additional device tree properties describing the sda/scl gpios. The corresponding linux patch with the binding description is currently under review. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/misc'Sascha Hauer2015-09-011-4/+8
|\
| * i2c-imx: Fix memory leak in i2c_fsl_probe()Andrey Smirnov2015-08-191-4/+8
| | | | | | | | | | | | | | | | | | All points of failure in the code of i2c_fsl_probe() happen after the allocation of i2c_fsl, so all of them have to perform necessary cleanup setups in case of failure. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: gpio: add bus recovery supportJan Luebbe2015-08-201-0/+10
| | | | | | | | | | Signed-off-by: Jan Luebbe <jluebbe@debian.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c-omap: add bus recovery supportJan Luebbe2015-08-201-3/+81
| | | | | | | | | | | | | | | | This is based on commit 9dcb0e7b999db6c420c70fd32497a979a044fcdf from the kernel with some additional fixes. Signed-off-by: Jan Luebbe <jluebbe@debian.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c-omap: clear ARDY twiceJan Luebbe2015-08-201-0/+4
|/ | | | | | | | This implements the fix from the kernel commit 4cdbf7d346e7461c3b93a26707c852e2c9db3753. Signed-off-by: Jan Luebbe <jluebbe@debian.org> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* PPC/MPC5200: re-use the IMX I2C master driver for MPC5200Juergen Borleis2015-08-031-2/+7
| | | | | | | | This IP core is shared between many FSL SoCs. The MPC5200 provides this core as well. Signed-off-by: Juergen Borleis <jbe@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c: omap: fix i2c bus number outputRobert Schwebel2015-06-031-3/+3
| | | | | | | | | | | | | | | | When probing from devicetree, the output for several i2c host controllers prints out a bus number of -1: i2c-omap 44e0b000.i2c: bus -1 rev0.11 at 400 kHz i2c-omap 4802a000.i2c: bus -1 rev0.11 at 400 kHz i2c-omap 4819c000.i2c: bus -1 rev0.11 at 400 kHz The call to i2c_add_numbered_adapter() in probe finds out the next free bus number, so we move the output to a location where the number is already determined. Signed-off-by: Robert Schwebel <r.schwebel@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/of-device-id'Sascha Hauer2015-05-064-18/+18
|\
| * of: use 'const void *' for struct of_device_id.dataAntony Pavlov2015-04-304-18/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since 2011 barebox' of_device_id struct uses unsigned long type for data field: struct of_device_id { char *compatible; unsigned long data; }; Almost always struct of_device_id.data field are used as pointer and need 'unsigned long' casting. E.g. see 'git grep -A 4 of_device_id drivers/' output: drivers/ata/sata-imx.c:static __maybe_unused struct of_device_id imx_sata_dt_ids[] = { drivers/ata/sata-imx.c- { drivers/ata/sata-imx.c- .compatible = "fsl,imx6q-ahci", drivers/ata/sata-imx.c- .data = (unsigned long)&data_imx6, drivers/ata/sata-imx.c- }, { Here is of_device_id struct in linux kernel v4.0: struct of_device_id { char name[32]; char type[32]; char compatible[128]; const void *data; }; Changing of_device_id.data type to 'const void *data' will increase barebox' linux kernel compatibility and decrease number of 'unsigned long' casts. Part of the patch was done using the 'coccinelle' tool with the following semantic patch: @rule1@ identifier dev; identifier type; identifier func; @@ func(...) { <... - dev_get_drvdata(dev, (unsigned long *)&type) + dev_get_drvdata(dev, (const void **)&type) ...> } @rule2@ identifier dev; identifier type; identifier func; identifier data; @@ func(...) { <... - dev_get_drvdata(dev, (unsigned long *)&type->data) + dev_get_drvdata(dev, (const void **)&type->data) ...> } Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: mv64xxx: continue probe when clock-frequency is missingAntony Pavlov2015-04-171-2/+1
|/ | | | | | | | | | | | | | | | | | | | Based on this linux kernel commit: commit 0ce4bc1dbdd911ae1763e2d4ff36bd1b214a59f7 Author: Chen-Yu Tsai <wens@csie.org> Date: Mon Sep 1 22:28:13 2014 +0800 i2c: mv64xxx: continue probe when clock-frequency is missing The "clock-frequency" DT property is listed as optional, However, the current code stores the return value of of_property_read_u32 in the return code of mv64xxx_of_config, but then forgets to clear it after setting the default value of "clock-frequency". It is then passed out to the main probe function, resulting in a probe failure when "clock-frequency" is missing. Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c: omap: fix fclk_rate for ti,omap4-i2cJan Weitzel2015-01-061-6/+5
| | | | | | | | The compatible "ti,omap4-i2c" don't help to get fclk_rate. So set it acording to cpu compatible: "ti,am33xx" and "ti,omap4" Signed-off-by: Jan Weitzel <j.weitzel@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/tegra'Sascha Hauer2014-11-051-1/+1
|\
| * i2c: tegra: move to fs initcallLucas Stach2014-10-081-1/+1
| | | | | | | | | | | | | | | | i2c is needed to enable voltage rails that are later needed by other drivers. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: at91: fix invalid length checkLucas Stach2014-10-211-2/+2
|/ | | | | | Signed-off-by: Lucas Stach <dev@lynxeye.de> Acked-by: Bo Shen <voice.shen@atmel.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/resource-err-ptr'Sascha Hauer2014-10-023-2/+8
|\
| * resource: Let dev_request_mem_region return an error pointerSascha Hauer2014-09-163-2/+8
| | | | | | | | | | | | For all users fix or add the error check. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/at91'Sascha Hauer2014-10-021-27/+71
|\ \
| * | I2C: at91: fix the method for interruptBo Shen2014-09-251-15/+23
| | | | | | | | | | | | | | | | | | | | | | | | As the i2c-at91 driver won't work in the interrupt mode, so need to poll the interrupts. Signed-off-by: Bo Shen <voice.shen@atmel.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | i2c: at91: add support of device treeRaphaël Poggi2014-09-251-7/+34
| | | | | | | | | | | | | | | Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | i2c: at91: add at91sam9x5 configRaphaël Poggi2014-09-251-5/+14
| | | | | | | | | | | | | | | Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | i2c: at91: fix coding style issueRaphaël Poggi2014-09-251-2/+2
| |/ | | | | | | | | Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* / i2c: omap: fix dts property "clock-frequency" usageTeresa Gámez2014-10-021-10/+10
|/ | | | | | | | | Looking at the linux kernel the clock-frequency property of the device tree is used to set the bus speed and not the fclk_rate. Adapted this to be compliant with linux kernel. Signed-off-by: Teresa Gámez <t.gamez@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/misc'Sascha Hauer2014-08-071-2/+2
|\ | | | | | | | | Conflicts: lib/Makefile
| * i2c: omap: fix typo in dt_idsRaphael Poggi2014-07-171-2/+2
| | | | | | | | | | | | | | Fix a typo in dt_ids name. Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: busses/Makefile: fix indentationAntony Pavlov2014-07-311-2/+2
| | | | | | | | | | Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: add Marvell 64xxx driverAntony Pavlov2014-07-313-0/+656
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This driver is also used for Allwinner SoCs I2C controllers. Ported from linux-3.15. The most notable barebox driver version changes: * drop platform device stuff; * drop "allwinner,sun*" stuff; * drop message offloading support; * add reg-io-width devicetree parameter to use driver with byte-oriented controller versions. Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Acked-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> On Armada XP: Tested-by: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: add Atmel AT91 driverRaphaël Poggi2014-07-253-0/+442
|/ | | | | Signed-off-by: Raphaël Poggi <poggi.raph@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/mips'Sascha Hauer2014-07-041-3/+52
|\
| * i2c: i2c_gpio: add devicetree supportAntony Pavlov2014-06-251-3/+52
| | | | | | | | | | Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | i2c: versatile: add devicetree supportAntony Pavlov2014-06-231-0/+7
|/ | | | | Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c: add Tegra driverLucas Stach2014-05-153-0/+704
| | | | | Signed-off-by: Lucas Stach <dev@lynxeye.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c: i.MX: move to earlier initcallSascha Hauer2014-03-281-1/+1
| | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/omap-drivers'Sascha Hauer2013-12-061-1/+27
|\
| * i2c: omap: Add devicetree supportSascha Hauer2013-11-221-1/+27
| | | | | | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | treewide: Add missing includesSascha Hauer2013-11-081-0/+1
|/ | | | | | | | A lot of files rely on include/driver.h including include/of.h (and this including include/errno.h. include the files explicitly so we can eventually get rid of including of.h from driver.h Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c-omap: fix reported revisonJan Weitzel2013-10-141-1/+1
| | | | | | Report correct major and minor revision Signed-off-by: Jan Weitzel <j.weitzel@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c: omap: remove unncessary printfSascha Hauer2013-09-271-1/+0
| | | | | | | A printf in the driver should be dev_* and contain useful information. Both is not the case, remove it. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c-omap: Update driverJan Weitzel2013-09-271-187/+448
| | | | | | | | | | | | | The driver didn't work well with at24 driver. NACKS are lost. Errors are lost in isr due to the local variable err. Also we didn't wait for bus free in omap_i2c_xfer_msg. Fix issues and get other improvements from linux kernel Tested on OMAP4 and AM335x Signed-off-by: Jan Weitzel <j.weitzel@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c-omap: fix am33xx and omap3 fclk_rateJan Weitzel2013-08-311-2/+2
| | | | | | | | commit f64ed12b accidentally swap fclk_rate from am33xx and omap3. Revert this change. Signed-off-by: Jan Weitzel <j.weitzel@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* i2c-omap: Remove cpu_is functions completelyTeresa Gámez2013-06-231-22/+67
| | | | | | | | This patch removes the call of the cpu_is_* functions completely and uses id_tables instead. Signed-off-by: Teresa Gámez <t.gamez@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>