Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp1014502pxb; Wed, 6 Apr 2022 06:45:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPe/W92VPUfx7ETfRbonBpiGgHLaahPGn2xrJOwqN11775JrxCRW+oy9kwUMy84EYHXl+x X-Received: by 2002:a9d:728d:0:b0:5b2:292e:de3f with SMTP id t13-20020a9d728d000000b005b2292ede3fmr3004186otj.174.1649252732171; Wed, 06 Apr 2022 06:45:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649252732; cv=none; d=google.com; s=arc-20160816; b=EO3jSYEOxEGqqSCf26zNS8nEW7MmzTO5Xh5G2V8li6DSknqtWnNLKDOcycTAa//2Kw e6pCLEX/X+povrUL43DPPuT80vVzUFO7sxVhUtut2zTJKONRwP4/93JDGawolmJSTqY9 F5c62oULLsHw5fXI567IKstfS42hRUKs4i/7utp9U+7Uv2J7xc1X1z5XlnrU58alFN1K NsVZndDMY3lUY/yYhE+0EIifIvhXpIH5XdaFyMK1c/CdKlamaPuTV8OVgn5hNf4ypEf9 yN24EI3GacOtzdq8fJzCwz/OK5T7RoPfav8X+miYD5WZBQm2Rb95s7qG4N8/U8EBM5JG 1Chg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=igNlKHaj0ElAbicJ/uitiAO4yT+cj+O9Vk5erdKuM6g=; b=vL8bEokjV2BkRvd9qBiUBuEBsid7yLeWGINWnrG6QxHLQ6xaDX3V3n+MJccrvav3U0 3Sh/Y2/8jNaEnTgqO/OLOR2SYpQWgoV9UuSKgclGKxQxlBjTIraNB70Ozbj4LSOPjOwb VAJZsUyPyh20TKC9BpR6WfzWEUmXtSs662kkjZe9CCcNUXy/mVNT+mNwGmkDvblgIjtH Zvwx6wCtiRN+fv9BXmTUC5Mvytz2tJXP9AdvkId2TPCJbt9H8lrW0/g4/tegd0ZcFQq2 hrBQ2vMO5loUOC7hUzwCa9mp/bIjocOCZGq5S0oYmAajP/QSNDMZYfcoQe44ZNnsPPfY iQJw== ARC-Authentication-Results: i=1; mx.google.com; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id z7-20020a9d62c7000000b005cb3c7bf247si8786924otk.133.2022.04.06.06.45.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Apr 2022 06:45:32 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 04EF560B889; Wed, 6 Apr 2022 04:33:56 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1583912AbiDEX45 convert rfc822-to-8bit (ORCPT + 99 others); Tue, 5 Apr 2022 19:56:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1388412AbiDEOji (ORCPT ); Tue, 5 Apr 2022 10:39:38 -0400 Received: from mail-qt1-f169.google.com (mail-qt1-f169.google.com [209.85.160.169]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 19D34122989; Tue, 5 Apr 2022 06:16:21 -0700 (PDT) Received: by mail-qt1-f169.google.com with SMTP id 10so10862160qtz.11; Tue, 05 Apr 2022 06:16:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=f8BEQiIeTdZ8MUyIQgmfaD47+sl12jVUvr2inorvkYY=; b=CO1zsIydre5IRFvbHul/n+haDWvCdFh+lQnpypN4rPSGKzqeM3Y3praSkStx+3sboz NsHTAGMckfUCDeUofd27QhbOHd+i4iVq4Onit94xjOUXMq0ivEq0ywoasJQBqKeex1cS vps8bz2pNPTZzoHKCqAlNzjU3QB7xx8T6IgmqaYN4+IiIWmQupgjdP9cxOizVTsmibFG rhN9zQA6tu6SKVKryjyb5jzyd5iWGyGLKS1thCHJmxsBjLx4slGiQ66G28CrsC10SHAB 9omAm4umSVUr3sG5jGk/fbkyfyhAf8tRIBmKlqWpJqhpOU5BTGssRbtGSyy5p9ushgS7 9LPQ== X-Gm-Message-State: AOAM530IuYlX5Kqh4Uc7/l/kvZwoexyxe1e1UILcluDu5j3RyLk1RTWg cCL5od0akOCgjHB4i/W4ry27zbJ5zTqXOQ== X-Received: by 2002:a05:620a:450f:b0:67d:b1ee:bd3 with SMTP id t15-20020a05620a450f00b0067db1ee0bd3mr2117460qkp.766.1649164579659; Tue, 05 Apr 2022 06:16:19 -0700 (PDT) Received: from mail-yw1-f169.google.com (mail-yw1-f169.google.com. [209.85.128.169]) by smtp.gmail.com with ESMTPSA id y24-20020a37e318000000b0067d43d76184sm7804021qki.97.2022.04.05.06.16.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 05 Apr 2022 06:16:19 -0700 (PDT) Received: by mail-yw1-f169.google.com with SMTP id 00721157ae682-2eb57fd3f56so71376607b3.8; Tue, 05 Apr 2022 06:16:18 -0700 (PDT) X-Received: by 2002:a81:3d81:0:b0:2eb:8069:5132 with SMTP id k123-20020a813d81000000b002eb80695132mr2587791ywa.438.1649164578752; Tue, 05 Apr 2022 06:16:18 -0700 (PDT) MIME-Version: 1.0 References: <20220405070354.155796697@linuxfoundation.org> <20220405070359.334460978@linuxfoundation.org> In-Reply-To: <20220405070359.334460978@linuxfoundation.org> From: Geert Uytterhoeven Date: Tue, 5 Apr 2022 15:16:07 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 5.16 0172/1017] media: gpio-ir-tx: fix transmit with long spaces on Orange Pi PC To: Greg Kroah-Hartman Cc: Linux Kernel Mailing List , stable , =?UTF-8?B?0JzQuNGF0LDQuNC7?= , Sean Young , Mauro Carvalho Chehab Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 5, 2022 at 1:33 PM Greg Kroah-Hartman wrote: > From: Sean Young > > commit 5ad05ecad4326ddaa26a83ba2233a67be24c1aaa upstream. > > Calling udelay for than 1000us does not always yield the correct > results. > > Cc: stable@vger.kernel.org > Reported-by: Михаил > Signed-off-by: Sean Young > Signed-off-by: Mauro Carvalho Chehab > Signed-off-by: Greg Kroah-Hartman > --- > drivers/media/rc/gpio-ir-tx.c | 28 +++++++++++++++++++++------- > 1 file changed, 21 insertions(+), 7 deletions(-) > > --- a/drivers/media/rc/gpio-ir-tx.c > +++ b/drivers/media/rc/gpio-ir-tx.c > @@ -48,11 +48,29 @@ static int gpio_ir_tx_set_carrier(struct > return 0; > } > > +static void delay_until(ktime_t until) > +{ > + /* > + * delta should never exceed 0.5 seconds (IR_MAX_DURATION) and on > + * m68k ndelay(s64) does not compile; so use s32 rather than s64. > + */ > + s32 delta; > + > + while (true) { > + delta = ktime_us_delta(until, ktime_get()); > + if (delta <= 0) > + return; > + > + /* udelay more than 1ms may not work */ > + delta = min(delta, 1000); > + udelay(delta); > + } Yeah, that's why we have mdelay(), which loops around udelay() if no arch-specific implementation is provided. > +} > + > static void gpio_ir_tx_unmodulated(struct gpio_ir *gpio_ir, uint *txbuf, > uint count) > { > ktime_t edge; > - s32 delta; > int i; > > local_irq_disable(); > @@ -63,9 +81,7 @@ static void gpio_ir_tx_unmodulated(struc > gpiod_set_value(gpio_ir->gpio, !(i % 2)); > > edge = ktime_add_us(edge, txbuf[i]); > - delta = ktime_us_delta(edge, ktime_get()); > - if (delta > 0) > - udelay(delta); > + delay_until(edge); > } > > gpiod_set_value(gpio_ir->gpio, 0); > @@ -97,9 +113,7 @@ static void gpio_ir_tx_modulated(struct > if (i % 2) { > // space > edge = ktime_add_us(edge, txbuf[i]); > - delta = ktime_us_delta(edge, ktime_get()); > - if (delta > 0) > - udelay(delta); > + delay_until(edge); > } else { > // pulse > ktime_t last = ktime_add_us(edge, txbuf[i]); Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds