Re: [PATCH 0/8] I2C patches for v3.8 merge window
here's another series for OMAP I2C driver. There are a few cleanups and one very nice new feature: we can now report how many bytes we transferred until NACK. Note that the implemementation for OMAP-I2C turned out to be a little more complex then I expected, mainly because of the way I2C_CNT register behaves and because of the very buggy register usage on that driver. I have boot tested all patches on beagle xM (3630) and pandaboard rev A3 (4430), will send boot-logs if anyone wants to see. The series is a bit confusing mixing V1, V2 and V3 patches. Also, there are a few comments unaddressed it seems to me (reading in hot path, barriers). Please make sure these are properly handled and resend as a seperate series (all patches V4). Bonus point if you rebase it to my for-next, which I will push out soon. -- Pengutronix e.K. | Wolfram Sang| Industrial Linux Solutions | http://www.pengutronix.de/ | signature.asc Description: Digital signature
Re: [PATCH 0/8] I2C patches for v3.8 merge window
Hi, On Mon, Oct 22, 2012 at 12:46:50PM +0300, Felipe Balbi wrote: Hi guys, here's another series for OMAP I2C driver. There are a few cleanups and one very nice new feature: we can now report how many bytes we transferred until NACK. Note that the implemementation for OMAP-I2C turned out to be a little more complex then I expected, mainly because of the way I2C_CNT register behaves and because of the very buggy register usage on that driver. I have boot tested all patches on beagle xM (3630) and pandaboard rev A3 (4430), will send boot-logs if anyone wants to see. All patches are available at [1] if anyone wants an easy way to test the patches. [1] git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git i2c-transferred-bytes-on-NACK forgot to mention, with [1] I could veridy suspend to ram with boards mentioned above. [1] http://marc.info/?l=linux-arm-kernelm=135090724817604w=2 Felipe Balbi (7): i2c: omap: no need to access platform_device i2c: omap: reorder exit path of omap_i2c_xfer_msg() i2c: omap: fix error checking i2c: omap: also complete() when stat becomes zero i2c: omap: introduce and use OMAP_I2C_IP_VERSION_3 i2c: omap: wait for transfer completion before sending STP bit i2c: omap: implement handling for 'transferred' bytes Shubhrajyoti D (1): i2c: add 'transferred' field to struct i2c_msg arch/arm/mach-omap2/i2c.c | 3 +- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 +- drivers/i2c/busses/i2c-omap.c | 156 - include/linux/i2c-omap.h | 1 + include/uapi/linux/i2c.h | 1 + 5 files changed, 89 insertions(+), 74 deletions(-) -- 1.8.0.rc0 -- balbi signature.asc Description: Digital signature
Re: [PATCH 0/8] I2C patches for v3.8 merge window
On Mon, Oct 22, 2012 at 7:00 PM, Felipe Balbi ba...@ti.com wrote: Hi, On Mon, Oct 22, 2012 at 12:46:50PM +0300, Felipe Balbi wrote: Hi guys, here's another series for OMAP I2C driver. There are a few cleanups and one very nice new feature: we can now report how many bytes we transferred until NACK. Note that the implemementation for OMAP-I2C turned out to be a little more complex then I expected, mainly because of the way I2C_CNT register behaves and because of the very buggy register usage on that driver. I have boot tested all patches on beagle xM (3630) and pandaboard rev A3 (4430), will send boot-logs if anyone wants to see. tested the below branch on omap4430sdp , panda , omap3430sdp. Doing simple i2ctools . Tested-by : Shubhrajyoti D shubhrajy...@ti.com All patches are available at [1] if anyone wants an easy way to test the patches. [1] git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git i2c-transferred-bytes-on-NACK forgot to mention, with [1] I could veridy suspend to ram with boards mentioned above. [1] http://marc.info/?l=linux-arm-kernelm=135090724817604w=2 Felipe Balbi (7): i2c: omap: no need to access platform_device i2c: omap: reorder exit path of omap_i2c_xfer_msg() i2c: omap: fix error checking i2c: omap: also complete() when stat becomes zero i2c: omap: introduce and use OMAP_I2C_IP_VERSION_3 i2c: omap: wait for transfer completion before sending STP bit i2c: omap: implement handling for 'transferred' bytes Shubhrajyoti D (1): i2c: add 'transferred' field to struct i2c_msg arch/arm/mach-omap2/i2c.c | 3 +- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 +- drivers/i2c/busses/i2c-omap.c | 156 - include/linux/i2c-omap.h | 1 + include/uapi/linux/i2c.h | 1 + 5 files changed, 89 insertions(+), 74 deletions(-) -- 1.8.0.rc0 -- balbi -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 0/8] I2C patches for v3.8 merge window
Hi, On Mon, Oct 22, 2012 at 07:36:31PM +0530, Shubhrajyoti Datta wrote: On Mon, Oct 22, 2012 at 7:00 PM, Felipe Balbi ba...@ti.com wrote: Hi, On Mon, Oct 22, 2012 at 12:46:50PM +0300, Felipe Balbi wrote: Hi guys, here's another series for OMAP I2C driver. There are a few cleanups and one very nice new feature: we can now report how many bytes we transferred until NACK. Note that the implemementation for OMAP-I2C turned out to be a little more complex then I expected, mainly because of the way I2C_CNT register behaves and because of the very buggy register usage on that driver. I have boot tested all patches on beagle xM (3630) and pandaboard rev A3 (4430), will send boot-logs if anyone wants to see. tested the below branch on omap4430sdp , panda , omap3430sdp. Doing simple i2ctools . Tested-by : Shubhrajyoti D shubhrajy...@ti.com can you also check if echo mem /sys/power/state works ? Don't forget to enable UART wakeups with: echo enabled /sys/devices/platform/omap_uart.2/power/wakeup echo enabled /sys/devices/platform/omap_uart.2/tty/ttyO2/power/wakeup before trying to suspend. Another cool test is rtctest (since our RTC is part of TWL). It worked fine on my two platforms. Attached you will find the sourcecode for rtctest. All patches are available at [1] if anyone wants an easy way to test the patches. [1] git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git i2c-transferred-bytes-on-NACK forgot to mention, with [1] I could veridy suspend to ram with boards mentioned above. [1] http://marc.info/?l=linux-arm-kernelm=135090724817604w=2 Felipe Balbi (7): i2c: omap: no need to access platform_device i2c: omap: reorder exit path of omap_i2c_xfer_msg() i2c: omap: fix error checking i2c: omap: also complete() when stat becomes zero i2c: omap: introduce and use OMAP_I2C_IP_VERSION_3 i2c: omap: wait for transfer completion before sending STP bit i2c: omap: implement handling for 'transferred' bytes Shubhrajyoti D (1): i2c: add 'transferred' field to struct i2c_msg arch/arm/mach-omap2/i2c.c | 3 +- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 +- drivers/i2c/busses/i2c-omap.c | 156 - include/linux/i2c-omap.h | 1 + include/uapi/linux/i2c.h | 1 + 5 files changed, 89 insertions(+), 74 deletions(-) -- 1.8.0.rc0 -- balbi -- balbi /* * Real Time Clock Driver Test/Example Program * * Compile with: * gcc -s -Wall -Wstrict-prototypes rtctest.c -o rtctest * * Copyright (C) 1996, Paul Gortmaker. * * Released under the GNU General Public License, version 2, * included herein by reference. * */ #include stdio.h #include linux/rtc.h #include sys/ioctl.h #include sys/time.h #include sys/types.h #include fcntl.h #include unistd.h #include stdlib.h #include errno.h /* * This expects the new RTC class driver framework, working with * clocks that will often not be clones of what the PC-AT had. * Use the command line to specify another RTC if you need one. */ static const char default_rtc[] = /dev/rtc0; int main(int argc, char **argv) { int i, fd, retval, irqcount = 0; unsigned long tmp, data; struct rtc_time rtc_tm; const char *rtc = default_rtc; switch (argc) { case 2: rtc = argv[1]; /* FALLTHROUGH */ case 1: break; default: fprintf(stderr, usage: rtctest [rtcdev]\n); return 1; } fd = open(rtc, O_RDONLY); if (fd == -1) { perror(rtc); exit(errno); } fprintf(stderr, \n\t\t\tRTC Driver Test Example.\n\n); /* Turn on update interrupts (one per second) */ retval = ioctl(fd, RTC_UIE_ON, 0); if (retval == -1) { if (errno == ENOTTY) { fprintf(stderr, \n...Update IRQs not supported.\n); goto test_READ; } perror(RTC_UIE_ON ioctl); exit(errno); } fprintf(stderr, Counting 5 update (1/sec) interrupts from reading %s:, rtc); fflush(stderr); for (i=1; i6; i++) { /* This read will block */ retval = read(fd, data, sizeof(unsigned long)); if (retval == -1) { perror(read); exit(errno); } fprintf(stderr, %d,i); fflush(stderr); irqcount++; } fprintf(stderr, \nAgain, from using select(2) on /dev/rtc:); fflush(stderr); for (i=1; i6; i++) { struct timeval tv = {5, 0}; /* 5 second timeout on select */ fd_set readfds; FD_ZERO(readfds); FD_SET(fd, readfds); /* The select will wait until an RTC interrupt happens. */ retval = select(fd+1, readfds, NULL, NULL, tv); if (retval == -1) { perror(select); exit(errno); } /* This read won't block unlike the select-less case above. */ retval = read(fd, data, sizeof(unsigned long)); if (retval == -1) { perror(read); exit(errno); } fprintf(stderr, %d,i); fflush(stderr); irqcount++; } /* Turn off update interrupts */ retval = ioctl(fd, RTC_UIE_OFF,
Re: [PATCH 0/8] I2C patches for v3.8 merge window
On Monday 22 October 2012 07:36 PM, Felipe Balbi wrote: can you also check if echo mem /sys/power/state works ? Don't forget to enable UART wakeups with: echo enabled /sys/devices/platform/omap_uart.2/power/wakeup echo enabled /sys/devices/platform/omap_uart.2/tty/ttyO2/power/wakeup before trying to suspend. Another cool test is rtctest (since our RTC is part of TWL). It worked fine on my two platforms. Attached you will find the sourcecode for rtctest. On omap3 tested . with off hitting both in suspend and idle path. Also with rtcwake. Thanks -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html