From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE0F2313E36 for ; Wed, 11 Feb 2026 23:59:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770854353; cv=none; b=GDbOv+KpllgF18++us6ICmLr9fHRlM1bT0bLeLVXLlbCcogFSl36kkue7v58jG9YAH2FqKosrmXyMN6MyTOb5gOezrqv3No+ZliQIxIGBKT6JR+4r2Kc+0PsKJkSLNUyXOuc6FAUJjqkXUwkVWehClvDI8vsuLwChKy7itzUFp8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770854353; c=relaxed/simple; bh=bvJI20HyeMvKHVjdYdFK+wgYX2p2czI+rM4pevr1pUc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D8l78rAkGc+abJxS7OVLIm0MPAr3XHNHVf7hvJQRk/staVB9doLF/4fqn9YHd9erwl0WFui0ZOlmWoYp+JbJiGIwKuE+Y+DVfccD7TIi62XmJRUhYO59l8wKNEx0vIvQGHqAzl0QSI6isLOHJr9XlPBF/fH45b+XyxFJXUag4Lc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jKQ4nJDp; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jKQ4nJDp" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b8860d6251bso365460466b.3 for ; Wed, 11 Feb 2026 15:59:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770854350; x=1771459150; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XVdkTm/zOeP3cGpXIWZBQZFEMblYWk3KTVOwDmAO374=; b=jKQ4nJDp2LgtlHgekVIuuwkUjRweD5hnWi/FSiZFS1qOdcQ176fXwCOFBWGOsDWsgq S5bcQw5WTv+PzBUHXUeqV1uZ8xdR6zz3FmRca4MLDB0gV8HvLLD9lzjgCwlb7tYXKj4L UsGQtHUV7okuQEf8sxHXJE79ZeTThlt+IJ3VZWKkw+/yRSaijJz9tEQVRi4DU2GEcnwZ vOkxNy5QE9RmU/yanDkfOfwdONlLFAm1ctVteUIvN5dbZ5Kj0aUdSl3V6RjNoex5spTV TnIpSF/cZubQw0vhaBZOZycAPsTjqXgFc+YTI3ANWG9WHIzC7791WBk0bxagDXnnYBl/ ++QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770854350; x=1771459150; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XVdkTm/zOeP3cGpXIWZBQZFEMblYWk3KTVOwDmAO374=; b=fMf9S7ZpJDAmlPnzzBXJT2jcMZeKw7kEeUgQWSJ6ZIL39dx91R40i5spj2O97ELH9G cZF+CVzQXRqR4l6HEYazN+Blgug32xro5+xzQIPmsb7Yhey7VhShZx89yWMhDpZL47rj PtoIL5IfwUfcM7YtYIrqjkQAW2bv4QzHnHPc8tCxl4VRt5ICj6IoIu4WNT5PaRDTYbn4 LAML1O9shTRLVgKb2JP+463MQbveF3sGlMT1MO0TzFB9FntM5jLBfuE1MN8Q3HZy8PIE Qc7GFoE4TMSJkQ5AQ1i1KQotQZfOEpM0qz+Kv2VTE+a/gwEdyldfzW1TDA70JslzB8Wu zFCQ== X-Gm-Message-State: AOJu0YyyvglBn6YxWI9jAHhvIL27UPhGjrg2lnIr5UAx9ypB6/aJAeXQ FJ7SQkVb8FaZgTKMbdAlXZWeMBPVhBDNl8A5TZOUSkb5iRBTzI6jZI/l X-Gm-Gg: AZuq6aKXzHKpCRTykNnVL2arSrtar0Qv3w/8bCTTbDdTZc1mfY18Ngr76wrmjngHSpX g3e0HND7571ZBSE0d4BJUQk7hc7Fw0GWpaJ7yo7ixuCaFVBqdbvUXnwT9TuoYf8ZIgINBYAMAGl zgGs1UdQ15DLwplApN3gfnBoVgfvtfmVLd07BxxsgrLXvd2+xPOc1ccsF7Jw+A/ROCyBeJKEd/E baT5rN2/RhiZcgMt/UeGc6/6guqO+rQhf85fCQ2DHwDK2nGEp2TvRD+6q4JEQ8jphRvWdNTxjum GiRpI+pzMbevpCHu7eQd+PiAVvK8KcODQydR3q++0jW6KXzqlrIMClKcujF3wRUjLzyU3FWqIxR YzrNGnl3ChEmjYbINPpWQ7G5PVX+lvT/qYFaUUsys8PvYMxkSqNt1w22b6ABC7WS4HOV4cSE6zM ermQlaSVnOBZGFnQ== X-Received: by 2002:a17:906:c145:b0:b72:58b6:b263 with SMTP id a640c23a62f3a-b8f92c8961cmr16354866b.60.1770854350087; Wed, 11 Feb 2026 15:59:10 -0800 (PST) Received: from jekhomev ([46.251.53.180]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8f9561f722sm1593466b.10.2026.02.11.15.59.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 15:59:09 -0800 (PST) From: Yauhen Kharuzhy To: Dmitry Torokhov , linux-input@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Hans de Goede , Yauhen Kharuzhy Subject: [PATCH 4/5] input: drv260x: Stop waiting for GO bit clearing after timeout Date: Thu, 12 Feb 2026 01:46:54 +0200 Message-ID: <20260211235902.4156624-5-jekhor@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260211235902.4156624-1-jekhor@gmail.com> References: <20260211235902.4156624-1-jekhor@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit If something goes wrong during effect playing or calibration, the GO bit may not be cleared after some time, and the driver will get stuck. To prevent this, add a timeout to the waiting loop. Signed-off-by: Yauhen Kharuzhy --- drivers/input/misc/drv260x.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/input/misc/drv260x.c b/drivers/input/misc/drv260x.c index f08a3d6c3ed8..f7bfac6d3973 100644 --- a/drivers/input/misc/drv260x.c +++ b/drivers/input/misc/drv260x.c @@ -173,6 +173,12 @@ #define DRV260X_AUTOCAL_TIME_500MS (2 << 4) #define DRV260X_AUTOCAL_TIME_1000MS (3 << 4) +/* + * Timeout for waiting for the GO status bit, in seconds. Should be reasonably + * large to allow long-duration effects and a calibration cycle + */ +#define DRV260X_GO_TIMEOUT_S 5 + /** * struct drv260x_data - * @input_dev: Pointer to the input device @@ -339,6 +345,7 @@ static int drv260x_init(struct drv260x_data *haptics) { int error; unsigned int cal_buf; + unsigned long timeout; u8 id; error = regmap_read(haptics->regmap, DRV260X_STATUS, &cal_buf); @@ -442,6 +449,7 @@ static int drv260x_init(struct drv260x_data *haptics) return error; } + timeout = jiffies + DRV260X_GO_TIMEOUT_S * HZ; do { usleep_range(15000, 15500); error = regmap_read(haptics->regmap, DRV260X_GO, &cal_buf); @@ -451,6 +459,10 @@ static int drv260x_init(struct drv260x_data *haptics) error); return error; } + if (jiffies - timeout <= 0) { + dev_err(&haptics->client->dev, "GO timeout\n"); + break; + } } while (cal_buf == DRV260X_GO_BIT); return 0; -- 2.51.0