From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 59DBD309EF4 for ; Fri, 6 Mar 2026 09:48:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772790520; cv=none; b=k5WiFuDuHlZNpMfZy/pq8r7TVmxl6DNEm4ag4Rx4OCoSTww/25aNcU2ib/bi/Vfhsba2ypOiCgXvFCAhtRi+De6G4t/uLCYqn7cvSvrPOvWsBy85+TmpyaD6K59bZ3WaOSKj3I1E+kg8CWdR2DA477sDhxHGQx0Oi7ADKQbbm6g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772790520; c=relaxed/simple; bh=fnom1zpBa+3TvZAMnui42ImL9uIxWC9XooTUYswUifY=; h=Message-ID:Date:MIME-Version:From:Subject:To:Cc:References: In-Reply-To:Content-Type; b=EfkShEusGT+q4Bt1e22M1E8GJW+9FM+dXuEBWuZt/nqYGqtjP1Y/+csbW2OUh1m2xuVXAbh3lzOY1VJSfYM5vXZBYvIQE3yt29/+nwoaWsGqOW7a0JhvFciZhhGaAt6fhh0jUgJYWak8gooKwVqBOufph6hBfGXS/jyt9Ow+m64= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=tAfjPaMD; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="tAfjPaMD" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-483487335c2so75913615e9.2 for ; Fri, 06 Mar 2026 01:48:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1772790518; x=1773395318; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=A0skaQly3xu/7Pfp3EqIaGvuhPoNwqKJaplDt4EGHzs=; b=tAfjPaMDWM/Tk3Gmrv/nnQixRZegK9+PSueoas20pZnfjTNoTHwR4EgHh5hBGIGXMm AplRnxBUdFTDo10t/ofqZIyDP+0/g7U37OBOZ0QdHAz6SlxLr1XTuwTZ8PDDo0GyQbFS n83UDOo4q1A8ITjEyc7rAxzg7amlEt2/xoj/74cbvkcVY5EA1dIx3OEmQ4DPiSJjjksz YmsFRXCbMi8VY3jf6fFj77NzRehWunBkum6HF85Aq311VvB9EhF/8r4W2bRzqYlVgMFt u/0rTj+Glf5hOg6ZVnTYDjccDfs4nDCX7olhYXqQ42zMcJHZfYIEpTWwko4SnnhBuxH8 1poA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772790518; x=1773395318; h=content-transfer-encoding:in-reply-to:organization:autocrypt :content-language:references:cc:to:subject:reply-to:from:user-agent :mime-version:date:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A0skaQly3xu/7Pfp3EqIaGvuhPoNwqKJaplDt4EGHzs=; b=Q8hM1XGvKn7mMFVqXgdv/H0wlXEIN+fhhdsJR4KZVKliCv6eKZRIwDBEBfEa7JGlc8 y+eiWyO9VA3KT3+cXb4Mo8VlA1YdFfYEwU5py7ltcMaMVoOBq7L8kWkpKcmynksWUAz9 I/tzd8XYbdCxXWIsGiJnRqzX5ayU57S1XskYHwuiNQRUh0KqRBb6a+SvIHBFVqbR/zP7 JB9drsnEsQDTMnQ2U4ZBdOOA21Jwygjpmh2bl5LcTMB/kLBSCo9FvpVDVsgJeWB4Ymwq lxgIQNQrdwh5v8ZCHwBTxmfJSIvaOg5Lblu/21NJyNViSh8jk/eXwG76RLxO4oVjJ9GT z/6w== X-Forwarded-Encrypted: i=1; AJvYcCVHUTCSQXoPaoqbNHjY9A02zY6IctG7JSiZSaAXqYYa7FgFlalg595U6KSgxnBbwg6TSlBB+i74w0Tpe9U=@vger.kernel.org X-Gm-Message-State: AOJu0YyjA/40ToNq2D1YqDY8HYW4lNCPiaa44kgDrSBnSwJC62b+cOdm rO6hCMptX1jJXGktlfI3wHUinoMcZ8FQC3RdY3hSVmn/vCn6YNiIem2481r9HXidE9A= X-Gm-Gg: ATEYQzwiMNFmeXxsxGC9p0KT9G3CeQjbKkW0OI7sUa+9hihDd0JZKZu1Wg34skJs475 YBF91fOnBgw52ieKtPvpU9N6Zl8kYJDjhQ9jwkleHxzlyDgdeLTKgkswFtQ/Ai20U/yoy8WqpcW OdZ81sVn5IRYtPMTr/lW7QQ6OGOpYnihlfkYPSpysQQ6tedmg5dcaTvlqlyqXbY1BZHsTwB283b tmKwQqjGklw2ty4aoItbtkT+hb3l9Q2Vfw7ZzjJ8xeRJqB9mQFJI8+CboIhpn/XS7Seqq4QWlLF T0c+vSkR9xdhFTzLuEbNg47CUaI2rsyiFZdBMjK2fIEepcbTOvmQTEDts/tZK6aT78oHIfBMmg5 tgpHsJc0gEP5MtEK9k8GUNv8Xe75DRrErDaz3PTVXbjXFlXLfy1p5AHzaNQMU0D4ogcvusrCjJA F+UMMgSGgw9aUVjb1qZ9iH4pSuSF0ndpYdI5/GVJNgA+fhZVb158N5jquAMJE7XDsO2DIvRczK8 GHfykWVkzX97ig= X-Received: by 2002:a05:600c:8705:b0:483:7ce6:1efb with SMTP id 5b1f17b1804b1-48526969371mr21439055e9.17.1772790517583; Fri, 06 Mar 2026 01:48:37 -0800 (PST) Received: from ?IPV6:2a01:e0a:106d:1080:cbfe:649:7f17:8b95? ([2a01:e0a:106d:1080:cbfe:649:7f17:8b95]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4851fad27e6sm124724355e9.3.2026.03.06.01.48.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 06 Mar 2026 01:48:37 -0800 (PST) Message-ID: <4902bc08-a5af-42a8-8655-8debcd31576a@linaro.org> Date: Fri, 6 Mar 2026 10:48:36 +0100 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Neil Armstrong Reply-To: Neil Armstrong Subject: Re: [PATCH] drm: bridge: anx7625: enforce CONFIG_USB_ROLE_SWITCH dependency To: Arnd Bergmann , Andrzej Hajda , Robert Foss , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Dmitry Baryshkov , Heikki Krogerus , Xin Ji Cc: Arnd Bergmann , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Ayushi Makhija , Douglas Anderson , Luca Ceresoli , Loic Poulain , Chen-Yu Tsai , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20260304083604.724519-1-arnd@kernel.org> Content-Language: en-US, fr Autocrypt: addr=neil.armstrong@linaro.org; keydata= xsBNBE1ZBs8BCAD78xVLsXPwV/2qQx2FaO/7mhWL0Qodw8UcQJnkrWmgTFRobtTWxuRx8WWP GTjuhvbleoQ5Cxjr+v+1ARGCH46MxFP5DwauzPekwJUD5QKZlaw/bURTLmS2id5wWi3lqVH4 BVF2WzvGyyeV1o4RTCYDnZ9VLLylJ9bneEaIs/7cjCEbipGGFlfIML3sfqnIvMAxIMZrvcl9 qPV2k+KQ7q+aXavU5W+yLNn7QtXUB530Zlk/d2ETgzQ5FLYYnUDAaRl+8JUTjc0CNOTpCeik 80TZcE6f8M76Xa6yU8VcNko94Ck7iB4vj70q76P/J7kt98hklrr85/3NU3oti3nrIHmHABEB AAHNKk5laWwgQXJtc3Ryb25nIDxuZWlsLmFybXN0cm9uZ0BsaW5hcm8ub3JnPsLAkQQTAQoA OwIbIwULCQgHAwUVCgkICwUWAgMBAAIeAQIXgBYhBInsPQWERiF0UPIoSBaat7Gkz/iuBQJk Q5wSAhkBAAoJEBaat7Gkz/iuyhMIANiD94qDtUTJRfEW6GwXmtKWwl/mvqQtaTtZID2dos04 YqBbshiJbejgVJjy+HODcNUIKBB3PSLaln4ltdsV73SBcwUNdzebfKspAQunCM22Mn6FBIxQ GizsMLcP/0FX4en9NaKGfK6ZdKK6kN1GR9YffMJd2P08EO8mHowmSRe/ExAODhAs9W7XXExw UNCY4pVJyRPpEhv373vvff60bHxc1k/FF9WaPscMt7hlkbFLUs85kHtQAmr8pV5Hy9ezsSRa GzJmiVclkPc2BY592IGBXRDQ38urXeM4nfhhvqA50b/nAEXc6FzqgXqDkEIwR66/Gbp0t3+r yQzpKRyQif3OwE0ETVkGzwEIALyKDN/OGURaHBVzwjgYq+ZtifvekdrSNl8TIDH8g1xicBYp QTbPn6bbSZbdvfeQPNCcD4/EhXZuhQXMcoJsQQQnO4vwVULmPGgtGf8PVc7dxKOeta+qUh6+ SRh3vIcAUFHDT3f/Zdspz+e2E0hPV2hiSvICLk11qO6cyJE13zeNFoeY3ggrKY+IzbFomIZY 4yG6xI99NIPEVE9lNBXBKIlewIyVlkOaYvJWSV+p5gdJXOvScNN1epm5YHmf9aE2ZjnqZGoM Mtsyw18YoX9BqMFInxqYQQ3j/HpVgTSvmo5ea5qQDDUaCsaTf8UeDcwYOtgI8iL4oHcsGtUX oUk33HEAEQEAAcLAXwQYAQIACQUCTVkGzwIbDAAKCRAWmrexpM/4rrXiB/sGbkQ6itMrAIfn M7IbRuiSZS1unlySUVYu3SD6YBYnNi3G5EpbwfBNuT3H8//rVvtOFK4OD8cRYkxXRQmTvqa3 3eDIHu/zr1HMKErm+2SD6PO9umRef8V82o2oaCLvf4WeIssFjwB0b6a12opuRP7yo3E3gTCS KmbUuLv1CtxKQF+fUV1cVaTPMyT25Od+RC1K+iOR0F54oUJvJeq7fUzbn/KdlhA8XPGzwGRy 4zcsPWvwnXgfe5tk680fEKZVwOZKIEuJC3v+/yZpQzDvGYJvbyix0lHnrCzq43WefRHI5XTT QbM0WUIBIcGmq38+OgUsMYu4NzLu7uZFAcmp6h8g Organization: Linaro In-Reply-To: <20260304083604.724519-1-arnd@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/4/26 09:35, Arnd Bergmann wrote: > From: Arnd Bergmann > > When CONFIG_TYPEC is enabled, but USB_ROLE_SWITCH=m, the anx7625 driver > fails to link as built-in: > > aarch64-linux-ld: drivers/gpu/drm/bridge/analogix/anx7625.o: in function `anx7625_i2c_remove': > anx7625.c:(.text+0x6ec): undefined reference to `usb_role_switch_put' > aarch64-linux-ld: drivers/gpu/drm/bridge/analogix/anx7625.o: in function `anx7625_typec_set_status': > anx7625.c:(.text+0x3080): undefined reference to `usb_role_switch_set_role' > aarch64-linux-ld: drivers/gpu/drm/bridge/analogix/anx7625.o: in function `anx7625_i2c_probe': > anx7625.c:(.text+0x5368): undefined reference to `fwnode_usb_role_switch_get' > > The problem is that both dependencies are optional in the sense of allowing > the anx7625 driver to call the exported interfaces to be used from a loadable > module, but cannot work for built-in drivers. It would be possible to handle > all nine combinations of the CONFIG_TYPEC and CONFIG_USB_ROLE_SWITCH tristate > options, but that does add a lot of complexity that seems unnecessary when > in reality any user of this driver would have both enabled anyway. > > Turn both dependencies into hard 'depends on' here to only allow configurations > where it's possible to actually use them, and remove the misguided IS_REACHABLE() > check that did nothing here. > > Fixes: f81455b2d332 ("drm: bridge: anx7625: implement minimal Type-C support") > Signed-off-by: Arnd Bergmann > --- > drivers/gpu/drm/bridge/analogix/Kconfig | 3 ++- > drivers/gpu/drm/bridge/analogix/anx7625.c | 17 ----------------- > 2 files changed, 2 insertions(+), 18 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/analogix/Kconfig b/drivers/gpu/drm/bridge/analogix/Kconfig > index f3448b0631fe..03dc7ffe824a 100644 > --- a/drivers/gpu/drm/bridge/analogix/Kconfig > +++ b/drivers/gpu/drm/bridge/analogix/Kconfig > @@ -34,7 +34,8 @@ config DRM_ANALOGIX_ANX7625 > tristate "Analogix Anx7625 MIPI to DP interface support" > depends on DRM > depends on OF > - depends on TYPEC || !TYPEC > + depends on TYPEC > + depends on USB_ROLE_SWITCH > select DRM_DISPLAY_DP_HELPER > select DRM_DISPLAY_HDCP_HELPER > select DRM_DISPLAY_HELPER > diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c > index c43519097a45..ec4b24481987 100644 > --- a/drivers/gpu/drm/bridge/analogix/anx7625.c > +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c > @@ -1483,7 +1483,6 @@ static void anx7625_start_dp_work(struct anx7625_data *ctx) > DRM_DEV_DEBUG_DRIVER(dev, "Secure OCM version=%02x\n", ret); > } > > -#if IS_REACHABLE(CONFIG_TYPEC) > static u8 anx7625_checksum(u8 *buf, u8 len) > { > u8 ret = 0; > @@ -1635,22 +1634,6 @@ static void anx7625_typec_unregister(struct anx7625_data *ctx) > usb_role_switch_put(ctx->role_sw); > typec_unregister_port(ctx->typec_port); > } > -#else > -static void anx7625_typec_set_status(struct anx7625_data *ctx, > - unsigned int intr_status, > - unsigned int intr_vector) > -{ > -} > - > -static int anx7625_typec_register(struct anx7625_data *ctx) > -{ > - return 0; > -} > - > -static void anx7625_typec_unregister(struct anx7625_data *ctx) > -{ > -} > -#endif > > static int anx7625_read_hpd_status_p0(struct anx7625_data *ctx) > { Reviewed-by: Neil Armstrong Thanks, Neil