From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 68E013E9C03 for ; Mon, 27 Jul 2026 11:40:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.10 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785152457; cv=none; b=BAoLxcV7X21pj0k3kNopESLgFdLG0ItlHo3OIGzZbn00LEINCniO5km8Ioq1BBnfsT9X03oYE0dTsG009z09Y0GKUlktriqWeIaO8QKZ/ksI39m//Ux806bZ0tFigoFPmnAf0DOtr6//wvXKPumBlCaop/NvvUMd4ChvVoUNOYU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785152457; c=relaxed/simple; bh=dkcyeYlpbqXfiXPW8nt4a4AviN/Rwwx9C6B6dwD2Nu0=; h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID: MIME-Version:Content-Type; b=KYlHAC/ko6Lm+XmEufEqQI3JO5Jibypbn4C7Xfh4f4medJqkaTx7gwK2e5UBiILyo3YtkxPl1GLH7Ab/6juXtdcEyfX3+5By5uHzPYJYm1y+L8xg1WiRTu3m4W7Dq5ouga4vSCBkyhh85NHTPTbzS8BlXT/UYoiKZIwoB2t4GqQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=BLUxpNJa; arc=none smtp.client-ip=192.198.163.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="BLUxpNJa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1785152456; x=1816688456; h=from:to:cc:subject:in-reply-to:references:date: message-id:mime-version; bh=dkcyeYlpbqXfiXPW8nt4a4AviN/Rwwx9C6B6dwD2Nu0=; b=BLUxpNJaEuZO6+559GSHiOmCRxCD0F/2l/f1Bl6wBdEXigWTW26c9YiU MCDu0iuooFuhDOB6StxWJHLMgAwlba2N9BT5UA5sLCxyv16Ob7ihJZ39M Fx2y58S4EEzxNsU+8+V7muYbHmbnxNmAnXniXHuWjpIIg5uHVFhH1p2gv DzMZAhUQ3XkK7LYhtUw8VV0TT/1SepFitxBI4lr+wdRtDTzufl7SpzHgN J33fHTaNCRJDEbq+oQ1M4DEawu4/7zB61MgP1diokUwtuI75Q4bwrASkZ iLrnTFpynu2BwlZIYesCgN0SbIB6oejG3JVUWZnG1R63XWzSHTOLh3o7p A==; X-CSE-ConnectionGUID: NKUJ1ixYS4ilRMvcaqp+LA== X-CSE-MsgGUID: UO0RRIMIRt2O3kRGnlsKkw== X-IronPort-AV: E=McAfee;i="6800,10657,11857"; a="97092054" X-IronPort-AV: E=Sophos;i="6.25,188,1779174000"; d="scan'208";a="97092054" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jul 2026 04:40:55 -0700 X-CSE-ConnectionGUID: WTBVrY9lTkuwZr3ZEnOi7w== X-CSE-MsgGUID: bXzv2btsRDi0IK1xtxH7xg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,188,1779174000"; d="scan'208";a="283909656" Received: from rvuia-mobl.ger.corp.intel.com (HELO localhost) ([10.245.245.197]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jul 2026 04:40:50 -0700 From: Jani Nikula To: Pengpeng Hou , Douglas Anderson Cc: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Pengpeng Hou Subject: Re: [PATCH v2] drm/bridge: ps8640: propagate AUX transfer register errors In-Reply-To: <20260723103509.2-ps8640-v2-pengpeng@iscas.ac.cn> Organization: Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs Bertel Jungin Aukio 5, 02600 Espoo, Finland References: <20260723103509.2-ps8640-v2-pengpeng@iscas.ac.cn> Date: Mon, 27 Jul 2026 14:40:48 +0300 Message-ID: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain On Thu, 23 Jul 2026, Pengpeng Hou wrote: > ps8640_aux_transfer_msg() programs the AUX address registers, starts the > AUX transfer, waits for SWAUX_SEND to clear, and reads the AUX status > register. Several of those regmap operations have return values, but the > function only checks a stale ret after the status read. > > Propagate failures from the address write, transfer start, completion > poll, and status read. This avoids returning a transfer length when the > bridge register transaction or AUX completion wait failed. > > Fixes: 13afcdd7277e ("drm/bridge: parade-ps8640: Add support for AUX channel") > Signed-off-by: Pengpeng Hou > --- > Changes since v1: https://lore.kernel.org/all/20260623060635.16064-1-pengpeng@iscas.ac.cn/ > - include the AUX address and length in the address-write diagnostic > - describe poll failures without assuming that every error is a timeout > - add the Fixes tag suggested by Doug > - rebase onto the current drm-misc-next tree > > drivers/gpu/drm/bridge/parade-ps8640.c | 27 +++++++++++++++++++++------ > 1 file changed, 21 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c > index 96332721cb69..56b48f8feab6 100644 > --- a/drivers/gpu/drm/bridge/parade-ps8640.c > +++ b/drivers/gpu/drm/bridge/parade-ps8640.c > @@ -257,8 +257,14 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux, > addr_len[PAGE0_SWAUX_LENGTH - base] = (len == 0) ? SWAUX_NO_PAYLOAD : > ((len - 1) & SWAUX_LENGTH_MASK); > > - regmap_bulk_write(map, PAGE0_SWAUX_ADDR_7_0, addr_len, > - ARRAY_SIZE(addr_len)); > + ret = regmap_bulk_write(map, PAGE0_SWAUX_ADDR_7_0, addr_len, > + ARRAY_SIZE(addr_len)); > + if (ret) { > + DRM_DEV_ERROR(dev, DRM_DEV_ERROR() is deprecated in favour of drm_err() or dev_err(). BR, Jani. > + "failed to write AUX address %#x, len %zu: %d\n", > + msg->address, len, ret); > + return ret; > + } > > if (len && (request == DP_AUX_NATIVE_WRITE || > request == DP_AUX_I2C_WRITE)) { > @@ -274,13 +280,22 @@ static ssize_t ps8640_aux_transfer_msg(struct drm_dp_aux *aux, > } > } > > - regmap_write(map, PAGE0_SWAUX_CTRL, SWAUX_SEND); > + ret = regmap_write(map, PAGE0_SWAUX_CTRL, SWAUX_SEND); > + if (ret) { > + DRM_DEV_ERROR(dev, "failed to start AUX transfer: %d\n", ret); > + return ret; > + } > > /* Zero delay loop because i2c transactions are slow already */ > - regmap_read_poll_timeout(map, PAGE0_SWAUX_CTRL, data, > - !(data & SWAUX_SEND), 0, 50 * 1000); > + ret = regmap_read_poll_timeout(map, PAGE0_SWAUX_CTRL, data, > + !(data & SWAUX_SEND), 0, 50 * 1000); > + if (ret) { > + DRM_DEV_ERROR(dev, "failed to complete AUX transfer: %d\n", > + ret); > + return ret; > + } > > - regmap_read(map, PAGE0_SWAUX_STATUS, &data); > + ret = regmap_read(map, PAGE0_SWAUX_STATUS, &data); > if (ret) { > DRM_DEV_ERROR(dev, "failed to read PAGE0_SWAUX_STATUS: %d\n", > ret); -- Jani Nikula, Intel