| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
p-android-omap-3.0-dev-espresso
Conflicts:
Makefile
arch/arm/include/asm/hardware/cache-l2x0.h
arch/arm/kernel/smp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/opp.c
arch/ia64/include/asm/futex.h
drivers/bluetooth/ath3k.c
drivers/bluetooth/btusb.c
drivers/firmware/efivars.c
drivers/gpu/drm/i915/intel_lvds.c
drivers/gpu/drm/radeon/radeon_atombios.c
drivers/gpu/drm/radeon/radeon_irq_kms.c
drivers/hwmon/fam15h_power.c
drivers/mfd/twl6030-irq.c
drivers/mmc/core/sdio.c
drivers/net/tun.c
drivers/net/usb/ipheth.c
drivers/net/usb/usbnet.c
drivers/usb/core/hub.c
drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci.h
drivers/usb/musb/omap2430.c
drivers/usb/serial/ftdi_sio.c
drivers/usb/serial/ftdi_sio_ids.h
drivers/usb/serial/option.c
drivers/usb/serial/qcserial.c
drivers/usb/serial/ti_usb_3410_5052.c
drivers/usb/serial/ti_usb_3410_5052.h
drivers/video/omap2/dss/hdmi.c
fs/splice.c
include/asm-generic/pgtable.h
include/net/sch_generic.h
kernel/cgroup.c
kernel/futex.c
kernel/time/timekeeping.c
net/ipv4/route.c
net/ipv4/syncookies.c
net/ipv4/tcp_ipv4.c
net/wireless/util.c
security/commoncap.c
sound/soc/soc-dapm.c
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit c39e8e4354ce4daf23336de5daa28a3b01f00aa6 upstream.
The TX_FIFO register is 10 bits wide. The lower 8 bits are the data to be
written, while the upper two bits are flags to indicate stop/start.
The driver apparently attempted to optimize write access, by only writing a
byte in those cases where the stop/start bits are zero. However, we have
seen cases where the lower byte is duplicated onto the upper byte by the
hardware, which causes inadvertent stop/starts.
This patch changes the write access to the transmit FIFO to always be 16 bits
wide.
Signed off by: Steven A. Falco <sfalco@harris.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit 9868a060ccf769c08ec378a9829137e272e9a92c upstream.
The freed IRQ is not necessary the one requested in probe.
Even if it was, with two or more i2c-controllers it will fails anyway.
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit 6c557cfee08751d22aed34840f389b846f0f4508 upstream.
In the driver's suspend function, clk_enable() was used instead of
clk_disable(). This is corrected with this patch.
Signed-off-by: Roland Stigge <stigge@antcom.de>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
[wsa: reworded commit header slightly]
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit 8ee161ce5e0cfc689eb677f227a6248191165fac upstream.
When the system is under heavy load, there can be a significant delay
between the getscl() and time_after() calls inside sclhi(). That delay
may cause the time_after() check to trigger after SCL has gone high,
causing sclhi() to return -ETIMEDOUT.
To fix the problem, double check that SCL is still low after the
timeout has been reached, before deciding to return -ETIMEDOUT.
Signed-off-by: Ville Syrjala <syrjala@sci.fi>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit 844990daa2e69a4258049ba9c2bae1180657dac3 upstream.
The hardware generates an interrupt for every completed command in the
queue while the code assumed that it will only generate one interrupt
when the queue is empty. So, explicitly check if the queue is really
empty. This patch fixed problems which occurred due to high traffic on
the bus. While we are here, move the completion-initialization after the
parameter error checking.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: Marek Vasut <marek.vasut@gmail.com>
Cc: Lothar Waßmann <LW@KARO-electronics.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix an issue in the omap i2c host controller driver where it was not properly
clearing out an error condition in the unit after a NAK'ed transaction causing
the subsequent transaction to time out.
Change-Id: I5cdc8e740acdbc8116dca4d13f1a2cee37f75582
Signed-off-by: Mike J. Chen <mjchen@google.com>
Signed-off-by: Ruslan Bilovol <ruslan.bilovol@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Once i2c driver shutdown has been called, ignore any more
transfer requests. This patch adds the missing callback.
Leave the PMIC i2c (i2c-1) alive, since power_off case needs it
well after shutdown handlers have been called for power_off case.
Change-Id: I4f4553327e5c024f78acb8501864dd9beb1883c3
Signed-off-by: Semen Protsenko <semen.protsenko@ti.com>
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
becomes valid
Bus busy status bit is not effective when functional part of the I2C controller
is not valid, and bus busy detection in omap_i2c_wait_for_bb() will be skipped
sometimes. So we should wait till functional part of the I2C controller
completely becomes valid, after setting the I2Ci.I2C_CON[15] I2C_EN bit to 1.
For doing that we have to wait till RDONE bit of SYSS register reach "1".
For details see TRM, 23.1.4.3 HS I2C Software Reset.
Change-Id: I989855d6cb2b1aa0098e11245dacb77583fe6647
Signed-off-by: Semen Protsenko <semen.protsenko@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Interrupts that occur during omap_i2c_bus_clear() can cause to
erroneous behaviour in interrupt handler, i.e. multiple printing of
"RRDY IRQ while no data requested" message. So disable interrupts
in omap_i2c_bus_clear() function since they can't be handled correctly.
Change-Id: If4525c93284766d0a2705d7ca4d1f962e3cc4b15
Signed-off-by: Semen Protsenko <semen.protsenko@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The I2C clocks change from 96MHz to 48MHz in dpll cascading
mode.The I2C driver is registerd with DPLL cascading and
the change in clocks is handled.The device speed of > 1Mbps
is not supported in DPLL cascading mode.
[Andrii Tseglytskyi <andrii.tseglytskyi@ti.com>:
Ported and adapted to p-android-omap-3.0]
Change-Id: Ib37648012476a8246cc9e437f707b6e3969e13a3
Signed-off-by: Madhusudhan Chikkature <madhu.cr@ti.com>
Signed-off-by: Andrii Tseglytskyi <andrii.tseglytskyi@ti.com>
|
| |
| |
| |
| |
| |
| |
| | |
Kernel version updated to 3.0.31
Change-Id: Ifbd7150801f3beeec9cbaa566f249d8019ef9348
Signed-off-by: Roman Shaposhnikov <x0166637@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On OMAP4 OMAP_I2C_STAT_NACK is causing a timeout on the next access.
The isr cleans all flags in OMAP_I2C_CON_REG by setting OMAP_I2C_CON_STP
OMAP_I2C_CON_STP is also set in omap_i2c_xfer_msg on the last message.
According to the TI TSR the sequence for OMAP_I2C_STAT_NACK and
OMAP_I2C_STAT_AL are nearly the same.
Removing the OMAP_I2C_CON_STP part in the isr fix the problem.
Tested on OMAP4430 and OMAP3530 (here NACK was not a problem)
Fixes also booting on 2430sdp.
[Picked from http://patches.linaro.org/1899/]
Change-Id: I9bdeba8853ced27659770ad9390bd1b4be573155
Signed-off-by: Jan Weitzel <j.weitzel@phytec.de>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
|
|\ \
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
arch/arm/mach-omap2/smartreflex.c
drivers/i2c/busses/i2c-omap.c
drivers/usb/host/ehci.h
drivers/usb/musb/musb_core.c
fs/proc/base.c
Signed-off-by: Dan Murphy <dmurphy@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit ff35e8b18984ad2a82cbd259fc07f0be4b34b1aa upstream.
This patch modified the setting value of
I2C Bus Transfer Rate Setting Counter regisrer.
Signed-off-by: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit 2727b1753934e154931d6b3bdf20c9b2398457a2 upstream.
Correct OMAP_I2C_SYSC_REG offset in omap4 register map.
Offset 0x20 is reserved and OMAP_I2C_SYSC_REG has 0x10 as offset.
Signed-off-by: Alexander Aring <a.aring@phytec.de>
[khilman@ti.com: minor changelog edits]
Signed-off-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit 7c1f59c9d5caf3a84f35549b5d58f3c055a68da5 upstream.
When adding checks for ACPI resource conflicts to many bus drivers,
not enough attention was paid to the error paths, and for several
drivers this causes 0 to be returned on error in some cases. Fix this
by properly returning a non-zero value on every error.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
commit cc6bcf7d2ec2234e7b41770185e4dc826390185e upstream.
The wrong bits were put on the wire, fix that.
This fixes kernel bug #42562.
Signed-off-by: Sheng-Hui J. Chu <jeffchu@broadcom.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
| |
| |
| |
| |
| |
| |
| | |
Enable the interrupts only when I2C hw spinlock is acquired
Change-Id: I610236a1c1150f5746546c7bd3a0fad6eff2e706
Signed-off-by: Huzefa Kankroliwala <huzefank@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In case a peripheral is driving SDA bus low (ie. a start condition), provide
a constant clock output using the test mode of the OMAP I2C controller to
try and clear the bus. Soft reset I2C controller after attempting the bus clear
to ensure that controller is in a good state.
Based upon Vikram Pandita's patch from TI Android 3.0 kernel and modified for
mainline by Jon Hunter. A couple differences from the original patch ...
1. Add a new function for bus clear
2. Ensure that the CON.I2C_EN bit is set when using the SYSTEST feature to
output a permanent clock. This bit needs to be set and tpyically it would
be set by the unidle function but this is not the case for all OMAP
generations.
3. Program the SYSTEST setting only the bits we care about. However, restore
SYSTEST registers to there original state as some OMAP generations do not
implement perform a soft-reset.
4. Clear the CON register after performing the bus clear, so when we call the
init function the controller is disabled and the init function will
re-enable later.
Original patch can be found here:
http://git.omapzoom.org/?p=kernel/omap.git;a=commit;h=a2ab04192ba25e60f95ba1ff3af5601a2d7b5bd1
Change-Id: I299357568aeafa4bff4caa5dedb294adbd80df36
Signed-off-by: Jon Hunter <jon-hunter@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
By definition, wait_for_completion_timeout() returns an unsigned value and
therefore, it is not necessary to check if the return value is less than zero
as this is not possible.
Move the call to wait_for_completion_timeout() onto a single line as it is less
than 80 characters.
Change-Id: I906a112c1ef339aa0b7ad26896669fa413448fa8
Signed-off-by: Jon Hunter <jon-hunter@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The SYSC register should not accessed in the driver removing the
define from the driver.
Also clean up the syscstate from the omap_i2c_dev struct.
Change-Id: I95a7668de47a26523b51a9d13aea83b7aa7def03
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Signed-off-by: Jon Hunter <jon-hunter@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
- The reset in the driver at init is not needed anymore as the
hwmod framework takes care of reseting it.
- Reset is removed from omap_i2c_init, which was called
not only during probe, but also after time out and error handling.
device_reset were added in those places to effect the reset.
- Earlier the hwmod SYSC settings were over-written in the driver.
Removing the same and letting the hwmod take care of the settings.
- Clean up the SYSS_RESETDONE_MASK macro as it is no longer needed.
- Clean up the SYSCONFIG SYSC bit defination macros.
- Fix the typos in wakeup.
Change-Id: I8f4ccdf783de6fe3d883e4aa5290473ea0117945
Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Signed-off-by: Jon Hunter <jon-hunter@ti.com>
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* android-omap-3.0: (38 commits)
OMAP:DSS:DSSCOMP: Avoid freeing a composition twice on set failure
gpu: pvr: Update to DDK 1.8@550175
gpu: pvr: Update to DDK 1.8@334506
OMAP4: McASP: Move device creation to mach-omap2
omap: iovmm: move print to before free in sgtable_free
OMAP4: temp_sensor: update throttling thresholds
OMAP: clock: optimize dpll locking logic
OMAP4: PM: Enable Auto VREF LPDDR I/O supply
ion: fix build
ASoC: omap-mcasp: Simplify device struct retrieval
ASoC: omap-mcasp: Remove wrappers for start/stop
ASoC: omap-mcasp: Remove redundant format check
ASoC: omap-mcasp: Configure the channel status register
ASoC: omap-mcasp: Relax allowed sample rates check
usb: musb: omap2430: use proper signed variables
net: wireless: bcm4329: Skip dhd_bus_stop() if bus is already down
net: wireless: bcmdhd: Skip dhd_bus_stop() if bus is already down
net: wireless: bcmdhd: Improve suspend/resume processing
net: wireless: bcmdhd: Check if FW is Ok for internal FW call
ion: export functions to enable usage by kernel modules
...
Change-Id: I68419e93ae7b91ba33ddba06e853845caebb6905
Signed-off-by: Dan Murphy <dmurphy@ti.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When cpu_is_omap44xx, dev->regs is set to point to
omap4_reg_map[], which contains entries for
OMAP_I2C_IRQENABLE_SET and OMAP_I2C_IRQENABLE_CLR. These entries
are not present in the other reg_map. However, the code that
uses these registers does not ensure that cpu_is_omap44xx before
using them. This can cause register 0x00 (the revision register)
to be accessed instead and the proper register to not be
accessed. This problem was observed on the OMAP3630 and caused
long hangs.
The fix is to ensure that cpu_is_omap44xx before accessing the
registers.
Thanks to vikram pandita for pointing me in the right direction.
Change-Id: Ic3accee9ce251724f13056bdb01f4db3308cd099
Signed-off-by: Scott Anderson <saa@google.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This patch is related to this commit:
7dd92cb9a8b9c6bb0f4b03afd26ea50ec90cfb73
On Blaze and Blaze Tablet, the i2c-2 bus is shared by A9 and Ducati.
We want A9 to be able to access the i2c-2 bus when it needs it.
This patch will prevent the i2c-2 irq from being cleared on A9 when
Ducati requests the i2c-2 resource, since hwspinlock is being used to
arbitrate the use of the i2c-2 bus.
Change-Id: Iddb667f77e17d9799a9caa62d9f2a0a0043f1768
Signed-off-by: Christina Warren <cawarren@ti.com>
|
|\ \ \
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* android-omap-3.0:
OMAP4: PM: remove suspend handler for SR
Revert "OMAP3+: PM: SR: add suspend/resume handlers"
OMAP4+: EMIF: make interrupts wakeup capable
OMAP4460: PM: Allow SRAM LDO to attain retention during low power mode.
OMAP4: PM: syscontrol: workaround LPDDR CK IO pull disable
OMAP4: PM: syscontrol: Disable LPDDR VREF manual control
i2c: omap: recover from Bus Busy condition
OMAP: mcspi: Extend device config structure with swap_datalines param
mtd: m25p80: add Winbond w25q80 chip support
omap: rpmsg_resmgr: reserve i2c resources to a remoteproc
i2c: omap: do not call i2c_detect_ext_master blindly during probe
Change-Id: I3e9462cf99f893db77ed70636ee514e789ab2a7f
Signed-off-by: Dan Murphy <dmurphy@ti.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
In case a peripheral is holding the DATA bus low, provide a 400Khz
constant clock output using the TEST register.
Also soft reset the I2C controller so that there is no stale state
left in the HW state machine.
A WARN_ON() will be generated when a BB timeout happens.
Change-Id: I23b824f6ae3435ea2e4abf0cbc047584b1e9b449
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The decision to call i2c_detect_ext_master() must be made dynamically. This
way we are locking out A9 I2C clients without any external requests.
Signed-off-by: Iliyan Malchev <malchev@google.com>
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Adding support for hwspinlock in I2C driver
in Blaze and Blaze_Tablet2.
Also adding an api omap_i2c_get_hwspinlockid to be
used by remote proc to populate the resource table.
Change-Id: I5f554ead10806c90442359365dcb8ebff51bf2bf
Signed-off-by: Christina Warren <cawarren@ti.com>
|
| |
| |
| |
| |
| |
| | |
Causes sensor and audio delays.
This reverts commit f0526a82e8f65e8a9acdd6ad5eaea738b569a3a5.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Do not report XUDF or ROVR as an error to the driver making i2c transfer.
Its an indication by OMAP hw that these conditions are hitting,
but the real transfer should still go through
Change-Id: Id721d0037a850d34e15dd070ec4e53dacc90a8c4
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For indicating ready-for-next-transfer, there is ARDY interrupt.
There is no need to have this interrupt enabled for indication of current
transfer as complete.
So resort to a combination of Interrupt and Polling mechanism.
Interrupt mechanism for: RRDY/RDR and XRDY/XDR
Polling mechanism for: ARDY
Before a message is to be sent, check for ARDY status ready with a timeout protection.
For one message the flow is:
Fifo operation; one interrupt; Done
Thus avoiding ARDY wait/interrupt altogether.
For two/more message transfer the flow is:
Fifo operation;one interrupt; wait_ardy(); fifo operation;Done
Thus avoiding 2 ARDY interrupts, instead only one ardy wait
Change-Id: Icf26731db373073bc300da2804979b5d509ac448
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
dev->iestate variable has the correct info on the interrupts enabled
at any time. So avoid un-necessary I2C_IE_REG read.
Change-Id: I75e315ef51b3f30bb41680cda7f4921218458fc1
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For omap4xxx do not use the legacy register I2C_IE,
instead use the IRQENABLE_SET/CLR variant for future compatibility
Also at probe, there is no need to enable interrupts.
Change-Id: I103ce3c28a8a6d47a1a166cde440e73e772b2af2
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| |
| |
| |
| |
| |
| |
| | |
IRQENABLE_CLR register should be written all 1's to clear interrupt enable
Change-Id: I04298218d381726892646112c9130ffed982ad7f
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| |
| |
| |
| |
| |
| |
| | |
No new functionality, just add the missing register
Change-Id: I535e8a52f4bd12c9cea04db8f860ad82d85eedc9
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix this compile break when enable debug or compile with omap2plus_defconfig:
drivers/i2c/i2c-core.c: In function 'i2c_detect_ext_master':
drivers/i2c/i2c-core.c:1155: error: initializer element is not constant
drivers/i2c/i2c-core.c:1155: error: (near initialization for 'descriptor.format')
drivers/i2c/i2c-core.c:1155: warning: passing argument 2 of 'dev_printk' from incompatible pointer type
include/linux/device.h:788: note: expected 'const struct device *' but argument is of type 'char *'
make[2]: *** [drivers/i2c/i2c-core.o] Error 1
Change-Id: I9648c3d4a5f420cf71544b567ec58f49323abe7e
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Note: Perform some special handling for externally controlled I2C devices.
For now we only disable spurious IRQs.
Change-Id: I50731ca50d675b7a997b1c0f87797eb8a90bbc8c
Signed-off-by: Gilles-Arnaud Bleu-Laine <gilles@ti.com>
|
|\ \
| |/ |
|
| |\
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* 'for-30-rc5/all-i2c' of git://git.fluff.org/bjdooks/linux:
i2c-bfin-twi: abort transfer is MEM bit is reset unexpectedly
i2c-s3c2410: Remove useless break code
i2c-s3c2410: Fix typo 'i2s' -> 'i2c'
i2c: tegra: Assign unused slave address
|
| | |\ \
| | | | |
| | | | |
| | | | | |
'for-30-rc4/i2c-s3c' and 'for-30-rc4/i2c-tegra' into for-30-rc5/all-i2c
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
On Tegra, we should always use the "new" I2C slave controller, to avoid
issues with the old controller. This was implemented in commit 65a1a0a
"i2c: tegra: Enable new slave mode."
There is currently no driver for the Tegra I2C slave controller upstream.
Additionally, the controller cannot be completely disabled. Instead, we
need to:
a) Set I2C_SL_CNFG_NACK to make the controller automatically NACK any
incoming transactions.
b) The controller's definition of NACK isn't identical to the I2C
protocol's definition. Specifically, it will perform a standard NACK, but
*also* continue to hold the clock line low in expectation of receiving
more data. This can hang the bus, or at least cause transaction timeouts,
if something starts a transaction that matches the controller's slave
address. Since the default address is 0x00, the general call address,
this does occur in practice.
To avoid this, we explicitly program a slave address that is reserved for
future expansion. For current boards, this guarantees the address will
never be used. If a future board ever needs to use this address, we can
add platform data to determine a board-specific safe address. 0xfc is
picked by this patch.
This patch is based on a change previously posted by: Wei Ni <wni@nvidia.com>
http://www.spinics.net/lists/linux-i2c/msg05437.html
In turned based on internal changes by: Bharat Nihalani <bnihalani@nvidia.com>
A semantically equivalent change has been contained in the various
ChromeOS kernels for a while.
I tested this change on top of 3.0-rc2 on Harmony, and interacted with
the WM8903 I2C-based audio codec.
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
|
| | | |/
| | | |
| | | |
| | | |
| | | |
| | | | |
Signed-off-by: Huisung Kang <hs1218.kang@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Sometimes, the first I2C transmit interrupt is not serviced in time (like
when higher priority interrupts take too long). Since the RESTART bit is
not set before the next I2C clock, when the TWI handler is finally called,
the I2C session is aborted (MEM bit is reset) and both SMITSERV and MCOMP
int status bits are set.
So when this happens, abort the transfer.
Reported-by: Isabelle Leonardi <i.leonardi@detracom.fr>
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
|
|\ \ \
| |/ / |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
pca954x power-on default is channel 0 connected. If multiple pca954x
muxes are connected to the same physical I2C bus, the parent bus will
see channel 0 devices behind both muxes by default. This is bad.
Scenario:
-- pca954x @ 0x70 -- ch 0 (I2C-bus-101) -- EEPROM @ 0x50
|
I2C-bus-1 ---
|
-- pca954x @ 0x71 -- ch 0 (I2C-bus-111) -- EEPROM @ 0x50
1. Load I2C bus driver: creates I2C-bus-1
2. Load pca954x driver: creates virtual I2C-bus-101 and I2C-bus-111
3. Load eeprom driver
4. Try to read EEPROM @ 0x50 on I2C-bus-101. The transaction will also bleed
onto I2C-bus-111 because pca954x @ 0x71 channel 0 is connected by default.
Fix: Initialize pca954x to disconnected state in pca954x_probe()
Signed-off-by: Petri Gynther <pgynther@google.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: stable@kernel.org
|
| |/
| |
| |
| |
| |
| |
| |
| |
| | |
* Print all error and information messages even when debugging is
disabled.
* Don't use adapter device to log messages before it is ready.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: stable@kernel.org
|
| |
| |
| |
| |
| |
| |
| |
| | |
Make sure the i2c registers are reinited on OMAP4 as its needed to
support OFF mode. This was earlier only done on OMAP3 platform.
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
|