All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Young <sean@mess.org>
To: Andi Shyti <andi.shyti@samsung.com>
Cc: "David Härdeman" <david@hardeman.nu>,
	"Mauro Carvalho Chehab" <mchehab@osg.samsung.com>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	linux-media@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Andi Shyti" <andi@etezian.org>
Subject: Re: [PATCH v2 5/7] [media] ir-lirc-codec: don't wait any transmitting time for tx only devices
Date: Tue, 1 Nov 2016 10:34:08 +0000	[thread overview]
Message-ID: <20161101103408.GA15939@gofer.mess.org> (raw)
In-Reply-To: <20161101065111.hofyxjps2iwmxpzj@gangnam.samsung>


Hi Andi,

On Tue, Nov 01, 2016 at 03:51:11PM +0900, Andi Shyti wrote:
> > Andi, it would be good to know what the use-case for the original change is.
> 
> the use case is the ir-spi itself which doesn't need the lirc to
> perform any waiting on its behalf.

Here is the crux of the problem: in the ir-spi case no wait will actually 
happen here, and certainly no "over-wait". The patch below will not change
behaviour at all.

In the ir-spi case, "towait" will be 0 and no wait happens.

I think the code is already in good shape but somehow there is a 
misunderstanding. Did I miss something?


Sean

