From patchwork Mon Apr 7 13:40:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 14040559 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) (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 E637F146593 for ; Mon, 7 Apr 2025 13:40:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033252; cv=none; b=YOdk3/BkDJMBeEswyJ0q/sUV75/Xzl94brPQ2AitkUgVn2Ksy4T/NOwEpfruuWBcBL6E/9dxIN0yklVHxMtvMuvXbOnz/tiaZcG+p/bk/eHHgJzoB0D44i5b2mkwN5HWcyiZaOVsW1D1WeaYfVbEuaJQGI9XcmwExCD1l+V43Ak= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033252; c=relaxed/simple; bh=bpYQ8mhZvRvKhH46GYfeTJ+/3jkKYaiLqIKfaHl3jBQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oRw+DG4v500BPn5J/qzJsvjTpeQcBOtRlWUw0W4elDvZkU4Nx1ZxrZe2LcFl7+xs3p4XeUjzu5LbjGaMdZuIEi7Ifz41CSfc8iC8srYEj3add4cGQgPxSpjqWvyggMP9azUJVQm98xvLElsKtoaQ5GnkSdlkqjI1OfB8kaWFc4A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=ngjdgOvx; arc=none smtp.client-ip=198.175.65.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ngjdgOvx" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744033252; x=1775569252; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bpYQ8mhZvRvKhH46GYfeTJ+/3jkKYaiLqIKfaHl3jBQ=; b=ngjdgOvx0VomVfB4oBDaU96OjDyBKPJm/leV4capy++zCfhvGAzXmpnx V79XuVxhRODexr+CGwwFJwoCMk9e18CnRUhCUBYZVlyA0bgN7wCLzVkfY GxuMM1PrugaRaeH/toFr0CRBM9NJaFGAoo561rNTe/n/U50vEMza+KRnV YBUDV5IUnMP0XVJSsgojoG+/jTzXr0aj9utYT3FTL1Vt3GmNECkoKk7Wh ij2J3X2CJm1vqJBlrzS6ZSMFR9iOslmNly612tRasMEDQaPXJaUgfa4Zm mkJIxoRKvSrV5gsJqr+EIQUAY7tzGFXfeEoUojUzkJk1SSPxZGPFhJMhb w==; X-CSE-ConnectionGUID: ZgiMRx/uQEylkY/bYO4/6A== X-CSE-MsgGUID: HU3AUI8sS8akAPUUdKHfUg== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="45557454" X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="45557454" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:40:51 -0700 X-CSE-ConnectionGUID: vtps7qMRSQ21Ew5nV8JfJQ== X-CSE-MsgGUID: LQFVt++tR4itiqfovhdQOw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="128893990" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.80.153]) by orviesa008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:40:49 -0700 From: Stanislaw Gruszka To: linux-media@vger.kernel.org Cc: Sakari Ailus , Bingbu Cao Subject: [PATCH 1/7] media: intel/ipu6: Use isd name in isys.h Date: Mon, 7 Apr 2025 15:40:31 +0200 Message-Id: <20250407134037.808367-2-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> References: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Rename asd to isd also in isys.h Signed-off-by: Stanislaw Gruszka --- drivers/media/pci/intel/ipu6/isys.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/media/pci/intel/ipu6/isys.h b/drivers/media/pci/intel/ipu6/isys.h index 4bde32f6d767..b6ddadfc374b 100644 --- a/drivers/media/pci/intel/ipu6/isys.h +++ b/drivers/media/pci/intel/ipu6/isys.h @@ -35,8 +35,8 @@ int isys_subdev_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_state *state, int isys_subdev_enum_mbus_code(struct v4l2_subdev *sd, struct v4l2_subdev_state *state, struct v4l2_subdev_mbus_code_enum *code); -int isys_subdev_init(struct isys_subdev *asd, struct device *dev, +int isys_subdev_init(struct isys_subdev *isd, struct device *dev, const struct v4l2_subdev_ops *ops, unsigned int nr_ctrls, unsigned int num_sink_pads, unsigned int num_source_pads); -void isys_subdev_cleanup(struct isys_subdev *asd); +void isys_subdev_cleanup(struct isys_subdev *isd); #endif From patchwork Mon Apr 7 13:40:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 14040560 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 E7902A926 for ; Mon, 7 Apr 2025 13:40:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033256; cv=none; b=YowPslj7dFpryyJlbY/VYsnJlpaqfB2UciVzdYIZe1km33ZS2UdJwvts0ylVvPx43RzzmNaqOtn3vfxezAgD7Pc8JVJEk8ocla+Wg+Gg/1karPD605nTO8XBtYlV8g602WpYLHg7UIYaxvwCkvEgQyZfhUIeYW3OT0f5OTUEK08= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033256; c=relaxed/simple; bh=kZklM5XBP3shmOYboJ0yjA/kauW9qaJUgjMPHIEjPhA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RFcUDFsgY84H0qlYsm+VQlo/jhtYpt4o0WpUEvkDWSjwMHv8qJX1Vtv+Jcy+wAGFvVTlN+sR9nxQGgdZc9v96iWHd/3nq2Cni+UUCYPjRYH8ltUE/tfLtwT685tLoFEwono8gbMcJMvF6lU7F1Z6jHCrzMU5FzKsmu/tmA2R55g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Db/xSm3v; arc=none smtp.client-ip=198.175.65.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Db/xSm3v" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744033255; x=1775569255; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=kZklM5XBP3shmOYboJ0yjA/kauW9qaJUgjMPHIEjPhA=; b=Db/xSm3veLLr6ociwBuh4Sj9pSYp+lt+JewR48YjqhCQnoGGR9HtnLl+ 0Du+zyRsQgY23AQsMNxUywzGpmi/a/hZeX4dBRi5jqy8xbdyN1b/v7PlR d8AyuJhrKe8u1ZPsiQ7IJVqbZw6N8nzgUUOSkE80jAPud8rtwETvZCckb rZH34Erdr32NVfj/cLH5gmtRN/Ofv3T8ljRkR1e9yP0Lvrj5Mu+Y+e5xa 34LUSVSHb/grSLHFdlAeCkNseFZk9u2Tl1C0GgLS1hkfh08Zdbk7x1UNE Wez7pWgjg/cOxjJHfG52/ChSGaRcAXLQX0NW4rkFHX9WFQvYzN3nHrtJ7 A==; X-CSE-ConnectionGUID: tmyQB9IIQxOofVEAvu3Ixw== X-CSE-MsgGUID: wCuvlQIsRgyJRRMPQvch0A== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="45322434" X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="45322434" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:40:54 -0700 X-CSE-ConnectionGUID: FucYe7fjRwuquiIZRP4seg== X-CSE-MsgGUID: xcW3vJQRRQ2S53VOcL+OIg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="127713223" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.80.153]) by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:40:53 -0700 From: Stanislaw Gruszka To: linux-media@vger.kernel.org Cc: Sakari Ailus , Bingbu Cao Subject: [PATCH 2/7] media: intel/ipu6: Remove line_align Date: Mon, 7 Apr 2025 15:40:32 +0200 Message-Id: <20250407134037.808367-3-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> References: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 isys->line_align value is only used in one place and we can just use the proper value directly there. Signed-off-by: Stanislaw Gruszka --- drivers/media/pci/intel/ipu6/ipu6-isys-video.c | 2 +- drivers/media/pci/intel/ipu6/ipu6-isys.c | 1 - drivers/media/pci/intel/ipu6/ipu6-isys.h | 4 ---- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c index e36a21aa9040..3165904d7ebf 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c @@ -241,7 +241,7 @@ static void ipu6_isys_try_fmt_cap(struct ipu6_isys_video *av, u32 type, else *bytesperline = DIV_ROUND_UP(*width * pfmt->bpp, BITS_PER_BYTE); - *bytesperline = ALIGN(*bytesperline, av->isys->line_align); + *bytesperline = ALIGN(*bytesperline, 64); /* * (height + 1) * bytesperline due to a hardware issue: the DMA unit diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.c b/drivers/media/pci/intel/ipu6/ipu6-isys.c index 9b7ff5c440de..2267784b86bc 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys.c @@ -1089,7 +1089,6 @@ static int isys_probe(struct auxiliary_device *auxdev, INIT_LIST_HEAD(&isys->framebuflist); INIT_LIST_HEAD(&isys->framebuflist_fw); - isys->line_align = IPU6_ISYS_2600_MEM_LINE_ALIGN; isys->icache_prefetch = 0; dev_set_drvdata(&auxdev->dev, isys); diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.h b/drivers/media/pci/intel/ipu6/ipu6-isys.h index 610b60e69152..f488e782c26e 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys.h +++ b/drivers/media/pci/intel/ipu6/ipu6-isys.h @@ -29,8 +29,6 @@ struct ipu6_bus_device; IPU6_ISYS_UNISPART_IRQ_CSI0 | \ IPU6_ISYS_UNISPART_IRQ_CSI1) -#define IPU6_ISYS_2600_MEM_LINE_ALIGN 64 - /* * Current message queue configuration. These must be big enough * so that they never gets full. Queues are located in system memory @@ -118,7 +116,6 @@ struct sensor_async_sd { * @streams: streams per firmware stream ID * @fwcom: fw communication layer private pointer * or optional external library private pointer - * @line_align: line alignment in memory * @phy_termcal_val: the termination calibration value, only used for DWC PHY * @need_reset: Isys requires d0i0->i3 transition * @ref_count: total number of callers fw open @@ -140,7 +137,6 @@ struct ipu6_isys { struct ipu6_isys_stream streams[IPU6_ISYS_MAX_STREAMS]; int streams_ref_count[IPU6_ISYS_MAX_STREAMS]; void *fwcom; - unsigned int line_align; u32 phy_termcal_val; bool need_reset; bool icache_prefetch; From patchwork Mon Apr 7 13:40:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 14040561 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 5DC9A187553 for ; Mon, 7 Apr 2025 13:40:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033259; cv=none; b=nYi7+HDWaGuxJymclv2MgoSRmyzcKBK7SkjCR6f2oxw8SWrTYMdEuGBtlbKFR7AlALbmHPD4p4awiZ1mAd5cRmRjZvfg+ia9L5X2qb0hs5d/PQVFGKGFszl6L5IIPjNkcCrCQXk+BglmT6dcauAj40aNsfGDKYr4hLEgc4+lLEk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033259; c=relaxed/simple; bh=w5CeYWw33jr5ftWsNaOxXcVacnKXP3Cem/ZpBM5HjCg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kh8IThwMLskYdGlGr5CkTGw+DzfDD/VogN98iIRhD0ENJ+A6xurkZNW3iKmLZb61KN7GD6SmoZ1KzNRqiEGlN8ERs3EO/V+8BWt8eUNor8PkfNCK1/7ChInIIi1xyv/FnHke2IvppFsmIqJx9CpFf9T+PVJzTmafJlFV/lfGkUg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=EPy7FK2t; arc=none smtp.client-ip=198.175.65.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="EPy7FK2t" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744033258; x=1775569258; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=w5CeYWw33jr5ftWsNaOxXcVacnKXP3Cem/ZpBM5HjCg=; b=EPy7FK2tg5v5VWFD9d9C6rbR1w/q/bfNrqEOsojMYTN7LS9a5yL4ae3W 4EGD5jWnNCzv+jjOuDULkLCn6jLg4WcLdE5J/R9TV5qorI5jBdcp2GNHY vBnqSWLPrqr43w8UB+T44tRo0CEMKQOVpPynagrEKpcZUJtWoWuoQoA7n wK4SqEDzNPsHweQcneCRZ4RJ0ViswhPX0ea2OdHGTXvZG4bIKmq5Zvwoh kg3//+cWm+zQt/Qhn6IxBToZycKlbAZs3yu+BDyRxudnwG8tTS0uH015Y +yDx6V9PXclp1+Ml3niCZim+tl4VOVfNo0tO0aa5cmElG0fV7NgHpZ0bL A==; X-CSE-ConnectionGUID: hWVHDiscQFSs6kaDUUe4Sw== X-CSE-MsgGUID: 8b45es6CRl+fzSlbro/sxQ== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="45322436" X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="45322436" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:40:58 -0700 X-CSE-ConnectionGUID: kWGdlzY7TgGJOrk10YySNw== X-CSE-MsgGUID: /X1btUBrRqmdexJeh9Ci0g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="127713238" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.80.153]) by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:40:57 -0700 From: Stanislaw Gruszka To: linux-media@vger.kernel.org Cc: Sakari Ailus , Bingbu Cao Subject: [PATCH 3/7] media: intel/ipu6: Move common structures definitions to isys.h Date: Mon, 7 Apr 2025 15:40:33 +0200 Message-Id: <20250407134037.808367-4-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> References: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Move some structures that will be reused in ipu7 to isys.h file. Use one header file instead of multiple, since we frequently include most of ipu6-*.h headers in c files anyways. Signed-off-by: Stanislaw Gruszka --- .../media/pci/intel/ipu6/ipu6-isys-queue.c | 1 + .../media/pci/intel/ipu6/ipu6-isys-queue.h | 56 +--------- .../media/pci/intel/ipu6/ipu6-isys-video.h | 59 +--------- drivers/media/pci/intel/ipu6/isys.h | 102 ++++++++++++++++++ 4 files changed, 105 insertions(+), 113 deletions(-) diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c index 5fc52a3b89e6..252097c61d0a 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c @@ -20,6 +20,7 @@ #include "ipu6-dma.h" #include "ipu6-fw-isys.h" #include "ipu6-isys.h" +#include "ipu6-isys-queue.h" #include "ipu6-isys-video.h" static int ipu6_isys_buf_init(struct vb2_buffer *vb) diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.h b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.h index 00666098bbdc..6a95858bfd59 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.h +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.h @@ -4,62 +4,8 @@ #ifndef IPU6_ISYS_QUEUE_H #define IPU6_ISYS_QUEUE_H -#include -#include -#include -#include -#include - -#include - #include "ipu6-fw-isys.h" -#include "ipu6-isys-video.h" - -struct ipu6_isys_stream; - -struct ipu6_isys_queue { - struct vb2_queue vbq; - struct list_head node; - /* - * @lock: serialise access to queued and pre_streamon_queued - */ - spinlock_t lock; - struct list_head active; - struct list_head incoming; - unsigned int fw_output; -}; - -struct ipu6_isys_buffer { - struct list_head head; - atomic_t str2mmio_flag; -}; - -struct ipu6_isys_video_buffer { - struct vb2_v4l2_buffer vb_v4l2; - struct ipu6_isys_buffer ib; - dma_addr_t dma_addr; -}; - -#define IPU6_ISYS_BUFFER_LIST_FL_INCOMING BIT(0) -#define IPU6_ISYS_BUFFER_LIST_FL_ACTIVE BIT(1) -#define IPU6_ISYS_BUFFER_LIST_FL_SET_STATE BIT(2) - -struct ipu6_isys_buffer_list { - struct list_head head; - unsigned int nbufs; -}; - -#define vb2_queue_to_isys_queue(__vb2) \ - container_of(__vb2, struct ipu6_isys_queue, vbq) - -#define ipu6_isys_to_isys_video_buffer(__ib) \ - container_of(__ib, struct ipu6_isys_video_buffer, ib) - -#define vb2_buffer_to_ipu6_isys_video_buffer(__vvb) \ - container_of(__vvb, struct ipu6_isys_video_buffer, vb_v4l2) - -#define ipu6_isys_buffer_to_vb2_buffer(__ib) \ - (&ipu6_isys_to_isys_video_buffer(__ib)->vb_v4l2.vb2_buf) +#include "isys.h" void ipu6_isys_buffer_list_queue(struct ipu6_isys_buffer_list *bl, unsigned long op_flags, diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.h b/drivers/media/pci/intel/ipu6/ipu6-isys-video.h index f4dee6120635..bca8e65dd5ec 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.h +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.h @@ -13,64 +13,7 @@ #include #include -#include "ipu6-isys-queue.h" - -#define IPU6_ISYS_OUTPUT_PINS 11 -#define IPU6_ISYS_MAX_PARALLEL_SOF 2 - -struct file; -struct ipu6_isys; -struct ipu6_isys_csi2; -struct isys_subdev; - -struct ipu6_isys_pixelformat { - u32 pixelformat; - u32 bpp; - u32 bpp_packed; - u32 code; - u32 css_pixelformat; - bool is_meta; -}; - -struct sequence_info { - unsigned int sequence; - u64 timestamp; -}; - -struct output_pin_data { - void (*pin_ready)(struct ipu6_isys_stream *stream, void *_info); - struct ipu6_isys_queue *aq; -}; - -/* - * Align with firmware stream. Each stream represents a CSI virtual channel. - * May map to multiple video devices - */ -struct ipu6_isys_stream { - struct mutex mutex; - struct media_entity *source_entity; - atomic_t sequence; - unsigned int seq_index; - struct sequence_info seq[IPU6_ISYS_MAX_PARALLEL_SOF]; - int stream_source; - int stream_handle; - unsigned int nr_output_pins; - struct isys_subdev *asd; - - int nr_queues; /* Number of capture queues */ - int nr_streaming; - int streaming; /* Has streaming been really started? */ - struct list_head queues; - struct completion stream_open_completion; - struct completion stream_close_completion; - struct completion stream_start_completion; - struct completion stream_stop_completion; - struct ipu6_isys *isys; - - struct output_pin_data output_pins[IPU6_ISYS_OUTPUT_PINS]; - int error; - u8 vc; -}; +#include "isys.h" struct video_stream_watermark { u32 width; diff --git a/drivers/media/pci/intel/ipu6/isys.h b/drivers/media/pci/intel/ipu6/isys.h index b6ddadfc374b..f2a49694a050 100644 --- a/drivers/media/pci/intel/ipu6/isys.h +++ b/drivers/media/pci/intel/ipu6/isys.h @@ -4,10 +4,14 @@ #ifndef ISYS_H #define ISYS_H +#include #include +#include +#include #include #include +#include struct isys_subdev { struct v4l2_subdev sd; @@ -20,6 +24,104 @@ struct isys_subdev { #define to_isys_subdev(__sd) container_of(__sd, struct isys_subdev, sd) +struct ipu6_isys_queue { + struct vb2_queue vbq; + struct list_head node; + /* + * @lock: serialise access to queued and pre_streamon_queued + */ + spinlock_t lock; + struct list_head active; + struct list_head incoming; + unsigned int fw_output; +}; + +struct ipu6_isys_buffer { + struct list_head head; + atomic_t str2mmio_flag; +}; + +struct ipu6_isys_video_buffer { + struct vb2_v4l2_buffer vb_v4l2; + struct ipu6_isys_buffer ib; + dma_addr_t dma_addr; +}; + +struct ipu6_isys_buffer_list { + struct list_head head; + unsigned int nbufs; +}; + +#define vb2_queue_to_isys_queue(__vb2) \ + container_of(__vb2, struct ipu6_isys_queue, vbq) + +#define vb2_buffer_to_ipu6_isys_video_buffer(__vvb) \ + container_of(__vvb, struct ipu6_isys_video_buffer, vb_v4l2) + +#define ipu6_isys_to_isys_video_buffer(__ib) \ + container_of(__ib, struct ipu6_isys_video_buffer, ib) + +#define ipu6_isys_buffer_to_vb2_buffer(__ib) \ + (&ipu6_isys_to_isys_video_buffer(__ib)->vb_v4l2.vb2_buf) + +#define IPU6_ISYS_BUFFER_LIST_FL_INCOMING BIT(0) +#define IPU6_ISYS_BUFFER_LIST_FL_ACTIVE BIT(1) +#define IPU6_ISYS_BUFFER_LIST_FL_SET_STATE BIT(2) + +#define IPU6_ISYS_OUTPUT_PINS 11 +#define IPU6_ISYS_MAX_PARALLEL_SOF 2 + +struct ipu6_isys_pixelformat { + u32 pixelformat; + u32 bpp; + u32 bpp_packed; + u32 code; + u32 css_pixelformat; + bool is_meta; +}; + +struct isys_sequence_info { + unsigned int sequence; + u64 timestamp; +}; + +struct ipu6_isys_stream; + +struct isys_output_pin_data { + void (*pin_ready)(struct ipu6_isys_stream *stream, void *_info); + struct ipu6_isys_queue *aq; +}; + +/* + * Align with firmware stream. Each stream represents a CSI virtual channel. + * May map to multiple video devices + */ +struct ipu6_isys_stream { + struct mutex mutex; + struct media_entity *source_entity; + atomic_t sequence; + unsigned int seq_index; + struct isys_sequence_info seq[IPU6_ISYS_MAX_PARALLEL_SOF]; + int stream_source; + int stream_handle; + unsigned int nr_output_pins; + struct isys_subdev *asd; + + int nr_queues; /* Number of capture queues */ + int nr_streaming; + int streaming; /* Has streaming been really started? */ + struct list_head queues; + struct completion stream_open_completion; + struct completion stream_close_completion; + struct completion stream_start_completion; + struct completion stream_stop_completion; + struct ipu6_isys *isys; + + struct isys_output_pin_data output_pins[IPU6_ISYS_OUTPUT_PINS]; + int error; + u8 vc; +}; + int isys_get_stream_pad_fmt(struct v4l2_subdev *sd, u32 pad, u32 stream, struct v4l2_mbus_framefmt *format); int isys_get_stream_pad_crop(struct v4l2_subdev *sd, u32 pad, u32 stream, From patchwork Mon Apr 7 13:40:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 14040562 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) (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 D6EFC1B0402 for ; Mon, 7 Apr 2025 13:41:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.11 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033266; cv=none; b=KlmeRLFTfwH/8HaYRyuOE+hPkah/llRBxQVOKfnoYWYXKJXgAryq2HsfpRCHSu+eob/JzuYLuusVawMJb38K6EZV4owpaXchMekUriWHlf3u9WPXJ0rlZPfurzW7+nNIp/kf/L8chCpuWhLinrGN0XSuY2PFYwJNiYRp/orF7BA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033266; c=relaxed/simple; bh=NWu96nXrmLnbEJYPNMftOWkXLN/hBWu1JXgVDEKZulE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=XHXN+aEQ9yzcD1p7080Hh+KA9GcY86aND9RTLtIPVyFfpfnupdTaKqcGg5dlHsKCSdssPH0CsJhUQvrJPyafOp2ihpp1wV0R7zNph8O/vgHLNiH1yNxUZ0bvruT00cP5iID/7zN4EwpdJmrx5EJR7LZG65f1Jwd2MOurJ7Wy7uM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=DKSUO3Ib; arc=none smtp.client-ip=198.175.65.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="DKSUO3Ib" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744033263; x=1775569263; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=NWu96nXrmLnbEJYPNMftOWkXLN/hBWu1JXgVDEKZulE=; b=DKSUO3Ibils4NdcwCmfZx2VwftMzpBsKTRcQPRqhNlXTj3n5vd040Ctx ar46IZ5oMsVcfm5Dr26U+nDrDOQ3rmbmNMiehp+pUEfUSQiWZIQeLFnZC UtNhiJUH/Fy3FoOByGXOzWtfBw2ZA1hhYF8c+7froEaQwgUP7XXAzef9O 7spu8AdITC0hbeK5/girftLOJWYHpjMk51TPQQlMKvfFv0s5EQxCzpmht GGejGzWG2OM+cseofZSxQyOdbIsHHVfX/p1znCAnEsk0ACgGbRemjjJ7o PB4knpZoIeVu+q2k2ehW1d2WuNV7PO4yF4mgF8yAqoJZPErlgRuNkkPkV A==; X-CSE-ConnectionGUID: ++tm638hRlq+k/Nk0Bv4PQ== X-CSE-MsgGUID: 57akHz8fSOyR1sicbVHQlg== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="55607456" X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="55607456" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:41:02 -0700 X-CSE-ConnectionGUID: OEi2r6PnSIK586EpPG9/TQ== X-CSE-MsgGUID: DV+g4FyJTIawG0nQ610A7Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="128293107" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.80.153]) by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:41:00 -0700 From: Stanislaw Gruszka To: linux-media@vger.kernel.org Cc: Sakari Ailus , Bingbu Cao Subject: [PATCH 4/7] media: intel/ipu6: Rename common structures Date: Mon, 7 Apr 2025 15:40:34 +0200 Message-Id: <20250407134037.808367-5-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> References: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Rename common structures and defines with isys_ prefix. This makes clean distinction of what data/code belongs to each part of the driver. Signed-off-by: Stanislaw Gruszka --- drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c | 4 +- drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h | 6 +- .../media/pci/intel/ipu6/ipu6-isys-queue.c | 155 +++++++++--------- .../media/pci/intel/ipu6/ipu6-isys-queue.h | 10 +- .../media/pci/intel/ipu6/ipu6-isys-video.c | 52 +++--- .../media/pci/intel/ipu6/ipu6-isys-video.h | 18 +- drivers/media/pci/intel/ipu6/ipu6-isys.c | 14 +- drivers/media/pci/intel/ipu6/ipu6-isys.h | 4 +- drivers/media/pci/intel/ipu6/isys.h | 48 +++--- 9 files changed, 155 insertions(+), 156 deletions(-) diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c index 5c4baaffa092..ddd19cde69be 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c @@ -556,7 +556,7 @@ int ipu6_isys_csi2_init(struct ipu6_isys_csi2 *csi2, return ret; } -void ipu6_isys_csi2_sof_event_by_stream(struct ipu6_isys_stream *stream) +void ipu6_isys_csi2_sof_event_by_stream(struct isys_stream *stream) { struct video_device *vdev = stream->asd->sd.devnode; struct device *dev = &stream->isys->adev->auxdev.dev; @@ -572,7 +572,7 @@ void ipu6_isys_csi2_sof_event_by_stream(struct ipu6_isys_stream *stream) csi2->port, ev.u.frame_sync.frame_sequence, stream->vc); } -void ipu6_isys_csi2_eof_event_by_stream(struct ipu6_isys_stream *stream) +void ipu6_isys_csi2_eof_event_by_stream(struct isys_stream *stream) { struct device *dev = &stream->isys->adev->auxdev.dev; struct ipu6_isys_csi2 *csi2 = to_ipu6_isys_csi2(stream->asd); diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h index 7deafead66cf..8b39c139a803 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.h @@ -16,7 +16,7 @@ struct v4l2_mbus_frame_desc_entry; struct ipu6_isys_video; struct ipu6_isys; -struct ipu6_isys_stream; +struct isys_stream; #define NR_OF_CSI2_VC 16 #define INVALID_VC_ID -1 @@ -65,8 +65,8 @@ s64 ipu6_isys_csi2_get_link_freq(struct ipu6_isys_csi2 *csi2); int ipu6_isys_csi2_init(struct ipu6_isys_csi2 *csi2, struct ipu6_isys *isys, void __iomem *base, unsigned int index); void ipu6_isys_csi2_cleanup(struct ipu6_isys_csi2 *csi2); -void ipu6_isys_csi2_sof_event_by_stream(struct ipu6_isys_stream *stream); -void ipu6_isys_csi2_eof_event_by_stream(struct ipu6_isys_stream *stream); +void ipu6_isys_csi2_sof_event_by_stream(struct isys_stream *stream); +void ipu6_isys_csi2_eof_event_by_stream(struct isys_stream *stream); void ipu6_isys_register_errors(struct ipu6_isys_csi2 *csi2); void ipu6_isys_csi2_error(struct ipu6_isys_csi2 *csi2); int ipu6_isys_csi2_get_remote_desc(u32 source_stream, diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c index 252097c61d0a..d9457176f32f 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c @@ -28,8 +28,8 @@ static int ipu6_isys_buf_init(struct vb2_buffer *vb) struct ipu6_isys *isys = vb2_get_drv_priv(vb->vb2_queue); struct sg_table *sg = vb2_dma_sg_plane_desc(vb, 0); struct vb2_v4l2_buffer *vvb = to_vb2_v4l2_buffer(vb); - struct ipu6_isys_video_buffer *ivb = - vb2_buffer_to_ipu6_isys_video_buffer(vvb); + struct isys_video_buffer *ivb = + vb2_buffer_to_isys_video_buffer(vvb); int ret; ret = ipu6_dma_map_sgtable(isys->adev, sg, DMA_TO_DEVICE, 0); @@ -46,8 +46,8 @@ static void ipu6_isys_buf_cleanup(struct vb2_buffer *vb) struct ipu6_isys *isys = vb2_get_drv_priv(vb->vb2_queue); struct sg_table *sg = vb2_dma_sg_plane_desc(vb, 0); struct vb2_v4l2_buffer *vvb = to_vb2_v4l2_buffer(vb); - struct ipu6_isys_video_buffer *ivb = - vb2_buffer_to_ipu6_isys_video_buffer(vvb); + struct isys_video_buffer *ivb = + vb2_buffer_to_isys_video_buffer(vvb); ivb->dma_addr = 0; ipu6_dma_unmap_sgtable(isys->adev, sg, DMA_TO_DEVICE, 0); @@ -57,7 +57,7 @@ static int ipu6_isys_queue_setup(struct vb2_queue *q, unsigned int *num_buffers, unsigned int *num_planes, unsigned int sizes[], struct device *alloc_devs[]) { - struct ipu6_isys_queue *aq = vb2_queue_to_isys_queue(q); + struct isys_queue *aq = vb2_queue_to_isys_queue(q); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); struct device *dev = &av->isys->adev->auxdev.dev; u32 size = ipu6_isys_get_data_size(av); @@ -78,7 +78,7 @@ static int ipu6_isys_queue_setup(struct vb2_queue *q, unsigned int *num_buffers, static int ipu6_isys_buf_prepare(struct vb2_buffer *vb) { - struct ipu6_isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); + struct isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); struct device *dev = &av->isys->adev->auxdev.dev; u32 bytesperline = ipu6_isys_get_bytes_per_line(av); @@ -100,11 +100,11 @@ static int ipu6_isys_buf_prepare(struct vb2_buffer *vb) * Queue a buffer list back to incoming or active queues. The buffers * are removed from the buffer list. */ -void ipu6_isys_buffer_list_queue(struct ipu6_isys_buffer_list *bl, +void ipu6_isys_buffer_list_queue(struct isys_buffer_list *bl, unsigned long op_flags, enum vb2_buffer_state state) { - struct ipu6_isys_buffer *ib, *ib_safe; + struct isys_buffer *ib, *ib_safe; unsigned long flags; bool first = true; @@ -112,13 +112,13 @@ void ipu6_isys_buffer_list_queue(struct ipu6_isys_buffer_list *bl, return; WARN_ON_ONCE(!bl->nbufs); - WARN_ON_ONCE(op_flags & IPU6_ISYS_BUFFER_LIST_FL_ACTIVE && - op_flags & IPU6_ISYS_BUFFER_LIST_FL_INCOMING); + WARN_ON_ONCE(op_flags & ISYS_BUFFER_LIST_ACTIVE && + op_flags & ISYS_BUFFER_LIST_INCOMING); list_for_each_entry_safe(ib, ib_safe, &bl->head, head) { struct ipu6_isys_video *av; - struct vb2_buffer *vb = ipu6_isys_buffer_to_vb2_buffer(ib); - struct ipu6_isys_queue *aq = + struct vb2_buffer *vb = isys_buffer_to_vb2_buffer(ib); + struct isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); struct device *dev; @@ -126,13 +126,13 @@ void ipu6_isys_buffer_list_queue(struct ipu6_isys_buffer_list *bl, dev = &av->isys->adev->auxdev.dev; spin_lock_irqsave(&aq->lock, flags); list_del(&ib->head); - if (op_flags & IPU6_ISYS_BUFFER_LIST_FL_ACTIVE) + if (op_flags & ISYS_BUFFER_LIST_ACTIVE) list_add(&ib->head, &aq->active); - else if (op_flags & IPU6_ISYS_BUFFER_LIST_FL_INCOMING) + else if (op_flags & ISYS_BUFFER_LIST_INCOMING) list_add_tail(&ib->head, &aq->incoming); spin_unlock_irqrestore(&aq->lock, flags); - if (op_flags & IPU6_ISYS_BUFFER_LIST_FL_SET_STATE) + if (op_flags & ISYS_BUFFER_LIST_SET_STATE) vb2_buffer_done(vb, state); if (first) { @@ -153,22 +153,22 @@ void ipu6_isys_buffer_list_queue(struct ipu6_isys_buffer_list *bl, * have been queued to firmware and the *firmware streamon fails for a * reason or another. */ -static void flush_firmware_streamon_fail(struct ipu6_isys_stream *stream) +static void flush_firmware_streamon_fail(struct isys_stream *stream) { struct device *dev = &stream->isys->adev->auxdev.dev; - struct ipu6_isys_queue *aq; + struct isys_queue *aq; unsigned long flags; lockdep_assert_held(&stream->mutex); list_for_each_entry(aq, &stream->queues, node) { struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); - struct ipu6_isys_buffer *ib, *ib_safe; + struct isys_buffer *ib, *ib_safe; spin_lock_irqsave(&aq->lock, flags); list_for_each_entry_safe(ib, ib_safe, &aq->active, head) { struct vb2_buffer *vb = - ipu6_isys_buffer_to_vb2_buffer(ib); + isys_buffer_to_vb2_buffer(ib); list_del(&ib->head); if (av->streaming) { @@ -182,7 +182,7 @@ static void flush_firmware_streamon_fail(struct ipu6_isys_stream *stream) /* Queue not yet streaming, return to user. */ dev_dbg(dev, "%s: return %u back to videobuf2\n", av->vdev.name, vb->index); - vb2_buffer_done(ipu6_isys_buffer_to_vb2_buffer(ib), + vb2_buffer_done(isys_buffer_to_vb2_buffer(ib), VB2_BUF_STATE_QUEUED); } spin_unlock_irqrestore(&aq->lock, flags); @@ -194,19 +194,19 @@ static void flush_firmware_streamon_fail(struct ipu6_isys_stream *stream) * that contains one entry from each video buffer queue. If a buffer can't be * obtained from every queue, the buffers are returned back to the queue. */ -static int buffer_list_get(struct ipu6_isys_stream *stream, - struct ipu6_isys_buffer_list *bl) +static int buffer_list_get(struct isys_stream *stream, + struct isys_buffer_list *bl) { struct device *dev = &stream->isys->adev->auxdev.dev; - struct ipu6_isys_queue *aq; + struct isys_queue *aq; unsigned long flags; - unsigned long buf_flag = IPU6_ISYS_BUFFER_LIST_FL_INCOMING; + unsigned long buf_flag = ISYS_BUFFER_LIST_INCOMING; bl->nbufs = 0; INIT_LIST_HEAD(&bl->head); list_for_each_entry(aq, &stream->queues, node) { - struct ipu6_isys_buffer *ib; + struct isys_buffer *ib; spin_lock_irqsave(&aq->lock, flags); if (list_empty(&aq->incoming)) { @@ -217,11 +217,11 @@ static int buffer_list_get(struct ipu6_isys_stream *stream, } ib = list_last_entry(&aq->incoming, - struct ipu6_isys_buffer, head); + struct isys_buffer, head); dev_dbg(dev, "buffer: %s: buffer %u\n", ipu6_isys_queue_to_video(aq)->vdev.name, - ipu6_isys_buffer_to_vb2_buffer(ib)->index); + isys_buffer_to_vb2_buffer(ib)->index); list_del(&ib->head); list_add(&ib->head, &bl->head); spin_unlock_irqrestore(&aq->lock, flags); @@ -238,10 +238,10 @@ static void ipu6_isys_buf_to_fw_frame_buf_pin(struct vb2_buffer *vb, struct ipu6_fw_isys_frame_buff_set_abi *set) { - struct ipu6_isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); + struct isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); struct vb2_v4l2_buffer *vvb = to_vb2_v4l2_buffer(vb); - struct ipu6_isys_video_buffer *ivb = - vb2_buffer_to_ipu6_isys_video_buffer(vvb); + struct isys_video_buffer *ivb = + vb2_buffer_to_isys_video_buffer(vvb); set->output_pins[aq->fw_output].addr = ivb->dma_addr; set->output_pins[aq->fw_output].out_buf_id = vb->index + 1; @@ -254,10 +254,10 @@ ipu6_isys_buf_to_fw_frame_buf_pin(struct vb2_buffer *vb, #define IPU6_ISYS_FRAME_NUM_THRESHOLD (30) void ipu6_isys_buf_to_fw_frame_buf(struct ipu6_fw_isys_frame_buff_set_abi *set, - struct ipu6_isys_stream *stream, - struct ipu6_isys_buffer_list *bl) + struct isys_stream *stream, + struct isys_buffer_list *bl) { - struct ipu6_isys_buffer *ib; + struct isys_buffer *ib; WARN_ON(!bl->nbufs); @@ -280,7 +280,7 @@ ipu6_isys_buf_to_fw_frame_buf(struct ipu6_fw_isys_frame_buff_set_abi *set, } list_for_each_entry(ib, &bl->head, head) { - struct vb2_buffer *vb = ipu6_isys_buffer_to_vb2_buffer(ib); + struct vb2_buffer *vb = isys_buffer_to_vb2_buffer(ib); ipu6_isys_buf_to_fw_frame_buf_pin(vb, set); } @@ -288,11 +288,11 @@ ipu6_isys_buf_to_fw_frame_buf(struct ipu6_fw_isys_frame_buff_set_abi *set, /* Start streaming for real. The buffer list must be available. */ static int ipu6_isys_stream_start(struct ipu6_isys_video *av, - struct ipu6_isys_buffer_list *bl, bool error) + struct isys_buffer_list *bl, bool error) { - struct ipu6_isys_stream *stream = av->stream; + struct isys_stream *stream = av->stream; struct device *dev = &stream->isys->adev->auxdev.dev; - struct ipu6_isys_buffer_list __bl; + struct isys_buffer_list __bl; int ret; mutex_lock(&stream->isys->stream_mutex); @@ -322,7 +322,7 @@ static int ipu6_isys_stream_start(struct ipu6_isys_video *av, ipu6_isys_buf_to_fw_frame_buf(buf, stream, bl); ipu6_fw_isys_dump_frame_buff_set(dev, buf, stream->nr_output_pins); - ipu6_isys_buffer_list_queue(bl, IPU6_ISYS_BUFFER_LIST_FL_ACTIVE, + ipu6_isys_buffer_list_queue(bl, ISYS_BUFFER_LIST_ACTIVE, 0); ret = ipu6_fw_isys_complex_cmd(stream->isys, stream->stream_handle, buf, @@ -335,9 +335,9 @@ static int ipu6_isys_stream_start(struct ipu6_isys_video *av, out_requeue: if (bl && bl->nbufs) ipu6_isys_buffer_list_queue(bl, - IPU6_ISYS_BUFFER_LIST_FL_INCOMING | + ISYS_BUFFER_LIST_INCOMING | (error ? - IPU6_ISYS_BUFFER_LIST_FL_SET_STATE : + ISYS_BUFFER_LIST_SET_STATE : 0), error ? VB2_BUF_STATE_ERROR : VB2_BUF_STATE_QUEUED); flush_firmware_streamon_fail(stream); @@ -347,18 +347,18 @@ static int ipu6_isys_stream_start(struct ipu6_isys_video *av, static void buf_queue(struct vb2_buffer *vb) { - struct ipu6_isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); + struct isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); struct vb2_v4l2_buffer *vvb = to_vb2_v4l2_buffer(vb); - struct ipu6_isys_video_buffer *ivb = - vb2_buffer_to_ipu6_isys_video_buffer(vvb); - struct ipu6_isys_buffer *ib = &ivb->ib; + struct isys_video_buffer *ivb = + vb2_buffer_to_isys_video_buffer(vvb); + struct isys_buffer *ib = &ivb->ib; struct device *dev = &av->isys->adev->auxdev.dev; struct media_pipeline *media_pipe = media_entity_pipeline(&av->vdev.entity); struct ipu6_fw_isys_frame_buff_set_abi *buf = NULL; - struct ipu6_isys_stream *stream = av->stream; - struct ipu6_isys_buffer_list bl; + struct isys_stream *stream = av->stream; + struct isys_buffer_list bl; struct isys_fw_msgs *msg; unsigned long flags; dma_addr_t dma; @@ -420,7 +420,7 @@ static void buf_queue(struct vb2_buffer *vb) * firmware since we could get a buffer event back before we * have queued them ourselves to the active queue. */ - ipu6_isys_buffer_list_queue(&bl, IPU6_ISYS_BUFFER_LIST_FL_ACTIVE, 0); + ipu6_isys_buffer_list_queue(&bl, ISYS_BUFFER_LIST_ACTIVE, 0); ret = ipu6_fw_isys_complex_cmd(stream->isys, stream->stream_handle, buf, msg->dma_addr, sizeof(*buf), @@ -432,7 +432,7 @@ static void buf_queue(struct vb2_buffer *vb) mutex_unlock(&stream->mutex); } -static int ipu6_isys_link_fmt_validate(struct ipu6_isys_queue *aq) +static int ipu6_isys_link_fmt_validate(struct isys_queue *aq) { struct v4l2_mbus_framefmt format; struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); @@ -476,11 +476,11 @@ static int ipu6_isys_link_fmt_validate(struct ipu6_isys_queue *aq) return 0; } -static void return_buffers(struct ipu6_isys_queue *aq, +static void return_buffers(struct isys_queue *aq, enum vb2_buffer_state state) { struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); - struct ipu6_isys_buffer *ib; + struct isys_buffer *ib; bool need_reset = false; unsigned long flags; @@ -488,9 +488,9 @@ static void return_buffers(struct ipu6_isys_queue *aq, while (!list_empty(&aq->incoming)) { struct vb2_buffer *vb; - ib = list_first_entry(&aq->incoming, struct ipu6_isys_buffer, + ib = list_first_entry(&aq->incoming, struct isys_buffer, head); - vb = ipu6_isys_buffer_to_vb2_buffer(ib); + vb = isys_buffer_to_vb2_buffer(ib); list_del(&ib->head); spin_unlock_irqrestore(&aq->lock, flags); @@ -507,9 +507,8 @@ static void return_buffers(struct ipu6_isys_queue *aq, while (!list_empty(&aq->active)) { struct vb2_buffer *vb; - ib = list_first_entry(&aq->active, struct ipu6_isys_buffer, - head); - vb = ipu6_isys_buffer_to_vb2_buffer(ib); + ib = list_first_entry(&aq->active, struct isys_buffer, head); + vb = isys_buffer_to_vb2_buffer(ib); list_del(&ib->head); spin_unlock_irqrestore(&aq->lock, flags); @@ -538,13 +537,13 @@ static void ipu6_isys_stream_cleanup(struct ipu6_isys_video *av) static int start_streaming(struct vb2_queue *q, unsigned int count) { - struct ipu6_isys_queue *aq = vb2_queue_to_isys_queue(q); + struct isys_queue *aq = vb2_queue_to_isys_queue(q); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); struct device *dev = &av->isys->adev->auxdev.dev; - const struct ipu6_isys_pixelformat *pfmt = + const struct isys_pixelformat *pfmt = ipu6_isys_get_isys_format(ipu6_isys_get_format(av), 0); - struct ipu6_isys_buffer_list __bl, *bl = NULL; - struct ipu6_isys_stream *stream; + struct isys_buffer_list __bl, *bl = NULL; + struct isys_stream *stream; struct media_entity *source_entity = NULL; int nr_queues, ret; @@ -626,9 +625,9 @@ static int start_streaming(struct vb2_queue *q, unsigned int count) static void stop_streaming(struct vb2_queue *q) { - struct ipu6_isys_queue *aq = vb2_queue_to_isys_queue(q); + struct isys_queue *aq = vb2_queue_to_isys_queue(q); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); - struct ipu6_isys_stream *stream = av->stream; + struct isys_stream *stream = av->stream; mutex_lock(&stream->mutex); @@ -652,7 +651,7 @@ static void stop_streaming(struct vb2_queue *q) } static unsigned int -get_sof_sequence_by_timestamp(struct ipu6_isys_stream *stream, u64 time) +get_sof_sequence_by_timestamp(struct isys_stream *stream, u64 time) { struct ipu6_isys *isys = stream->isys; struct device *dev = &isys->adev->auxdev.dev; @@ -665,14 +664,14 @@ get_sof_sequence_by_timestamp(struct ipu6_isys_stream *stream, u64 time) if (time == 0) return atomic_read(&stream->sequence) - 1; - for (i = 0; i < IPU6_ISYS_MAX_PARALLEL_SOF; i++) + for (i = 0; i < ISYS_MAX_PARALLEL_SOF; i++) if (time == stream->seq[i].timestamp) { dev_dbg(dev, "sof: using seq nr %u for ts %llu\n", stream->seq[i].sequence, time); return stream->seq[i].sequence; } - for (i = 0; i < IPU6_ISYS_MAX_PARALLEL_SOF; i++) + for (i = 0; i < ISYS_MAX_PARALLEL_SOF; i++) dev_dbg(dev, "sof: sequence %u, timestamp value %llu\n", stream->seq[i].sequence, stream->seq[i].timestamp); @@ -695,14 +694,14 @@ static u64 get_sof_ns_delta(struct ipu6_isys_video *av, u64 timestamp) } static void -ipu6_isys_buf_calc_sequence_time(struct ipu6_isys_buffer *ib, u64 time) +ipu6_isys_buf_calc_sequence_time(struct isys_buffer *ib, u64 time) { - struct vb2_buffer *vb = ipu6_isys_buffer_to_vb2_buffer(ib); + struct vb2_buffer *vb = isys_buffer_to_vb2_buffer(ib); struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); - struct ipu6_isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); + struct isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); struct device *dev = &av->isys->adev->auxdev.dev; - struct ipu6_isys_stream *stream = av->stream; + struct isys_stream *stream = av->stream; u64 ns; u32 sequence; @@ -718,9 +717,9 @@ ipu6_isys_buf_calc_sequence_time(struct ipu6_isys_buffer *ib, u64 time) vbuf->vb2_buf.timestamp); } -static void ipu6_isys_queue_buf_done(struct ipu6_isys_buffer *ib) +static void ipu6_isys_queue_buf_done(struct isys_buffer *ib) { - struct vb2_buffer *vb = ipu6_isys_buffer_to_vb2_buffer(ib); + struct vb2_buffer *vb = isys_buffer_to_vb2_buffer(ib); if (atomic_read(&ib->str2mmio_flag)) { vb2_buffer_done(vb, VB2_BUF_STATE_ERROR); @@ -735,13 +734,13 @@ static void ipu6_isys_queue_buf_done(struct ipu6_isys_buffer *ib) } static void -ipu6_stream_buf_ready(struct ipu6_isys_stream *stream, u8 pin_id, u32 pin_addr, +ipu6_stream_buf_ready(struct isys_stream *stream, u8 pin_id, u32 pin_addr, u64 time, bool error_check) { - struct ipu6_isys_queue *aq = stream->output_pins[pin_id].aq; + struct isys_queue *aq = stream->output_pins[pin_id].aq; struct ipu6_isys *isys = stream->isys; struct device *dev = &isys->adev->auxdev.dev; - struct ipu6_isys_buffer *ib; + struct isys_buffer *ib; struct vb2_buffer *vb; unsigned long flags; bool first = true; @@ -755,13 +754,13 @@ ipu6_stream_buf_ready(struct ipu6_isys_stream *stream, u8 pin_id, u32 pin_addr, } list_for_each_entry_reverse(ib, &aq->active, head) { - struct ipu6_isys_video_buffer *ivb; + struct isys_video_buffer *ivb; struct vb2_v4l2_buffer *vvb; dma_addr_t addr; - vb = ipu6_isys_buffer_to_vb2_buffer(ib); + vb = isys_buffer_to_vb2_buffer(ib); vvb = to_vb2_v4l2_buffer(vb); - ivb = vb2_buffer_to_ipu6_isys_video_buffer(vvb); + ivb = vb2_buffer_to_isys_video_buffer(vvb); addr = ivb->dma_addr; if (pin_addr != addr) { @@ -799,7 +798,7 @@ ipu6_stream_buf_ready(struct ipu6_isys_stream *stream, u8 pin_id, u32 pin_addr, spin_unlock_irqrestore(&aq->lock, flags); } -void ipu6_isys_queue_buf_ready(struct ipu6_isys_stream *stream, void *_info) +void ipu6_isys_queue_buf_ready(struct isys_stream *stream, void *_info) { struct ipu6_fw_isys_resp_info_abi *info = _info; u64 time = (u64)info->timestamp[1] << 32 | info->timestamp[0]; @@ -818,7 +817,7 @@ static const struct vb2_ops ipu6_isys_queue_ops = { .buf_queue = buf_queue, }; -int ipu6_isys_queue_init(struct ipu6_isys_queue *aq) +int ipu6_isys_queue_init(struct isys_queue *aq) { struct ipu6_isys *isys = ipu6_isys_queue_to_video(aq)->isys; struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.h b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.h index 6a95858bfd59..10f0dad9964d 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.h +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.h @@ -7,13 +7,13 @@ #include "ipu6-fw-isys.h" #include "isys.h" -void ipu6_isys_buffer_list_queue(struct ipu6_isys_buffer_list *bl, +void ipu6_isys_buffer_list_queue(struct isys_buffer_list *bl, unsigned long op_flags, enum vb2_buffer_state state); void ipu6_isys_buf_to_fw_frame_buf(struct ipu6_fw_isys_frame_buff_set_abi *set, - struct ipu6_isys_stream *stream, - struct ipu6_isys_buffer_list *bl); -void ipu6_isys_queue_buf_ready(struct ipu6_isys_stream *stream, void *info); -int ipu6_isys_queue_init(struct ipu6_isys_queue *aq); + struct isys_stream *stream, + struct isys_buffer_list *bl); +void ipu6_isys_queue_buf_ready(struct isys_stream *stream, void *info); +int ipu6_isys_queue_init(struct isys_queue *aq); #endif /* IPU6_ISYS_QUEUE_H */ diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c index 3165904d7ebf..71429e83d8aa 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c @@ -36,7 +36,7 @@ #include "ipu6-isys-video.h" #include "ipu6-platform-regs.h" -const struct ipu6_isys_pixelformat ipu6_isys_pfmts[] = { +const struct isys_pixelformat ipu6_isys_pfmts[] = { { V4L2_PIX_FMT_SBGGR12, 16, 12, MEDIA_BUS_FMT_SBGGR12_1X12, IPU6_FW_ISYS_FRAME_FORMAT_RAW16 }, { V4L2_PIX_FMT_SGBRG12, 16, 12, MEDIA_BUS_FMT_SGBRG12_1X12, @@ -112,14 +112,14 @@ static int video_open(struct file *file) return v4l2_fh_open(file); } -const struct ipu6_isys_pixelformat * +const struct isys_pixelformat * ipu6_isys_get_isys_format(u32 pixelformat, u32 type) { - const struct ipu6_isys_pixelformat *default_pfmt = NULL; + const struct isys_pixelformat *default_pfmt = NULL; unsigned int i; for (i = 0; i < ARRAY_SIZE(ipu6_isys_pfmts); i++) { - const struct ipu6_isys_pixelformat *pfmt = &ipu6_isys_pfmts[i]; + const struct isys_pixelformat *pfmt = &ipu6_isys_pfmts[i]; if (type && ((!pfmt->is_meta && type != V4L2_BUF_TYPE_VIDEO_CAPTURE) || @@ -229,7 +229,7 @@ static void ipu6_isys_try_fmt_cap(struct ipu6_isys_video *av, u32 type, u32 *format, u32 *width, u32 *height, u32 *bytesperline, u32 *sizeimage) { - const struct ipu6_isys_pixelformat *pfmt = + const struct isys_pixelformat *pfmt = ipu6_isys_get_isys_format(*format, type); *format = pfmt->pixelformat; @@ -443,10 +443,10 @@ static int ipu6_isys_fw_pin_cfg(struct ipu6_isys_video *av, struct v4l2_subdev *sd = media_entity_to_v4l2_subdev(src_pad->entity); struct ipu6_fw_isys_input_pin_info_abi *input_pin; struct ipu6_fw_isys_output_pin_info_abi *output_pin; - struct ipu6_isys_stream *stream = av->stream; - struct ipu6_isys_queue *aq = &av->aq; + struct isys_stream *stream = av->stream; + struct isys_queue *aq = &av->aq; struct v4l2_mbus_framefmt fmt; - const struct ipu6_isys_pixelformat *pfmt = + const struct isys_pixelformat *pfmt = ipu6_isys_get_isys_format(ipu6_isys_get_format(av), 0); struct v4l2_rect v4l2_crop; struct ipu6_isys *isys = av->isys; @@ -516,14 +516,14 @@ static int ipu6_isys_fw_pin_cfg(struct ipu6_isys_video *av, } static int start_stream_firmware(struct ipu6_isys_video *av, - struct ipu6_isys_buffer_list *bl) + struct isys_buffer_list *bl) { struct ipu6_fw_isys_stream_cfg_data_abi *stream_cfg; struct ipu6_fw_isys_frame_buff_set_abi *buf = NULL; - struct ipu6_isys_stream *stream = av->stream; + struct isys_stream *stream = av->stream; struct device *dev = &av->isys->adev->auxdev.dev; struct isys_fw_msgs *msg = NULL; - struct ipu6_isys_queue *aq; + struct isys_queue *aq; int ret, retout, tout; u16 send_type; @@ -591,7 +591,7 @@ static int start_stream_firmware(struct ipu6_isys_video *av, buf = &msg->fw_msg.frame; ipu6_isys_buf_to_fw_frame_buf(buf, stream, bl); ipu6_isys_buffer_list_queue(bl, - IPU6_ISYS_BUFFER_LIST_FL_ACTIVE, 0); + ISYS_BUFFER_LIST_ACTIVE, 0); } reinit_completion(&stream->stream_start_completion); @@ -659,7 +659,7 @@ static int start_stream_firmware(struct ipu6_isys_video *av, static void stop_streaming_firmware(struct ipu6_isys_video *av) { struct device *dev = &av->isys->adev->auxdev.dev; - struct ipu6_isys_stream *stream = av->stream; + struct isys_stream *stream = av->stream; int ret, tout; reinit_completion(&stream->stream_stop_completion); @@ -684,7 +684,7 @@ static void stop_streaming_firmware(struct ipu6_isys_video *av) static void close_streaming_firmware(struct ipu6_isys_video *av) { - struct ipu6_isys_stream *stream = av->stream; + struct isys_stream *stream = av->stream; struct device *dev = &av->isys->adev->auxdev.dev; int ret, tout; @@ -713,7 +713,7 @@ int ipu6_isys_video_prepare_stream(struct ipu6_isys_video *av, struct media_entity *source_entity, int nr_queues) { - struct ipu6_isys_stream *stream = av->stream; + struct isys_stream *stream = av->stream; struct ipu6_isys_csi2 *csi2; if (WARN_ON(stream->nr_streaming)) @@ -797,7 +797,7 @@ void ipu6_isys_configure_stream_watermark(struct ipu6_isys_video *av, static void calculate_stream_datarate(struct ipu6_isys_video *av) { struct video_stream_watermark *watermark = &av->watermark; - const struct ipu6_isys_pixelformat *pfmt = + const struct isys_pixelformat *pfmt = ipu6_isys_get_isys_format(ipu6_isys_get_format(av), 0); u32 pages_per_line, pb_bytes_per_line, pixels_per_line, bytes_per_line; u64 line_time_ns, stream_data_rate; @@ -841,7 +841,7 @@ void ipu6_isys_update_stream_watermark(struct ipu6_isys_video *av, bool state) update_watermark_setting(av->isys); } -void ipu6_isys_put_stream(struct ipu6_isys_stream *stream) +void ipu6_isys_put_stream(struct isys_stream *stream) { struct device *dev; unsigned int i; @@ -868,10 +868,10 @@ void ipu6_isys_put_stream(struct ipu6_isys_stream *stream) spin_unlock_irqrestore(&stream->isys->streams_lock, flags); } -static struct ipu6_isys_stream * +static struct isys_stream * ipu6_isys_get_stream(struct ipu6_isys_video *av, struct isys_subdev *asd) { - struct ipu6_isys_stream *stream = NULL; + struct isys_stream *stream = NULL; struct ipu6_isys *isys = av->isys; unsigned long flags; unsigned int i; @@ -906,11 +906,11 @@ ipu6_isys_get_stream(struct ipu6_isys_video *av, struct isys_subdev *asd) return stream; } -struct ipu6_isys_stream * +struct isys_stream * ipu6_isys_query_stream_by_handle(struct ipu6_isys *isys, u8 stream_handle) { unsigned long flags; - struct ipu6_isys_stream *stream = NULL; + struct isys_stream *stream = NULL; if (!isys) return NULL; @@ -931,10 +931,10 @@ ipu6_isys_query_stream_by_handle(struct ipu6_isys *isys, u8 stream_handle) return stream; } -struct ipu6_isys_stream * +struct isys_stream * ipu6_isys_query_stream_by_source(struct ipu6_isys *isys, int source, u8 vc) { - struct ipu6_isys_stream *stream = NULL; + struct isys_stream *stream = NULL; unsigned long flags; unsigned int i; @@ -982,10 +982,10 @@ static u64 get_stream_mask_by_pipeline(struct ipu6_isys_video *__av) } int ipu6_isys_video_set_streaming(struct ipu6_isys_video *av, int state, - struct ipu6_isys_buffer_list *bl) + struct isys_buffer_list *bl) { struct v4l2_subdev_krouting *routing; - struct ipu6_isys_stream *stream = av->stream; + struct isys_stream *stream = av->stream; struct v4l2_subdev_state *subdev_state; struct device *dev = &av->isys->adev->auxdev.dev; struct v4l2_subdev *sd; @@ -1167,7 +1167,7 @@ void ipu6_isys_fw_close(struct ipu6_isys *isys) int ipu6_isys_setup_video(struct ipu6_isys_video *av, struct media_entity **source_entity, int *nr_queues) { - const struct ipu6_isys_pixelformat *pfmt = + const struct isys_pixelformat *pfmt = ipu6_isys_get_isys_format(ipu6_isys_get_format(av), 0); struct device *dev = &av->isys->adev->auxdev.dev; struct v4l2_mbus_frame_desc_entry entry; diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.h b/drivers/media/pci/intel/ipu6/ipu6-isys-video.h index bca8e65dd5ec..402607242005 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.h +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.h @@ -28,7 +28,7 @@ struct video_stream_watermark { }; struct ipu6_isys_video { - struct ipu6_isys_queue aq; + struct isys_queue aq; /* Serialise access to other fields in the struct. */ struct mutex mutex; struct media_pad pad; @@ -37,7 +37,7 @@ struct ipu6_isys_video { struct v4l2_meta_format meta_fmt; struct ipu6_isys *isys; struct ipu6_isys_csi2 *csi2; - struct ipu6_isys_stream *stream; + struct isys_stream *stream; unsigned int streaming; struct video_stream_watermark watermark; u32 source_stream; @@ -48,26 +48,26 @@ struct ipu6_isys_video { #define ipu6_isys_queue_to_video(__aq) \ container_of(__aq, struct ipu6_isys_video, aq) -extern const struct ipu6_isys_pixelformat ipu6_isys_pfmts[]; -extern const struct ipu6_isys_pixelformat ipu6_isys_pfmts_packed[]; +extern const struct isys_pixelformat ipu6_isys_pfmts[]; +extern const struct isys_pixelformat ipu6_isys_pfmts_packed[]; -const struct ipu6_isys_pixelformat * +const struct isys_pixelformat * ipu6_isys_get_isys_format(u32 pixelformat, u32 code); int ipu6_isys_video_prepare_stream(struct ipu6_isys_video *av, struct media_entity *source_entity, int nr_queues); int ipu6_isys_video_set_streaming(struct ipu6_isys_video *av, int state, - struct ipu6_isys_buffer_list *bl); + struct isys_buffer_list *bl); int ipu6_isys_fw_open(struct ipu6_isys *isys); void ipu6_isys_fw_close(struct ipu6_isys *isys); int ipu6_isys_setup_video(struct ipu6_isys_video *av, struct media_entity **source_entity, int *nr_queues); int ipu6_isys_video_init(struct ipu6_isys_video *av); void ipu6_isys_video_cleanup(struct ipu6_isys_video *av); -void ipu6_isys_put_stream(struct ipu6_isys_stream *stream); -struct ipu6_isys_stream * +void ipu6_isys_put_stream(struct isys_stream *stream); +struct isys_stream * ipu6_isys_query_stream_by_handle(struct ipu6_isys *isys, u8 stream_handle); -struct ipu6_isys_stream * +struct isys_stream * ipu6_isys_query_stream_by_source(struct ipu6_isys *isys, int source, u8 vc); void ipu6_isys_configure_stream_watermark(struct ipu6_isys_video *av, diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.c b/drivers/media/pci/intel/ipu6/ipu6-isys.c index 2267784b86bc..8ac0cc7574de 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys.c @@ -249,7 +249,7 @@ static int isys_register_video_devices(struct ipu6_isys *isys) i * NR_OF_CSI2_SRC_PADS + j); av->isys = isys; av->aq.vbq.buf_struct_size = - sizeof(struct ipu6_isys_video_buffer); + sizeof(struct isys_video_buffer); ret = ipu6_isys_video_init(av); if (ret) @@ -306,7 +306,7 @@ void isys_setup_hw(struct ipu6_isys *isys) static void ipu6_isys_csi2_isr(struct ipu6_isys_csi2 *csi2) { - struct ipu6_isys_stream *stream; + struct isys_stream *stream; unsigned int i; u32 status; int source; @@ -982,7 +982,7 @@ static int alloc_fw_msg_bufs(struct ipu6_isys *isys, int amount) return -ENOMEM; } -struct isys_fw_msgs *ipu6_get_fw_msg_buf(struct ipu6_isys_stream *stream) +struct isys_fw_msgs *ipu6_get_fw_msg_buf(struct isys_stream *stream) { struct ipu6_isys *isys = stream->isys; struct device *dev = &isys->adev->auxdev.dev; @@ -1221,7 +1221,7 @@ static int isys_isr_one(struct ipu6_bus_device *adev) { struct ipu6_isys *isys = ipu6_bus_get_drvdata(adev); struct ipu6_fw_isys_resp_info_abi *resp; - struct ipu6_isys_stream *stream; + struct isys_stream *stream; struct ipu6_isys_csi2 *csi2 = NULL; u32 index; u64 ts; @@ -1292,7 +1292,7 @@ static int isys_isr_one(struct ipu6_bus_device *adev) * get pin_data_ready event */ ipu6_put_fw_msg_buf(ipu6_bus_get_drvdata(adev), resp->buf_id); - if (resp->pin_id < IPU6_ISYS_OUTPUT_PINS && + if (resp->pin_id < ISYS_OUTPUT_PINS && stream->output_pins[resp->pin_id].pin_ready) stream->output_pins[resp->pin_id].pin_ready(stream, resp); @@ -1319,8 +1319,8 @@ static int isys_isr_one(struct ipu6_bus_device *adev) "sof: handle %d: (index %u), timestamp 0x%16.16llx\n", resp->stream_handle, stream->seq[stream->seq_index].sequence, ts); - stream->seq_index = (stream->seq_index + 1) - % IPU6_ISYS_MAX_PARALLEL_SOF; + stream->seq_index = + (stream->seq_index + 1) % ISYS_MAX_PARALLEL_SOF; break; case IPU6_FW_ISYS_RESP_TYPE_FRAME_EOF: ipu6_isys_csi2_eof_event_by_stream(stream); diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.h b/drivers/media/pci/intel/ipu6/ipu6-isys.h index f488e782c26e..bf6008bfe539 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys.h +++ b/drivers/media/pci/intel/ipu6/ipu6-isys.h @@ -134,7 +134,7 @@ struct ipu6_isys { u32 isr_csi2_bits; u32 csi2_rx_ctrl_cached; spinlock_t streams_lock; - struct ipu6_isys_stream streams[IPU6_ISYS_MAX_STREAMS]; + struct isys_stream streams[IPU6_ISYS_MAX_STREAMS]; int streams_ref_count[IPU6_ISYS_MAX_STREAMS]; void *fwcom; u32 phy_termcal_val; @@ -175,7 +175,7 @@ struct isys_fw_msgs { dma_addr_t dma_addr; }; -struct isys_fw_msgs *ipu6_get_fw_msg_buf(struct ipu6_isys_stream *stream); +struct isys_fw_msgs *ipu6_get_fw_msg_buf(struct isys_stream *stream); void ipu6_put_fw_msg_buf(struct ipu6_isys *isys, uintptr_t data); void ipu6_cleanup_fw_msg_bufs(struct ipu6_isys *isys); diff --git a/drivers/media/pci/intel/ipu6/isys.h b/drivers/media/pci/intel/ipu6/isys.h index f2a49694a050..d5736ea2b036 100644 --- a/drivers/media/pci/intel/ipu6/isys.h +++ b/drivers/media/pci/intel/ipu6/isys.h @@ -24,7 +24,7 @@ struct isys_subdev { #define to_isys_subdev(__sd) container_of(__sd, struct isys_subdev, sd) -struct ipu6_isys_queue { +struct isys_queue { struct vb2_queue vbq; struct list_head node; /* @@ -36,42 +36,42 @@ struct ipu6_isys_queue { unsigned int fw_output; }; -struct ipu6_isys_buffer { +struct isys_buffer { struct list_head head; atomic_t str2mmio_flag; }; -struct ipu6_isys_video_buffer { +struct isys_video_buffer { struct vb2_v4l2_buffer vb_v4l2; - struct ipu6_isys_buffer ib; + struct isys_buffer ib; dma_addr_t dma_addr; }; -struct ipu6_isys_buffer_list { +struct isys_buffer_list { struct list_head head; unsigned int nbufs; }; #define vb2_queue_to_isys_queue(__vb2) \ - container_of(__vb2, struct ipu6_isys_queue, vbq) + container_of(__vb2, struct isys_queue, vbq) -#define vb2_buffer_to_ipu6_isys_video_buffer(__vvb) \ - container_of(__vvb, struct ipu6_isys_video_buffer, vb_v4l2) +#define vb2_buffer_to_isys_video_buffer(__vvb) \ + container_of(__vvb, struct isys_video_buffer, vb_v4l2) -#define ipu6_isys_to_isys_video_buffer(__ib) \ - container_of(__ib, struct ipu6_isys_video_buffer, ib) +#define isys_buffer_to_isys_video_buffer(__ib) \ + container_of(__ib, struct isys_video_buffer, ib) -#define ipu6_isys_buffer_to_vb2_buffer(__ib) \ - (&ipu6_isys_to_isys_video_buffer(__ib)->vb_v4l2.vb2_buf) +#define isys_buffer_to_vb2_buffer(__ib) \ + (&isys_buffer_to_isys_video_buffer(__ib)->vb_v4l2.vb2_buf) -#define IPU6_ISYS_BUFFER_LIST_FL_INCOMING BIT(0) -#define IPU6_ISYS_BUFFER_LIST_FL_ACTIVE BIT(1) -#define IPU6_ISYS_BUFFER_LIST_FL_SET_STATE BIT(2) +#define ISYS_BUFFER_LIST_INCOMING BIT(0) +#define ISYS_BUFFER_LIST_ACTIVE BIT(1) +#define ISYS_BUFFER_LIST_SET_STATE BIT(2) -#define IPU6_ISYS_OUTPUT_PINS 11 -#define IPU6_ISYS_MAX_PARALLEL_SOF 2 +#define ISYS_OUTPUT_PINS 11 +#define ISYS_MAX_PARALLEL_SOF 2 -struct ipu6_isys_pixelformat { +struct isys_pixelformat { u32 pixelformat; u32 bpp; u32 bpp_packed; @@ -85,23 +85,23 @@ struct isys_sequence_info { u64 timestamp; }; -struct ipu6_isys_stream; +struct isys_stream; struct isys_output_pin_data { - void (*pin_ready)(struct ipu6_isys_stream *stream, void *_info); - struct ipu6_isys_queue *aq; + void (*pin_ready)(struct isys_stream *stream, void *_info); + struct isys_queue *aq; }; /* * Align with firmware stream. Each stream represents a CSI virtual channel. * May map to multiple video devices */ -struct ipu6_isys_stream { +struct isys_stream { struct mutex mutex; struct media_entity *source_entity; atomic_t sequence; unsigned int seq_index; - struct isys_sequence_info seq[IPU6_ISYS_MAX_PARALLEL_SOF]; + struct isys_sequence_info seq[ISYS_MAX_PARALLEL_SOF]; int stream_source; int stream_handle; unsigned int nr_output_pins; @@ -117,7 +117,7 @@ struct ipu6_isys_stream { struct completion stream_stop_completion; struct ipu6_isys *isys; - struct isys_output_pin_data output_pins[IPU6_ISYS_OUTPUT_PINS]; + struct isys_output_pin_data output_pins[ISYS_OUTPUT_PINS]; int error; u8 vc; }; From patchwork Mon Apr 7 13:40:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 14040563 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 855A817A311 for ; Mon, 7 Apr 2025 13:41:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033267; cv=none; b=peiKn1MVm4ovZk8EG2v/P7jj156ONMN9m+Sbn1aYnF/0KTvBkw/YqCzz4cReYmTGQJH7+ESNEAjVbj6PqpI99oEyyginvJZIaxcYD/8yHYxg+VnHlF+PWRMdiFvo/u/gDBJdpCwRqyFiPXYv1qlzn++h9NWfEXgEcZ7MzvOlWIo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033267; c=relaxed/simple; bh=1aiCIjnnrMymNtFHYlO64gBpU46ETrSTVp8n2bFrom8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=P9U02+A7GVb86/Sha9SiAN4/X0/ufOiHeUHjuheeH2CGOw28AJRsW0FMtDNDeaC/ZyJonrb1EH3dZUbb2emYcnlrdi36wVIcDcITrbycekuL2Mqpfg5oyqnAVnvbNRnENw7rb0L5NlGfA8OthynP3YDwg3KQJfUItoai6BuqS34= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=nldYzU95; arc=none smtp.client-ip=198.175.65.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="nldYzU95" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744033266; x=1775569266; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1aiCIjnnrMymNtFHYlO64gBpU46ETrSTVp8n2bFrom8=; b=nldYzU951y1b3xjnJyIulMsyZibDe0N/Hl4sBdhL78vziOC7YbGQ4wNh 1PDDsYqeflKeFqhnYKLv0xyygtlcvNkjbiHD+xcqhs9P4v7u8Q/SDMxVr DF8MIlMnzoBOaoWMswpN4kj0FuO0RNwj9A2n+kPwNEcp4lfkZoghEZM6m e/GiAFmyhSF0s0Nn2HZSqbPYoRpQEXqXa8rjGjUxUNZLq7zXsrRWS9zTI ASheXmCUPREk6Vdy/L1svyUrT69KW6SiZzlficlw8/dPLWoe8Z7lLiqv2 rnIJrs1djsq//ufp1LFBj2TbV2oxCRF51I+7q8z4RGkSNkm0lre2kaaPY w==; X-CSE-ConnectionGUID: Ezf6by67RaSMQvDHBE9vfg== X-CSE-MsgGUID: OzWk0EMfTUKRy7pbytaJww== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="45322444" X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="45322444" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:41:06 -0700 X-CSE-ConnectionGUID: UkJBzVkMR8CEYRpB34Uf7A== X-CSE-MsgGUID: GCAOLWAIRDSY4bQ1Lfcj4g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="127713272" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.80.153]) by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:41:04 -0700 From: Stanislaw Gruszka To: linux-media@vger.kernel.org Cc: Sakari Ailus , Bingbu Cao Subject: [PATCH 5/7] media: intel/ipu6: Remove deprecated lock comment Date: Mon, 7 Apr 2025 15:40:35 +0200 Message-Id: <20250407134037.808367-6-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> References: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 pre_streamon_queued is no longer used, remove comment about it. Signed-off-by: Stanislaw Gruszka --- drivers/media/pci/intel/ipu6/isys.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/media/pci/intel/ipu6/isys.h b/drivers/media/pci/intel/ipu6/isys.h index d5736ea2b036..ef61dca085a6 100644 --- a/drivers/media/pci/intel/ipu6/isys.h +++ b/drivers/media/pci/intel/ipu6/isys.h @@ -27,9 +27,6 @@ struct isys_subdev { struct isys_queue { struct vb2_queue vbq; struct list_head node; - /* - * @lock: serialise access to queued and pre_streamon_queued - */ spinlock_t lock; struct list_head active; struct list_head incoming; From patchwork Mon Apr 7 13:40:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 14040564 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) (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 CBAEA18C907 for ; Mon, 7 Apr 2025 13:41:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033271; cv=none; b=E5RzWrFcKNrQiNDuzMMqH9jh3IoydQZUbGIXXwIIg6UtYgsh0uPapNhdtotwx/AClAJGRi4dV0ScJq0ayF+O+boDziaYa7YzxYLKnw2thdykqLnJ+wCt8a6Vt/hBz+6rnn32/TAAEppq81jpYY4+iUfTU+3OEYNAwJXFD+WwoWM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033271; c=relaxed/simple; bh=0ERl17NnTMtaiFWtOw1jQJqKEUa0npzn+Kst9H4n5Ck=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GOeu8OpNmo+hZPDLcPrNRsIqFdwYF9WgM+RRDb63J2NDA/rc1BCwR0OFl1dudFyUztL+YoPfbM5KZHWOFvUHOUvs8yBczHnEWAChQYWtQT2GvXV0QsC1R6r9YJJcYbFFAafZ7MvVU8YVzoYDnt0TA98wCTF3zYNZYE8PyjfxNT4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Qn3S6RPw; arc=none smtp.client-ip=198.175.65.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Qn3S6RPw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744033269; x=1775569269; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0ERl17NnTMtaiFWtOw1jQJqKEUa0npzn+Kst9H4n5Ck=; b=Qn3S6RPwExhVp79mnUCcU7BUBcSCuMZfpYQhvri18p1+WAglzJw7BVGl omRaXpxn+i6o/JRqnzJqfV4QD/ITpESKLg0JJKJ6F6SKIUQECb9ZRvV5b 1rt8wMHBHPXOvKp66rnTiSlsTSwLI9e7XNNdmOHo8KK1cE2j7lmr+r6pk zo+7uqU/YE8irVOO1h2k7WjzYBLHQhncYyXKH0+RCa2zO/RyMaVWP+AlZ mjdMnbo/0lqy3fLXscRRKiTr80VC5lrtkJqkifxv52I3j9dtafpQI/344 Aawj2vjgAbKiKIvefh7e66uZvxAo/I6jDDmyJx/2rQ06FIntylvv41h0W Q==; X-CSE-ConnectionGUID: KNM7+IWpTuuNjVMwYLhbfw== X-CSE-MsgGUID: iOyYpNsoSaiKYew16Txqjg== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="45322448" X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="45322448" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:41:09 -0700 X-CSE-ConnectionGUID: ewGJct9QTt+hjSN4iXsdBA== X-CSE-MsgGUID: 3MTGneblR3O4ZSLw29LbKQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="127713291" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.80.153]) by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:41:08 -0700 From: Stanislaw Gruszka To: linux-media@vger.kernel.org Cc: Sakari Ailus , Bingbu Cao Subject: [PATCH 6/7] media: intel/ipu6: Introduce isys and dev accessors macros Date: Mon, 7 Apr 2025 15:40:36 +0200 Message-Id: <20250407134037.808367-7-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> References: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Add macro and inline function to get access ipu6_isys and device back pointer. Using the helpers will allow to transformation to common structures. Signed-off-by: Stanislaw Gruszka --- Note: this gives checkpatch error about space around ":" , but the same error is already in include/media/v4l2-common.h and include/media/v4l2-subdev.h , so ignore it. drivers/media/pci/intel/ipu6/ipu6-isys.h | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.h b/drivers/media/pci/intel/ipu6/ipu6-isys.h index bf6008bfe539..c753656b04f4 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys.h +++ b/drivers/media/pci/intel/ipu6/ipu6-isys.h @@ -16,6 +16,7 @@ #include #include "ipu6.h" +#include "ipu6-bus.h" #include "ipu6-fw-isys.h" #include "ipu6-isys-csi2.h" #include "ipu6-isys-video.h" @@ -165,6 +166,32 @@ struct ipu6_isys { struct isys_iwake_watermark iwake_watermark; }; +static inline struct ipu6_isys *stream_to_isys6(struct isys_stream *stream) +{ + return stream->isys; +} + +static inline struct ipu6_isys *video_to_isys6(struct ipu6_isys_video *video) +{ + return video->isys; +} + +static inline struct ipu6_isys *csi2_to_isys6(struct ipu6_isys_csi2 *csi2) +{ + return csi2->isys; +} + +#define to_isys(p) \ + _Generic(p, \ + struct isys_stream *: stream_to_isys6, \ + struct ipu6_isys_csi2 *: csi2_to_isys6, \ + struct ipu6_isys_video *: video_to_isys6)(p) + +static inline struct device *isys_to_dev(struct ipu6_isys *isys) +{ + return &isys->adev->auxdev.dev; +} + struct isys_fw_msgs { union { u64 dummy; From patchwork Mon Apr 7 13:40:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislaw Gruszka X-Patchwork-Id: 14040565 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) (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 77AA81552E3 for ; Mon, 7 Apr 2025 13:41:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033276; cv=none; b=OtRrwKt/dOFQlo+b2V9TpOAvVTLcQsI2f3ZFh0bB3l0Q9efI8CmFL13A+kL06J8W1VeGdz2pNs0OT2PbfjtGgOY7xqnjlIXLvI/RFt2DKJgVWDKaR7sNjVMqbTv6NJDxt3LH8dWYRwpOZ3grm1mCKJvuDNwXJ6aXX1880Cu6c5c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744033276; c=relaxed/simple; bh=lO/mUC1b2o2UKaaw5H1v1oMz7lCt4ZqMcivf9La6BHs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VxbuYzSHqiGjLItntAbT3TIHccgkirbHy0KoUZAkqhB482KkK4njxhQ+R+5IJgE8ou+0AjZRle9rdFBVkNxtVLgcvnIaRBsPYpnXOcPgdd6W0MC1Nl5aoOetMOYAVBj+nT2Ow0pkir2+NDatyugE44eJZmF7BgMH94JZJTxLlM8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=dOXOhBmg; arc=none smtp.client-ip=198.175.65.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="dOXOhBmg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1744033275; x=1775569275; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=lO/mUC1b2o2UKaaw5H1v1oMz7lCt4ZqMcivf9La6BHs=; b=dOXOhBmgjogC9TbcCVmEe3pi4V5t1WnDVTIsF1TlF2IRoqmSHEuz2wGA 70Px2luu0JWx6x05KKnP+CpG8DyLtAhjbS5qbK2LmcvENRdgoOE/K9Nuc OmHwdzD/VyOy+aDSnfocH+c7Cx8cxk/ILIaxaJ51KNIM3LSvlulYT4TX1 yjn2paKsDZEoXkb4FC8BTvPh7/+u6zq368P0KtFdem7QEwGS+PeNDg8qm hW3XXe3gNb/ZB2zhEwJ7JLwCgTGLJebd55kT+GokEWoK13+FzKOu2AObp Ha2kaBAaiW7Uz60r3jalpso3rzmZO5kyi+uZhOfeqGi0x1ByNYUPCfwC9 A==; X-CSE-ConnectionGUID: jS5OsAV7SPSt6dg4BKeVnw== X-CSE-MsgGUID: YMV67bhcRd6BdgUPCaqG0w== X-IronPort-AV: E=McAfee;i="6700,10204,11397"; a="49073479" X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="49073479" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:41:14 -0700 X-CSE-ConnectionGUID: 5EyhGADOTiCU0flp7Nv3XQ== X-CSE-MsgGUID: bi08QPp4R5ScTsc8Z3awQw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,194,1739865600"; d="scan'208";a="158936186" Received: from sgruszka-mobl.ger.corp.intel.com (HELO localhost) ([10.245.80.153]) by orviesa002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2025 06:41:12 -0700 From: Stanislaw Gruszka To: linux-media@vger.kernel.org Cc: Sakari Ailus , Bingbu Cao Subject: [PATCH 7/7] media: intel/ipu6: Start using accessors to get dev pointer Date: Mon, 7 Apr 2025 15:40:37 +0200 Message-Id: <20250407134037.808367-8-stanislaw.gruszka@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> References: <20250407134037.808367-1-stanislaw.gruszka@linux.intel.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Use below cocci script to convert the code to use to_isys() and isys_to_dev() accessors. @@ expression X; @@ ( - &X->isys->adev->auxdev.dev + isys_to_dev(to_isys(X)) | - &isys->adev->auxdev.dev + isys_to_dev(isys) ) Having accessors in place will make separation between common code and fw/hw specific easier. Signed-off-by: Stanislaw Gruszka --- drivers/media/pci/intel/ipu6/ipu6-fw-isys.c | 14 ++++----- drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c | 16 +++++----- .../media/pci/intel/ipu6/ipu6-isys-dwc-phy.c | 16 +++++----- .../media/pci/intel/ipu6/ipu6-isys-jsl-phy.c | 8 ++--- .../media/pci/intel/ipu6/ipu6-isys-mcd-phy.c | 10 +++---- .../media/pci/intel/ipu6/ipu6-isys-queue.c | 24 +++++++-------- .../media/pci/intel/ipu6/ipu6-isys-video.c | 30 +++++++++---------- drivers/media/pci/intel/ipu6/ipu6-isys.c | 20 ++++++------- 8 files changed, 69 insertions(+), 69 deletions(-) diff --git a/drivers/media/pci/intel/ipu6/ipu6-fw-isys.c b/drivers/media/pci/intel/ipu6/ipu6-fw-isys.c index 62ed92ff1d30..38548578b7a6 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-fw-isys.c +++ b/drivers/media/pci/intel/ipu6/ipu6-fw-isys.c @@ -28,7 +28,7 @@ static const char send_msg_types[N_IPU6_FW_ISYS_SEND_TYPE][32] = { static int handle_proxy_response(struct ipu6_isys *isys, unsigned int req_id) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct ipu6_fw_isys_proxy_resp_info_abi *resp; int ret; @@ -53,7 +53,7 @@ int ipu6_fw_isys_send_proxy_token(struct ipu6_isys *isys, unsigned int offset, u32 value) { struct ipu6_fw_com_context *ctx = isys->fwcom; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct ipu6_fw_proxy_send_queue_token *token; unsigned int timeout = 1000; int ret; @@ -97,7 +97,7 @@ int ipu6_fw_isys_complex_cmd(struct ipu6_isys *isys, size_t size, u16 send_type) { struct ipu6_fw_com_context *ctx = isys->fwcom; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct ipu6_fw_send_queue_token *token; if (send_type >= N_IPU6_FW_ISYS_SEND_TYPE) @@ -135,7 +135,7 @@ int ipu6_fw_isys_simple_cmd(struct ipu6_isys *isys, int ipu6_fw_isys_close(struct ipu6_isys *isys) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); int retry = IPU6_ISYS_CLOSE_RETRY; unsigned long flags; void *fwcom; @@ -178,7 +178,7 @@ void ipu6_fw_isys_cleanup(struct ipu6_isys *isys) ret = ipu6_fw_com_release(isys->fwcom, 1); if (ret < 0) - dev_warn(&isys->adev->auxdev.dev, + dev_warn(isys_to_dev(isys), "Device busy, fw_com release failed."); isys->fwcom = NULL; } @@ -218,7 +218,7 @@ static int ipu6_isys_fwcom_cfg_init(struct ipu6_isys *isys, unsigned int max_send_queues, max_sram_blocks, max_devq_size; struct ipu6_fw_syscom_queue_config *input_queue_cfg; struct ipu6_fw_syscom_queue_config *output_queue_cfg; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); int type_proxy = IPU6_FW_ISYS_QUEUE_TYPE_PROXY; int type_dev = IPU6_FW_ISYS_QUEUE_TYPE_DEV; int type_msg = IPU6_FW_ISYS_QUEUE_TYPE_MSG; @@ -323,7 +323,7 @@ static int ipu6_isys_fwcom_cfg_init(struct ipu6_isys *isys, int ipu6_fw_isys_init(struct ipu6_isys *isys, unsigned int num_streams) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); int retry = IPU6_ISYS_OPEN_RETRY; struct ipu6_fw_com_cfg fwcom = { .cell_start = start_sp, diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c index ddd19cde69be..575b90625c89 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c @@ -86,7 +86,7 @@ s64 ipu6_isys_csi2_get_link_freq(struct ipu6_isys_csi2 *csi2) src_pad = media_entity_remote_source_pad_unique(&csi2->asd.sd.entity); if (IS_ERR(src_pad)) { - dev_err(&csi2->isys->adev->auxdev.dev, + dev_err(isys_to_dev(to_isys(csi2)), "can't get source pad of %s (%ld)\n", csi2->asd.sd.name, PTR_ERR(src_pad)); return PTR_ERR(src_pad); @@ -160,7 +160,7 @@ static int ipu6_isys_csi2_calc_timing(struct ipu6_isys_csi2 *csi2, struct ipu6_isys_csi2_timing *timing, s32 accinv) { - struct device *dev = &csi2->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(csi2)); s64 link_freq; link_freq = ipu6_isys_csi2_get_link_freq(csi2); @@ -202,7 +202,7 @@ void ipu6_isys_register_errors(struct ipu6_isys_csi2 *csi2) void ipu6_isys_csi2_error(struct ipu6_isys_csi2 *csi2) { - struct device *dev = &csi2->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(csi2)); const struct ipu6_csi2_error *errors; u32 status; u32 i; @@ -227,7 +227,7 @@ static int ipu6_isys_csi2_set_stream(struct v4l2_subdev *sd, struct isys_subdev *asd = to_isys_subdev(sd); struct ipu6_isys_csi2 *csi2 = to_ipu6_isys_csi2(asd); struct ipu6_isys *isys = csi2->isys; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct ipu6_isys_csi2_config cfg; unsigned int nports; int ret = 0; @@ -518,7 +518,7 @@ int ipu6_isys_csi2_init(struct ipu6_isys_csi2 *csi2, struct ipu6_isys *isys, void __iomem *base, unsigned int index) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); int ret; csi2->isys = isys; @@ -559,7 +559,7 @@ int ipu6_isys_csi2_init(struct ipu6_isys_csi2 *csi2, void ipu6_isys_csi2_sof_event_by_stream(struct isys_stream *stream) { struct video_device *vdev = stream->asd->sd.devnode; - struct device *dev = &stream->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(stream)); struct ipu6_isys_csi2 *csi2 = to_ipu6_isys_csi2(stream->asd); struct v4l2_event ev = { .type = V4L2_EVENT_FRAME_SYNC, @@ -574,7 +574,7 @@ void ipu6_isys_csi2_sof_event_by_stream(struct isys_stream *stream) void ipu6_isys_csi2_eof_event_by_stream(struct isys_stream *stream) { - struct device *dev = &stream->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(stream)); struct ipu6_isys_csi2 *csi2 = to_ipu6_isys_csi2(stream->asd); u32 frame_sequence = atomic_read(&stream->sequence); @@ -588,7 +588,7 @@ int ipu6_isys_csi2_get_remote_desc(u32 source_stream, struct v4l2_mbus_frame_desc_entry *entry) { struct v4l2_mbus_frame_desc_entry *desc_entry = NULL; - struct device *dev = &csi2->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(csi2)); struct v4l2_mbus_frame_desc desc; struct v4l2_subdev *source; struct media_pad *pad; diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-dwc-phy.c b/drivers/media/pci/intel/ipu6/ipu6-isys-dwc-phy.c index db2874843453..78c6db71d51d 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-dwc-phy.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-dwc-phy.c @@ -63,7 +63,7 @@ enum phy_fsm_state { static void dwc_dphy_write(struct ipu6_isys *isys, u32 phy_id, u32 addr, u32 data) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; void __iomem *base = isys_base + IPU6_DWC_DPHY_BASE(phy_id); @@ -74,7 +74,7 @@ static void dwc_dphy_write(struct ipu6_isys *isys, u32 phy_id, u32 addr, static u32 dwc_dphy_read(struct ipu6_isys *isys, u32 phy_id, u32 addr) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; void __iomem *base = isys_base + IPU6_DWC_DPHY_BASE(phy_id); u32 data; @@ -112,7 +112,7 @@ static u32 __maybe_unused dwc_dphy_read_mask(struct ipu6_isys *isys, u32 phy_id, static int dwc_dphy_ifc_read(struct ipu6_isys *isys, u32 phy_id, u32 addr, u32 *val) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; void __iomem *base = isys_base + IPU6_DWC_DPHY_BASE(phy_id); void __iomem *reg; @@ -139,7 +139,7 @@ static int dwc_dphy_ifc_read(struct ipu6_isys *isys, u32 phy_id, u32 addr, static int dwc_dphy_ifc_write(struct ipu6_isys *isys, u32 phy_id, u32 addr, u32 data) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; void __iomem *base = isys_base + IPU6_DWC_DPHY_BASE(phy_id); void __iomem *reg; @@ -189,7 +189,7 @@ static u32 dwc_dphy_ifc_read_mask(struct ipu6_isys *isys, u32 phy_id, u32 addr, static int dwc_dphy_pwr_up(struct ipu6_isys *isys, u32 phy_id) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); u32 fsm_state; int ret; @@ -401,7 +401,7 @@ static void ipu6_isys_dwc_phy_aggr_setup(struct ipu6_isys *isys, u32 master, #define PHY_E 4 static int ipu6_isys_dwc_phy_powerup_ack(struct ipu6_isys *isys, u32 phy_id) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); u32 rescal_done; int ret; @@ -434,7 +434,7 @@ static int ipu6_isys_dwc_phy_powerup_ack(struct ipu6_isys *isys, u32 phy_id) static void ipu6_isys_dwc_phy_reset(struct ipu6_isys *isys, u32 phy_id) { - dev_dbg(&isys->adev->auxdev.dev, "Reset phy %u", phy_id); + dev_dbg(isys_to_dev(isys), "Reset phy %u", phy_id); dwc_dphy_write(isys, phy_id, IPU6_DWC_DPHY_SHUTDOWNZ, 0); dwc_dphy_write(isys, phy_id, IPU6_DWC_DPHY_RSTZ, 0); @@ -449,7 +449,7 @@ int ipu6_isys_dwc_phy_set_power(struct ipu6_isys *isys, const struct ipu6_isys_csi2_timing *timing, bool on) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; u32 phy_id, primary, secondary; u32 nlanes, port, mbps; diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-jsl-phy.c b/drivers/media/pci/intel/ipu6/ipu6-isys-jsl-phy.c index c804291cfae9..73ac24c6853d 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-jsl-phy.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-jsl-phy.c @@ -63,7 +63,7 @@ static void ipu6_isys_csi2_phy_config_by_port(struct ipu6_isys *isys, unsigned int port, unsigned int nlanes) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *base = isys->adev->isp->base; unsigned int bbnum; u32 val, reg, i; @@ -139,7 +139,7 @@ static void ipu6_isys_csi2_rx_control(struct ipu6_isys *isys) static int ipu6_isys_csi2_set_port_cfg(struct ipu6_isys *isys, unsigned int port, unsigned int nlanes) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); unsigned int sip = port / 2; unsigned int index; @@ -171,7 +171,7 @@ ipu6_isys_csi2_set_timing(struct ipu6_isys *isys, const struct ipu6_isys_csi2_timing *timing, unsigned int port, unsigned int nlanes) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *reg; u32 port_base; u32 i; @@ -207,7 +207,7 @@ int ipu6_isys_jsl_phy_set_power(struct ipu6_isys *isys, const struct ipu6_isys_csi2_timing *timing, bool on) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; int ret = 0; u32 nlanes; diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-mcd-phy.c b/drivers/media/pci/intel/ipu6/ipu6-isys-mcd-phy.c index 71aa5009512a..95e40f43aeb4 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-mcd-phy.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-mcd-phy.c @@ -502,7 +502,7 @@ static const struct phy_reg **config_regs[3] = { static int ipu6_isys_mcd_phy_powerup_ack(struct ipu6_isys *isys, u8 id) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; u32 val; int ret; @@ -522,7 +522,7 @@ static int ipu6_isys_mcd_phy_powerup_ack(struct ipu6_isys *isys, u8 id) static int ipu6_isys_mcd_phy_powerdown_ack(struct ipu6_isys *isys, u8 id) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; u32 val; int ret; @@ -553,7 +553,7 @@ static void ipu6_isys_mcd_phy_reset(struct ipu6_isys *isys, u8 id, bool assert) static int ipu6_isys_mcd_phy_ready(struct ipu6_isys *isys, u8 id) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; u32 val; int ret; @@ -621,7 +621,7 @@ static int ipu6_isys_driver_port_to_phy_port(struct ipu6_isys_csi2_config *cfg) static int ipu6_isys_mcd_phy_config(struct ipu6_isys *isys) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct ipu6_bus_device *adev = isys->adev; const struct phy_reg **phy_config_regs; struct ipu6_device *isp = adev->isp; @@ -667,7 +667,7 @@ int ipu6_isys_mcd_phy_set_power(struct ipu6_isys *isys, const struct ipu6_isys_csi2_timing *timing, bool on) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); void __iomem *isys_base = isys->pdata->base; u8 port, phy_id; refcount_t *ref; diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c index d9457176f32f..1e1ae13d5e07 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-queue.c @@ -59,7 +59,7 @@ static int ipu6_isys_queue_setup(struct vb2_queue *q, unsigned int *num_buffers, { struct isys_queue *aq = vb2_queue_to_isys_queue(q); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); u32 size = ipu6_isys_get_data_size(av); /* num_planes == 0: we're being called through VIDIOC_REQBUFS */ @@ -80,7 +80,7 @@ static int ipu6_isys_buf_prepare(struct vb2_buffer *vb) { struct isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); u32 bytesperline = ipu6_isys_get_bytes_per_line(av); u32 height = ipu6_isys_get_frame_height(av); u32 size = ipu6_isys_get_data_size(av); @@ -123,7 +123,7 @@ void ipu6_isys_buffer_list_queue(struct isys_buffer_list *bl, struct device *dev; av = ipu6_isys_queue_to_video(aq); - dev = &av->isys->adev->auxdev.dev; + dev = isys_to_dev(to_isys(av)); spin_lock_irqsave(&aq->lock, flags); list_del(&ib->head); if (op_flags & ISYS_BUFFER_LIST_ACTIVE) @@ -155,7 +155,7 @@ void ipu6_isys_buffer_list_queue(struct isys_buffer_list *bl, */ static void flush_firmware_streamon_fail(struct isys_stream *stream) { - struct device *dev = &stream->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(stream)); struct isys_queue *aq; unsigned long flags; @@ -197,7 +197,7 @@ static void flush_firmware_streamon_fail(struct isys_stream *stream) static int buffer_list_get(struct isys_stream *stream, struct isys_buffer_list *bl) { - struct device *dev = &stream->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(stream)); struct isys_queue *aq; unsigned long flags; unsigned long buf_flag = ISYS_BUFFER_LIST_INCOMING; @@ -291,7 +291,7 @@ static int ipu6_isys_stream_start(struct ipu6_isys_video *av, struct isys_buffer_list *bl, bool error) { struct isys_stream *stream = av->stream; - struct device *dev = &stream->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(stream)); struct isys_buffer_list __bl; int ret; @@ -353,7 +353,7 @@ static void buf_queue(struct vb2_buffer *vb) struct isys_video_buffer *ivb = vb2_buffer_to_isys_video_buffer(vvb); struct isys_buffer *ib = &ivb->ib; - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); struct media_pipeline *media_pipe = media_entity_pipeline(&av->vdev.entity); struct ipu6_fw_isys_frame_buff_set_abi *buf = NULL; @@ -436,7 +436,7 @@ static int ipu6_isys_link_fmt_validate(struct isys_queue *aq) { struct v4l2_mbus_framefmt format; struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); struct media_pad *remote_pad = media_pad_remote_pad_first(av->vdev.entity.pads); struct v4l2_subdev *sd; @@ -539,7 +539,7 @@ static int start_streaming(struct vb2_queue *q, unsigned int count) { struct isys_queue *aq = vb2_queue_to_isys_queue(q); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); const struct isys_pixelformat *pfmt = ipu6_isys_get_isys_format(ipu6_isys_get_format(av), 0); struct isys_buffer_list __bl, *bl = NULL; @@ -654,7 +654,7 @@ static unsigned int get_sof_sequence_by_timestamp(struct isys_stream *stream, u64 time) { struct ipu6_isys *isys = stream->isys; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); unsigned int i; /* @@ -700,7 +700,7 @@ ipu6_isys_buf_calc_sequence_time(struct isys_buffer *ib, u64 time) struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb); struct isys_queue *aq = vb2_queue_to_isys_queue(vb->vb2_queue); struct ipu6_isys_video *av = ipu6_isys_queue_to_video(aq); - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); struct isys_stream *stream = av->stream; u64 ns; u32 sequence; @@ -739,7 +739,7 @@ ipu6_stream_buf_ready(struct isys_stream *stream, u8 pin_id, u32 pin_addr, { struct isys_queue *aq = stream->output_pins[pin_id].aq; struct ipu6_isys *isys = stream->isys; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct isys_buffer *ib; struct vb2_buffer *vb; unsigned long flags; diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c index 71429e83d8aa..1bc55aa0e2d0 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c @@ -366,7 +366,7 @@ static int link_validate(struct media_link *link) { struct ipu6_isys_video *av = container_of(link->sink, struct ipu6_isys_video, pad); - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); struct v4l2_subdev_state *s_state; struct v4l2_subdev *s_sd; struct v4l2_mbus_framefmt *s_fmt; @@ -450,7 +450,7 @@ static int ipu6_isys_fw_pin_cfg(struct ipu6_isys_video *av, ipu6_isys_get_isys_format(ipu6_isys_get_format(av), 0); struct v4l2_rect v4l2_crop; struct ipu6_isys *isys = av->isys; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); int input_pins = cfg->nof_input_pins++; int output_pins; u32 src_stream; @@ -521,7 +521,7 @@ static int start_stream_firmware(struct ipu6_isys_video *av, struct ipu6_fw_isys_stream_cfg_data_abi *stream_cfg; struct ipu6_fw_isys_frame_buff_set_abi *buf = NULL; struct isys_stream *stream = av->stream; - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); struct isys_fw_msgs *msg = NULL; struct isys_queue *aq; int ret, retout, tout; @@ -658,7 +658,7 @@ static int start_stream_firmware(struct ipu6_isys_video *av, static void stop_streaming_firmware(struct ipu6_isys_video *av) { - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); struct isys_stream *stream = av->stream; int ret, tout; @@ -685,7 +685,7 @@ static void stop_streaming_firmware(struct ipu6_isys_video *av) static void close_streaming_firmware(struct ipu6_isys_video *av) { struct isys_stream *stream = av->stream; - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); int ret, tout; reinit_completion(&stream->stream_close_completion); @@ -733,7 +733,7 @@ int ipu6_isys_video_prepare_stream(struct ipu6_isys_video *av, csi2->receiver_errors = 0; stream->source_entity = source_entity; - dev_dbg(&av->isys->adev->auxdev.dev, + dev_dbg(isys_to_dev(to_isys(av)), "prepare stream: external entity %s\n", stream->source_entity->name); @@ -746,7 +746,7 @@ void ipu6_isys_configure_stream_watermark(struct ipu6_isys_video *av, struct ipu6_isys *isys = av->isys; struct ipu6_isys_csi2 *csi2 = NULL; struct isys_iwake_watermark *iwake_watermark = &isys->iwake_watermark; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct v4l2_mbus_framefmt format; struct v4l2_subdev *esd; struct v4l2_control hb = { .id = V4L2_CID_HBLANK, .value = 0 }; @@ -852,7 +852,7 @@ void ipu6_isys_put_stream(struct isys_stream *stream) return; } - dev = &stream->isys->adev->auxdev.dev; + dev = isys_to_dev(to_isys(stream)); spin_lock_irqsave(&stream->isys->streams_lock, flags); for (i = 0; i < IPU6_ISYS_MAX_STREAMS; i++) { @@ -916,7 +916,7 @@ ipu6_isys_query_stream_by_handle(struct ipu6_isys *isys, u8 stream_handle) return NULL; if (stream_handle >= IPU6_ISYS_MAX_STREAMS) { - dev_err(&isys->adev->auxdev.dev, + dev_err(isys_to_dev(isys), "stream_handle %d is invalid\n", stream_handle); return NULL; } @@ -942,7 +942,7 @@ ipu6_isys_query_stream_by_source(struct ipu6_isys *isys, int source, u8 vc) return NULL; if (source < 0) { - dev_err(&isys->adev->auxdev.dev, + dev_err(isys_to_dev(isys), "query stream with invalid port number\n"); return NULL; } @@ -987,7 +987,7 @@ int ipu6_isys_video_set_streaming(struct ipu6_isys_video *av, int state, struct v4l2_subdev_krouting *routing; struct isys_stream *stream = av->stream; struct v4l2_subdev_state *subdev_state; - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); struct v4l2_subdev *sd; struct media_pad *r_pad; u32 sink_pad, sink_stream; @@ -1151,7 +1151,7 @@ void ipu6_isys_fw_close(struct ipu6_isys *isys) ipu6_fw_isys_close(isys); if (isys->fwcom) { isys->need_reset = true; - dev_warn(&isys->adev->auxdev.dev, + dev_warn(isys_to_dev(isys), "failed to close fw isys\n"); } } @@ -1159,9 +1159,9 @@ void ipu6_isys_fw_close(struct ipu6_isys *isys) mutex_unlock(&isys->mutex); if (isys->need_reset) - pm_runtime_put_sync(&isys->adev->auxdev.dev); + pm_runtime_put_sync(isys_to_dev(isys)); else - pm_runtime_put(&isys->adev->auxdev.dev); + pm_runtime_put(isys_to_dev(isys)); } int ipu6_isys_setup_video(struct ipu6_isys_video *av, @@ -1169,7 +1169,7 @@ int ipu6_isys_setup_video(struct ipu6_isys_video *av, { const struct isys_pixelformat *pfmt = ipu6_isys_get_isys_format(ipu6_isys_get_format(av), 0); - struct device *dev = &av->isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(to_isys(av)); struct v4l2_mbus_frame_desc_entry entry; struct v4l2_subdev_route *route = NULL; struct v4l2_subdev_route *r; diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys.c b/drivers/media/pci/intel/ipu6/ipu6-isys.c index 8ac0cc7574de..827ae7b9bfc8 100644 --- a/drivers/media/pci/intel/ipu6/ipu6-isys.c +++ b/drivers/media/pci/intel/ipu6/ipu6-isys.c @@ -107,7 +107,7 @@ isys_complete_ext_device_registration(struct ipu6_isys *isys, struct v4l2_subdev *sd, struct ipu6_isys_csi2_config *csi2) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); unsigned int i; int ret; @@ -198,7 +198,7 @@ static int isys_csi2_create_media_links(struct ipu6_isys *isys) { const struct ipu6_isys_internal_csi2_pdata *csi2_pdata = &isys->pdata->ipdata->csi2; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); unsigned int i, j; int ret; @@ -418,7 +418,7 @@ static void get_lut_ltrdid(struct ipu6_isys *isys, struct ltr_did *pltr_did) static int set_iwake_register(struct ipu6_isys *isys, u32 index, u32 value) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); u32 req_id = index; u32 offset = 0; int ret; @@ -448,7 +448,7 @@ static int set_iwake_register(struct ipu6_isys *isys, u32 index, u32 value) static void set_iwake_ltrdid(struct ipu6_isys *isys, u16 ltr, u16 did, enum ltr_did_type use) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); u16 ltr_val, ltr_scale = LTR_SCALE_1024NS; u16 did_val, did_scale = DID_SCALE_1US; struct ipu6_device *isp = isys->adev->isp; @@ -532,7 +532,7 @@ void update_watermark_setting(struct ipu6_isys *isys) { struct isys_iwake_watermark *iwake_watermark = &isys->iwake_watermark; u32 iwake_threshold, iwake_critical_threshold, page_num; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); u32 calc_fill_time_us = 0, ltr = 0, did = 0; struct video_stream_watermark *p_watermark; enum ltr_did_type ltr_did_type; @@ -680,18 +680,18 @@ static int isys_notifier_bound(struct v4l2_async_notifier *notifier, int ret; if (s_asd->csi2.port >= isys->pdata->ipdata->csi2.nports) { - dev_err(&isys->adev->auxdev.dev, "invalid csi2 port %u\n", + dev_err(isys_to_dev(isys), "invalid csi2 port %u\n", s_asd->csi2.port); return -EINVAL; } ret = ipu_bridge_instantiate_vcm(sd->dev); if (ret) { - dev_err(&isys->adev->auxdev.dev, "instantiate vcm failed\n"); + dev_err(isys_to_dev(isys), "instantiate vcm failed\n"); return ret; } - dev_dbg(&isys->adev->auxdev.dev, "bind %s nlanes is %d port is %d\n", + dev_dbg(isys_to_dev(isys), "bind %s nlanes is %d port is %d\n", sd->name, s_asd->csi2.nlanes, s_asd->csi2.port); ret = isys_complete_ext_device_registration(isys, sd, &s_asd->csi2); if (ret) @@ -782,7 +782,7 @@ static void isys_notifier_cleanup(struct ipu6_isys *isys) static int isys_register_devices(struct ipu6_isys *isys) { - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct pci_dev *pdev = isys->adev->isp->pdev; int ret; @@ -985,7 +985,7 @@ static int alloc_fw_msg_bufs(struct ipu6_isys *isys, int amount) struct isys_fw_msgs *ipu6_get_fw_msg_buf(struct isys_stream *stream) { struct ipu6_isys *isys = stream->isys; - struct device *dev = &isys->adev->auxdev.dev; + struct device *dev = isys_to_dev(isys); struct isys_fw_msgs *msg; unsigned long flags; int ret;