Received: by 2002:a05:7412:a9a2:b0:e2:908c:2ebd with SMTP id o34csp1694813rdh; Sat, 28 Oct 2023 03:44:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHeOmIJW6elrsFJqSeQdsa/KtSTtG2xbqL5kScKerPdE2CBXP1TcMzuHQLFQ9iTn/7ivUFz X-Received: by 2002:a81:760f:0:b0:59b:fda7:9d7f with SMTP id r15-20020a81760f000000b0059bfda79d7fmr4444075ywc.49.1698489841434; Sat, 28 Oct 2023 03:44:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698489841; cv=none; d=google.com; s=arc-20160816; b=tYE9RqXYDTv+TB4Vj9CfNauxr45h7Zq3XIMp84KgEI6N121zWBrs77iLW/5cwey2y9 MSLSpT1R237QiY6tSNBckuFpmkTjr7JG/1FN7tTsozz6BB4K4N0bKsQAF2bAvnOlABBx W0zaRbCzQg5YJzvS04IWBmyT1qDsSC2Bkj4q9qeq/Ru+4ZORKtUSJCrXTh22YEdCyuCi QcRytkMP4IhYb7fq999VtPD0WmS0Js+DFzKBOHtG9pZCwS3K/e5UMqzne+XD6zEi51H+ MUiSjAcmCLSmd3Nu4+/DA2uHko4RFL1bhPedlnaPjNm0OD+aXNamWCHmwBNf1m7u60ec 2yIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:message-id:references :in-reply-to:subject:cc:to:from:date:mime-version; bh=8Tl7hdURABupnut5wsjh8td+xzCWno5aar/krf7BRk8=; fh=NnvjNDOWs0Ks7KaawB8y11lPKsizyYHpVg0uvmrHSnc=; b=s21a+Vvia5BiPrhpxbUuyV16R+I3pmFODVWC9qYNk6MaabBaOqIF6EZy1FB+0FbP0A PQxpR5pUWSohtl9Z8esvq0Hu/NhKpiG0f+FWsOswlZSDislozvNiygvTnXbbZZHoUbLt M5ESU5XVZwb5W30wWQoELk5REWvWZVQW1z7Ok+QmFNy2LCPUwAsg3ssGrCnEDvDDW2kZ Vyg8RitQ87p9ewEBYtV2cO7JW4UF59bwnxDSUjs5Wnk64qsgEF7QklE3WNPH/nMUPAOa 1/D7FmKpOGFkl+WZmU3oLDo8FA6Fa56P64q/t0MvmOFugD8tdHFIvjnwNyuQjtUsFAf5 76SA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id b193-20020a6334ca000000b005b8f0c8ddc7si2316153pga.87.2023.10.28.03.44.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Oct 2023 03:44:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id A9BFA80B6C07; Sat, 28 Oct 2023 03:43:58 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229483AbjJ1Knu (ORCPT + 99 others); Sat, 28 Oct 2023 06:43:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46218 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229450AbjJ1Kns (ORCPT ); Sat, 28 Oct 2023 06:43:48 -0400 Received: from connect.vanmierlo.com (fieber.vanmierlo.com [84.243.197.177]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADA71C1; Sat, 28 Oct 2023 03:43:43 -0700 (PDT) X-Footer: dmFubWllcmxvLmNvbQ== Received: from roundcube.vanmierlo.com ([192.168.37.37]) (authenticated user m.brock@vanmierlo.com) by connect.vanmierlo.com (Kerio Connect 10.0.2 patch 1) with ESMTPA; Sat, 28 Oct 2023 12:43:40 +0200 MIME-Version: 1.0 Date: Sat, 28 Oct 2023 12:43:40 +0200 From: m.brock@vanmierlo.com To: Florian Eckert Cc: Eckert.Florian@googlemail.com, gregkh@linuxfoundation.org, jirislaby@kernel.org, pavel@ucw.cz, lee@kernel.org, kabel@kernel.org, u.kleine-koenig@pengutronix.de, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, linux-leds@vger.kernel.org Subject: Re: [PATCH v5 2/2] leds: ledtrig-tty: add new line mode evaluation In-Reply-To: <20231023094205.2706812-3-fe@dev.tdt.de> References: <20231023094205.2706812-1-fe@dev.tdt.de> <20231023094205.2706812-3-fe@dev.tdt.de> Message-ID: X-Sender: m.brock@vanmierlo.com Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Sat, 28 Oct 2023 03:43:58 -0700 (PDT) Florian Eckert wrote on 2023-10-23 11:42: > @@ -16,6 +16,28 @@ struct ledtrig_tty_data { > const char *ttyname; > struct tty_struct *tty; > int rx, tx; > + unsigned long ttytrigger; > +}; ttytriggers ? [...] > static void ledtrig_tty_work(struct work_struct *work) > { > struct ledtrig_tty_data *trigger_data = > container_of(work, struct ledtrig_tty_data, dwork.work); > + struct led_classdev *led_cdev = trigger_data->led_cdev; > + unsigned long interval = LEDTRIG_TTY_INTERVAL; > struct serial_icounter_struct icount; > + enum led_trigger_tty_state state; > + int current_brightness; > + int status; > int ret; > > + state = TTY_LED_DISABLE; > mutex_lock(&trigger_data->mutex); > > if (!trigger_data->ttyname) { > @@ -115,22 +218,74 @@ static void ledtrig_tty_work(struct work_struct > *work) > trigger_data->tty = tty; > } > > - ret = tty_get_icount(trigger_data->tty, &icount); > - if (ret) { > - dev_info(trigger_data->tty->dev, "Failed to get icount, stopped > polling\n"); > - mutex_unlock(&trigger_data->mutex); > - return; > + status = tty_get_tiocm(trigger_data->tty); > + if (status > 0) { > + if (test_bit(TRIGGER_TTY_CTS, &trigger_data->ttytrigger)) { > + if (status & TIOCM_CTS) > + state = TTY_LED_ENABLE; > + } > + > + if (test_bit(TRIGGER_TTY_DSR, &trigger_data->ttytrigger)) { > + if (status & TIOCM_DSR) > + state = TTY_LED_ENABLE; > + } > + > + if (test_bit(TRIGGER_TTY_CAR, &trigger_data->ttytrigger)) { > + if (status & TIOCM_CAR) > + state = TTY_LED_ENABLE; > + } > + > + if (test_bit(TRIGGER_TTY_RNG, &trigger_data->ttytrigger)) { > + if (status & TIOCM_RNG) > + state = TTY_LED_ENABLE; > + } > + } > + > + /* The rx/tx handling must come after the evaluation of TIOCM_*, > + * since the display for rx/tx has priority > + */ > + if (test_bit(TRIGGER_TTY_RX, &trigger_data->ttytrigger) || > + test_bit(TRIGGER_TTY_TX, &trigger_data->ttytrigger)) { > + ret = tty_get_icount(trigger_data->tty, &icount); > + if (ret) { > + dev_info(trigger_data->tty->dev, "Failed to get icount, stopped > polling\n"); > + mutex_unlock(&trigger_data->mutex); > + return; > + } > + > + if (test_bit(TRIGGER_TTY_RX, &trigger_data->ttytrigger) && > + (icount.tx != trigger_data->tx)) { You check for TRIGGER_TTY_RX and then compare icount.tx, is that correct? > + trigger_data->tx = icount.tx; > + state = TTY_LED_BLINK; > + } > + > + if (test_bit(TRIGGER_TTY_TX, &trigger_data->ttytrigger) && > + (icount.rx != trigger_data->rx)) { You check for TRIGGER_TTY_TX and then compare icount.rx, is that correct? > + trigger_data->rx = icount.rx; > + state = TTY_LED_BLINK; > + } > } > > - if (icount.rx != trigger_data->rx || > - icount.tx != trigger_data->tx) { > - unsigned long interval = LEDTRIG_TTY_INTERVAL; > + current_brightness = led_cdev->brightness; > + if (current_brightness) > + led_cdev->blink_brightness = current_brightness; > > + if (!led_cdev->blink_brightness) > + led_cdev->blink_brightness = led_cdev->max_brightness; Is it OK to override the chosen brightness here? > + > + switch (state) { > + case TTY_LED_BLINK: > led_blink_set_oneshot(trigger_data->led_cdev, &interval, > &interval, 0); Change trigger_data->led_cdev to simply led_cdev Shouldn't the led return to the line controlled steady state? Set an invert variable to true if state was TTY_LED_ENABLE before it got set to TTY_LED_BLINK How do interval and the frequency of ledtrig_tty_work() relate? > - > - trigger_data->rx = icount.rx; > - trigger_data->tx = icount.tx; > + break; > + case TTY_LED_ENABLE: > + led_set_brightness(led_cdev, led_cdev->blink_brightness); > + break; > + case TTY_LED_DISABLE: > + fallthrough; > + default: > + led_set_brightness(led_cdev, LED_OFF); > + break; > } Maarten