> To me it just doesn't look right to simulate a fake transmission
> period and wait unnecessary time. Of course, the "over-wait" is not
> a big deal and at the end we can decide to drop it.
> 
> Otherwise, an alternative could be to add the boolean
> 'tx_no_wait' in the rc_dev structure. It could be set by the
> device driver during the initialization and the we can follow
> your approach.
> 
> Something like this:
> 
> diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
> index c327730..4553d04 100644
> --- a/drivers/media/rc/ir-lirc-codec.c
> +++ b/drivers/media/rc/ir-lirc-codec.c
> @@ -161,15 +161,19 @@ static ssize_t ir_lirc_transmit_ir(struct file *file, const char __user *buf,
>  
>         ret *= sizeof(unsigned int);
>  
> -       /*
> -        * The lircd gap calculation expects the write function to
> -        * wait for the actual IR signal to be transmitted before
> -        * returning.
> -        */
> -       towait = ktime_us_delta(ktime_add_us(start, duration), ktime_get());
> -       if (towait > 0) {
> -               set_current_state(TASK_INTERRUPTIBLE);
> -               schedule_timeout(usecs_to_jiffies(towait));
> +       if (!dev->tx_no_wait) {
> +               /*
> +                * The lircd gap calculation expects the write function to
> +                * wait for the actual IR signal to be transmitted before
> +                * returning.
> +                */
> +               towait = ktime_us_delta(ktime_add_us(start, duration),
> +                                                               ktime_get());
> +               if (towait > 0) {
> +                       set_current_state(TASK_INTERRUPTIBLE);
> +                       schedule_timeout(usecs_to_jiffies(towait));
> +               }
> +
>         }
>  
>  out:
> diff --git a/drivers/media/rc/ir-spi.c b/drivers/media/rc/ir-spi.c
> index fcda1e4..e44abfa 100644
> --- a/drivers/media/rc/ir-spi.c
> +++ b/drivers/media/rc/ir-spi.c
> @@ -149,6 +149,7 @@ static int ir_spi_probe(struct spi_device *spi)
>         if (!idata->rc)
>                 return -ENOMEM;
>  
> +       idata->rc->tx_no_wait      = true;
>         idata->rc->tx_ir           = ir_spi_tx;
>         idata->rc->s_tx_carrier    = ir_spi_set_tx_carrier;
>         idata->rc->s_tx_duty_cycle = ir_spi_set_duty_cycle;
> diff --git a/include/media/rc-core.h b/include/media/rc-core.h
> index fe0c9c4..c3ced9b 100644
> --- a/include/media/rc-core.h
> +++ b/include/media/rc-core.h
> @@ -85,6 +85,9 @@ enum rc_filter_type {
>   * @input_dev: the input child device used to communicate events to userspace
>   * @driver_type: specifies if protocol decoding is done in hardware or software
>   * @idle: used to keep track of RX state
> + * @tx_no_wait: decides whether to perform or not a sync write or not. The
> + *      device driver setting it to true must make sure to not break the ABI
> + *      which requires a sync transfer.
>   * @allowed_protocols: bitmask with the supported RC_BIT_* protocols
>   * @enabled_protocols: bitmask with the enabled RC_BIT_* protocols
>   * @allowed_wakeup_protocols: bitmask with the supported RC_BIT_* wakeup protocols
> @@ -147,6 +150,7 @@ struct rc_dev {
>         struct input_dev                *input_dev;
>         enum rc_driver_type             driver_type;
>         bool                            idle;
> +       bool                            tx_no_wait;
>         u64                             allowed_protocols;
>         u64                             enabled_protocols;
>         u64                             allowed_wakeup_protocols;
> 
> Thanks,
> Andi
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2016-11-01 10:34 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-01 17:16 [PATCH v2 0/7] Add support for IR transmitters Andi Shyti
2016-09-01 17:16 ` Andi Shyti
2016-09-01 17:16 ` [PATCH v2 1/7] [media] rc-main: assign driver type during allocation Andi Shyti
2016-09-01 21:23   ` Sean Young
     [not found]     ` <20160901212351.GB22198-3XSxi2G4b3iXFJAUJl40Xg@public.gmane.org>
2016-09-02  5:25       ` Andi Shyti
2016-09-02  5:25         ` Andi Shyti
2016-09-01 17:16 ` [PATCH v2 2/7] [media] rc-main: split setup and unregister functions Andi Shyti
2016-09-01 17:16 ` [PATCH v2 3/7] [media] rc-core: add support for IR raw transmitters Andi Shyti
2016-09-01 21:31   ` Sean Young
     [not found]   ` <20160901171629.15422-4-andi.shyti-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2016-09-02  0:21     ` kbuild test robot
2016-09-02  0:21       ` kbuild test robot
2016-09-01 17:16 ` [PATCH v2 4/7] [media] rc-ir-raw: do not generate any receiving thread for " Andi Shyti
2016-09-01 17:16 ` [PATCH v2 5/7] [media] ir-lirc-codec: don't wait any transmitting time for tx only devices Andi Shyti
2016-09-02  8:41   ` Sean Young
     [not found]     ` <20160902084158.GA25342-3XSxi2G4b3iXFJAUJl40Xg@public.gmane.org>
2016-10-27  7:44       ` Andi Shyti
2016-10-27  7:44         ` Andi Shyti
2016-10-27 14:36         ` Sean Young
2016-10-31 14:31           ` David Härdeman
2016-10-31 17:05             ` Sean Young
     [not found]               ` <20161031170526.GA8183-3XSxi2G4b3iXFJAUJl40Xg@public.gmane.org>
2016-11-01  6:51                 ` Andi Shyti
2016-11-01  6:51                   ` Andi Shyti
2016-11-01 10:34                   ` Sean Young [this message]
2016-11-02  4:39                     ` Andi Shyti
2016-09-01 17:16 ` [PATCH v2 6/7] Documentation: bindings: add documentation for ir-spi device driver Andi Shyti
2016-09-01 21:40   ` Rob Herring
2016-09-02  5:33     ` Andi Shyti
     [not found]       ` <20160902053320.wqe5hklklnyvcc5m-4M0o0xkwKdT35fTxX1Dczw@public.gmane.org>
2016-09-12 13:27         ` Rob Herring
2016-09-12 13:27           ` Rob Herring
2016-09-01 17:16 ` [PATCH v2 7/7] [media] rc: add support for IR LEDs driven through SPI Andi Shyti
2016-09-01 21:12   ` Sean Young
     [not found]     ` <20160901211232.GA22198-3XSxi2G4b3iXFJAUJl40Xg@public.gmane.org>
2016-09-02  5:27       ` Andi Shyti
2016-09-02  5:27         ` Andi Shyti
2016-09-02  8:43         ` Sean Young

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161101103408.GA15939@gofer.mess.org \
    --to=sean@mess.org \
    --cc=andi.shyti@samsung.com \
    --cc=andi@etezian.org \
    --cc=david@hardeman.nu \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mchehab@osg.samsung.com \
    --cc=robh+dt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.