From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1793891977; b=R4O6g+rXhsnpePQndYIEtSsGnDiYP86Dfz0SPWadGJVTpYHUUsgyj5/ACeGntkkw0ssy XiqLh09bJJsa8fEr88t5ZluKArTBd+SrkqwpECU/SVFL1Zl7+vCmcOcyRE3DkGK5KCJen RNUSrrDugAgX7AHzYi/vtUo06KbEy+t6WmFhyjuFMX0ZRmhfTvm7CDFQYKZe78YhPDNeU 7JtLyryqlbsvIqMOOl9xoArxUbUap6pOaTTl/6Jtedc2cTBBm0GfvP9MjfCLC+xtAh4/3 58Jr+oRRUTDrSv1gHq84mo6n+ZEPokiiClXesJXMZibfP2gzvbL1sZzFymHlJNhN13g== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1793891977; h=DMARC-Filter:DKIM-Signature:Received:X-MC-Unique: X-Mimecast-MFC-AGG-ID:Received:Received:From:To:Cc:Subject:Date: Message-ID:In-Reply-To:References:MIME-Version: Content-Transfer-Encoding:X-Scanned-By; bh=gsfTIYG6DvjHPxbAO/LZnJxlbsOGTE8p94YdknJis+w=; b=raSQP2vXtrLipMBxs+Tri1AlAVNZPV+UWBSmsZhB86ZfZ9FWdkb4oibm5jDIDn6QYkfM 7JcTUeUNdVkYLLTS56TOeiGh9D8vOB97aieG0Fjs7zDgOFL7Yb53GITAwlgNUOp0VK4/3 tYXhyt2YEI3wp55VkGddl4//7mjP3IjOaO1YBbThaDpeILwxwZ0TS+e7gcHNKoQx7paU0 nTRG08Z9Lca7F7BvKcKDlgyTObqOOygPncVZIA6ZrD0ZHCJbPt1DZCsbDCd27Co5p5p1i IeoOJlqCijxtDFdc/4w5HLQD6l0O5nSj2l6rYz04mJwnoNsjw6IyDK9urKqhnndA53g== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=FhrGfGTr; arc=none smtp.remote-ip=170.10.129.124 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD6886082BCA for ; Thu, 5 Nov 2026 15:19:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org AD6886082BCA Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=FhrGfGTr DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1793891975; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gsfTIYG6DvjHPxbAO/LZnJxlbsOGTE8p94YdknJis+w=; b=FhrGfGTrOw2zqoRwprM16Gr2lS0U+P5qHDPGhWqsv7Amqn7u8t/Fo5wU2HhfTbcj7AJE1T dhGzC+7PNlpExxaPX2K+rnE2+Ud2p8mi/QFkwsYou014f8xsiuTXla30MHp/gnahJIjlDB jmL3uKT+C1jwkKFTz+0wnvHvomULBvs= Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-543-cFd3yrVrOc62KHgk0pinZA-1; Thu, 05 Nov 2026 10:19:32 -0500 X-MC-Unique: cFd3yrVrOc62KHgk0pinZA-1 X-Mimecast-MFC-AGG-ID: cFd3yrVrOc62KHgk0pinZA_1793891969 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 42ACC1955DC6; Thu, 5 Nov 2026 15:19:29 +0000 (UTC) Received: from poros-thinkpadp16vgen1.tpbc.com (unknown [10.44.32.42]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 5202F195608C; Thu, 5 Nov 2026 15:19:24 +0000 (UTC) From: Petr Oros To: netdev@vger.kernel.org Cc: Petr Oros , Jonathan Corbet , Shuah Khan , Shuah Khan , Randy Dunlap , Jani Nikula , Vadim Fedorenko , Arkadiusz Kubalewski , Jiri Pirko , Ivan Vecera , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH net-next v2 05/14] dpll: dpllsim: Add support to set input pin state Date: Thu, 5 Nov 2026 16:18:43 +0100 Message-ID: <20261105151852.1844305-6-poros@redhat.com> In-Reply-To: <20261105151852.1844305-1-poros@redhat.com> References: <20261105151852.1844305-1-poros@redhat.com> X-Mailing-List: netdev@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Add support for setting the state of input pins on the device. Implement the state_on_dpll_set callback for input pins and advertise the state-can-change capability for them, so that userspace can move a pin between connected, disconnected and selectable. The driver stores the requested state and reports it back unchanged, it does not act on it yet. Output pins keep reporting their state only. Signed-off-by: Petr Oros --- drivers/dpll/dpllsim/dpll.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/dpll/dpllsim/dpll.c b/drivers/dpll/dpllsim/dpll.c index a1d5921fb8d017..2b0c053a7b6087 100644 --- a/drivers/dpll/dpllsim/dpll.c +++ b/drivers/dpll/dpllsim/dpll.c @@ -104,10 +104,23 @@ static int dpllsim_pin_state_get(const struct dpll_pin *pin, void *pin_priv, return 0; } +static int dpllsim_pin_state_set(const struct dpll_pin *pin, void *pin_priv, + const struct dpll_device *dpll, + void *dpll_priv, enum dpll_pin_state state, + struct netlink_ext_ack *extack) +{ + struct dpllsim_pin *sim_pin = pin_priv; + + guard(mutex)(&sim_pin->dev->lock); + sim_pin->state = state; + return 0; +} + static const struct dpll_pin_ops dpllsim_input_pin_ops = { .frequency_get = dpllsim_pin_frequency_get, .direction_get = dpllsim_pin_direction_get, .state_on_dpll_get = dpllsim_pin_state_get, + .state_on_dpll_set = dpllsim_pin_state_set, }; static const struct dpll_pin_ops dpllsim_output_pin_ops = { @@ -149,6 +162,12 @@ static void dpllsim_pin_props(struct dpllsim_pin *pin, prop->freq_supported_num = ARRAY_SIZE(dpllsim_freq_ext); break; } + + /* Capabilities follow the ops the pin is served by */ + if (dpllsim_pin_select_ops(pin) == &dpllsim_input_pin_ops) + prop->capabilities = DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE; + else + prop->capabilities = 0; } static bool dpllsim_pin_frequency_valid(struct dpllsim_pin *pin) -- 2.56.0