Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964807AbcJ0N5I (ORCPT ); Thu, 27 Oct 2016 09:57:08 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:53387 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934758AbcJ0N45 (ORCPT ); Thu, 27 Oct 2016 09:56:57 -0400 X-AuditID: cbfee61a-f79926d000005981-5a-5811b042cb33 Date: Thu, 27 Oct 2016 16:44:01 +0900 From: Andi Shyti To: Sean Young Cc: Mauro Carvalho Chehab , Rob Herring , Mark Rutland , linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Andi Shyti , David =?iso-8859-15?Q?H=E4rdeman?= Subject: Re: [PATCH v2 5/7] [media] ir-lirc-codec: don't wait any transmitting time for tx only devices Message-id: <20161027074401.wxg5icc6hcpwnfsf@gangnam.samsung> References: <20160901171629.15422-1-andi.shyti@samsung.com> <20160901171629.15422-6-andi.shyti@samsung.com> <20160902084158.GA25342@gofer.mess.org> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-disposition: inline In-reply-to: <20160902084158.GA25342@gofer.mess.org> User-Agent: NeoMutt/20161014 (1.7.1) X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBIsWRmVeSWpSXmKPExsVy+t9jAV2nDYIRBk/ec1ss/vGcyeLikXXs FvOPnGO1uLxrDptFz4atrBZLr19kslj9rMKide8RdouFT7+zOHB6rJm3htHj+pJPzB4n7ncx e2xa1cnmseSNtceW/rvsHp83yQWwR7nZZKQmpqQWKaTmJeenZOal2yqFhrjpWigp5CXmptoq Rej6hgQpKZQl5pQCeUYGaMDBOcA9WEnfLsEt4+DDvUwFvbwVHw+uYmxgnMTVxcjJISFgIvGx cz0rhC0mceHeerYuRi4OIYGljBJHt/5nhXA+MkpMfHmbEaSKRUBV4sCxRjYQm01AU6Lp9g8w W0RATuLbthawBmaBDUwShxZOYQZJCAtkSqxsW8sCYvMK2Eqce7GDCcQWEnjNKLF/RjhEXFDi x+R7YDXMAloS63ceZ4KwpSUe/Z3BDmJzAp3650IP2DJRARWJWZfnsExgFJiFpH0WkvZZSNoX MDKvYpRILUguKE5KzzXMSy3XK07MLS7NS9dLzs/dxAiOxWdSOxgP7nI/xCjAwajEw6vwXiBC iDWxrLgy9xCjBAezkgiv1XrBCCHelMTKqtSi/Pii0pzU4kOMpsAQmcgsJZqcD0wTeSXxhibm JubGBhbmlpYmRkrivI2zn4ULCaQnlqRmp6YWpBbB9DFxcEo1MCrvv/XCepNH3sLz1aJ+n/Xf NzT4vhW0su7QMRNn3T3x4YOV+7kXs817+/zN2p2znb/+Vv3kmb3oKPdUjUk9zqsqK0sDHXN4 K+Z0HPMUeXS/6OGOZv8gFVbpxUsLfGdXR0xMDzilkubB+mTa0aD7jUV+zltT7m4wT+/8e1tb mzevMDFFPP7VYyWW4oxEQy3mouJEAHDFI9fbAgAA X-MTR: 20000000000000000@CPGS Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1630 Lines: 47 Hi Sean, it's been a while :) I was going through your review fixing what needs to be fixed, but... > > @@ -153,7 +153,7 @@ static ssize_t ir_lirc_transmit_ir(struct file *file, const char __user *buf, > > } > > > > ret = dev->tx_ir(dev, txbuf, count); > > - if (ret < 0) > > + if (ret < 0 || dev->driver_type == RC_DRIVER_IR_RAW_TX) > > Just because a driver only does transmit doesn't mean its transmit ABI > should change. > > Now this bit of code is pretty horrible. It ensures that the call to write() > takes at least as long as the length of the transmit IR by sleeping. That's > not much of a guarantee that the IR has been sent. > > Note that in the case of ir-spi, since your spi transfer is sync no sleep > should be introduced here. > > The gap calculation in lirc checks that if the call to write() took _longer_ > than expected wait before sending the next IR code (when either multiple > IR codes or repeats are specified). Introducing the sleep in the kernel > here does not help at all, lirc already ensures that it waits as long as > the IR is long (see schedule_repeat_timer in lirc). > > This change was introduced in 3.10, commit f8e00d5. ... I'm not sure what can be done here. I get your point and I understand that this indeed is a kind of fake sync point and by doing this I How about creating two different functions: - ir_lirc_transmit_ir where we actually do what the function already does - ir_lirc_transmit_no_sync where the function we don't wait because the the sync is done on a different level (for example in the SPI case). SPI does approximately the same thing. Andi