From patchwork Tue Jun 23 16:41:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Saenz Julienne X-Patchwork-Id: 11621065 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7AFF992A for ; Tue, 23 Jun 2020 16:49:19 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 536B62070E for ; Tue, 23 Jun 2020 16:49:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TBq3AVn3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 536B62070E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=hhhgf79oQHYiPQYrnv/aU6vvKLkWRlnS96IKyyibKXo=; b=TBq3AVn3l1PS7PjYlQFzjQrK44 OlVFOSxzlgGHNIFfF9/4Fa+FPTM2CjXhlc6muGFzseOurpPOZzwrs6O0m9Vg8zR4u5DHs2Cf0t9yA zMiCEBNQ/iNl2cLmeC++XMs4XV/Q+5jjeMXn/yXfBcEmFUjAPyrtEsuqtasMQzGEF24E+w+gzTGLV BHb9nLIfsJosiz2iiIRfF69wZoApdPbG8EE8hj5pouf4ygKRsPSz2F2RwMeYHkYL9S0lDmrfheWCA 6LqD6CTkTlHBZsMirRGWowGzZ9zYvT4UUb4z4lgSJ3YWG/USh4I0fykdeg7PSc7DZcfrgFBdtQOuY 9mhLkz9Q==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jnm4K-0005vJ-Oq; Tue, 23 Jun 2020 16:46:44 +0000 Received: from mx2.suse.de ([195.135.220.15]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jnm2p-0005L5-B7; Tue, 23 Jun 2020 16:45:17 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 5CC1EAEB1; Tue, 23 Jun 2020 16:45:07 +0000 (UTC) From: Nicolas Saenz Julienne To: gregkh@linuxfoundation.org Subject: [PATCH 00/50] staging: vchiq: Getting rid of the vchi/vchiq split Date: Tue, 23 Jun 2020 18:41:46 +0200 Message-Id: <20200623164235.29566-1-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Spam-Note: CRM114 invocation failed X-Spam-Score: -2.3 (--) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-2.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at https://www.dnswl.org/, medium trust [195.135.220.15 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [195.135.220.15 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, kernel-list@raspberrypi.com, linux-kernel@vger.kernel.org, Nicolas Saenz Julienne , laurent.pinchart@ideasonboard.com, linux-arm-kernel@lists.infradead.org, linux-rpi-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org vchi acts as a mid layer between vchiq and its kernel services, while arguably providing little to no benefit: half of the functions exposed are a 1:1 copy of vchiq's, and the rest provide some functionality which can be easly integrated into vchiq without all the churn. Moreover it has been found in the past as a blockage to further fixes in vchiq as every change needed its vchi counterpart, if even possible. Hence this series, which merges all vchi functionality into vchiq and provies a simpler and more concise API to services. I'm aware that kernel's vchi API tries to mimic its userspace counterpart (or vice versa). Obviously this breaks the parity, but I don't think it's a sane goal to have. There is little sense or gain from it, and adds impossible constraints to upstreaming the driver. Overall this fall short of removing 1100 lines of code, which is pretty neat on itself. So far it has been tested trough bcm2835-camera, audio and vchiq-test. I can't do much about vc-sm-cma for now as it's only available downstream, but I made sure not to break anything and will provide some patches for the RPi devs to pick-up, so as to make their life easier. Note that in order to keep the divergence between the downstream and upstream versions of this as small as possible I picked up some mmal-vchiq patches that might not be absolutely necessary to the goal of the series. Regards, Nicolas Previous versions: RFC: https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg2174964.html --- Dave Stevenson (8): staging: mmal-vchiq: Allocate and free components as required staging: mmal-vchiq: Avoid use of bool in structures staging: mmal-vchiq: Make timeout a defined parameter staging: mmal-vchiq: Make a mmal_buf struct for passing parameters staging: mmal-vchiq: Fixup vchiq-mmal include ordering staging: mmal-vchiq: Fix client_component for 64 bit kernel staging: mmal-vchiq: Always return the param size from param_get staging: mmal-vchiq: If the VPU returns an error, don't negate it Jacopo Mondi (1): staging: bcm2835: Break MMAL support out from camera Naushir Patuck (1): staging: mmal-vchiq: Fix formatting errors in mmal_parameters.h Nicolas Saenz Julienne (39): staging: vchi: Get rid of all useless callback reasons staging: vchi: Get rid of vchi_msg_peek() staging: vchi: Get rid of struct vchi_instance_handle staging: vchi: Unify struct shim_service and struct vchi_service_handle staging: vc04_services: bcm2835-audio: Use vchi_msg_hold() staging: vchi: Get rid of vchi_msg_dequeue() staging: vchi_common: Get rid of all unused definitions staging: vchi: Get rid of unnecessary defines staging: vc04_services: Get rid of vchi_cfg.h staging: vchi: Get rid of flags argument in vchi_msg_hold() staging: vchi: Use enum vchiq_bulk_mode instead of vchi's transmission flags staging: vchi: Use vchiq's enum vchiq_reason staging: vchi: Get rid of effect less expression staging: vchiq: Introduce vchiq_validate_params() staging: vchiq: Move message queue into struct vchiq_service staging: vchiq: Get rid of vchiq_util.h staging: vchi: Expose struct vchi_service staging: vchiq: Export vchiq_get_service_userdata() staging: vchiq: Export vchiq_msg_queue_push staging: vchi: Get rid of vchiq_shim's message callback staging: vchiq: Don't use a typedef for vchiq_callback staging: vchi: Use struct vchiq_service_params staging: vchi: Get rid of struct vchi_service staging: vchiq: Pass vchiq's message when holding a message staging: vchi: Rework vchi_msg_hold() to match vchiq_msg_hold() staging: vchiq: Unify fourcc definition mechanisms staging: vchi: Get rid of struct vchiq_instance forward declaration staging: vchi: Don't include vchiq_core.h staging: vchiq: Get rid of unnecessary definitions in vchiq_if.h staging: vchiq: Make vchiq_add_service() local staging: vchiq: Move definitions only used by core into core header staging: vchi: Get rid of vchi_bulk_queue_receive() staging: vchi: Get rid of vchi_bulk_queue_transmit() staging: vchi: Move vchi_queue_kernel_message() into vchiq staging: vchiq: Get rid of vchi staging: vchiq: Move conditional barrier definition into vchiq_core.h staging: vchiq: Use vchiq.h as the main header file for services staging: vchiq: Move defines into core header staging: vchiq: Move vchiq.h into include directory Phil Elwell (1): staging: vchiq_arm: Add a matching unregister call drivers/staging/vc04_services/Kconfig | 2 + drivers/staging/vc04_services/Makefile | 9 +- .../vc04_services/bcm2835-audio/Makefile | 2 +- .../bcm2835-audio/bcm2835-vchiq.c | 100 ++- .../vc04_services/bcm2835-audio/bcm2835.h | 4 +- .../bcm2835-audio/vc_vchi_audioserv_defs.h | 5 +- .../vc04_services/bcm2835-camera/Kconfig | 1 + .../vc04_services/bcm2835-camera/Makefile | 4 +- .../bcm2835-camera/bcm2835-camera.c | 66 +- .../linux/raspberrypi/vchiq.h} | 67 +- .../vc04_services/interface/{vchi => }/TODO | 0 .../vc04_services/interface/vchi/vchi.h | 159 ----- .../vc04_services/interface/vchi/vchi_cfg.h | 238 ------- .../interface/vchi/vchi_common.h | 138 ---- .../vc04_services/interface/vchiq_arm/vchiq.h | 21 - .../interface/vchiq_arm/vchiq_2835_arm.c | 1 + .../interface/vchiq_arm/vchiq_arm.c | 87 ++- .../interface/vchiq_arm/vchiq_core.c | 97 ++- .../interface/vchiq_arm/vchiq_core.h | 46 +- .../interface/vchiq_arm/vchiq_ioctl.h | 2 +- .../interface/vchiq_arm/vchiq_shim.c | 617 ------------------ .../interface/vchiq_arm/vchiq_util.c | 85 --- .../interface/vchiq_arm/vchiq_util.h | 50 -- .../staging/vc04_services/vchiq-mmal/Kconfig | 7 + .../staging/vc04_services/vchiq-mmal/Makefile | 9 + .../mmal-common.h | 5 + .../mmal-encodings.h | 0 .../mmal-msg-common.h | 0 .../mmal-msg-format.h | 0 .../mmal-msg-port.h | 0 .../{bcm2835-camera => vchiq-mmal}/mmal-msg.h | 2 +- .../mmal-parameters.h | 32 +- .../mmal-vchiq.c | 277 ++++---- .../mmal-vchiq.h | 6 +- 34 files changed, 521 insertions(+), 1618 deletions(-) rename drivers/staging/vc04_services/{interface/vchiq_arm/vchiq_if.h => include/linux/raspberrypi/vchiq.h} (56%) rename drivers/staging/vc04_services/interface/{vchi => }/TODO (100%) delete mode 100644 drivers/staging/vc04_services/interface/vchi/vchi.h delete mode 100644 drivers/staging/vc04_services/interface/vchi/vchi_cfg.h delete mode 100644 drivers/staging/vc04_services/interface/vchi/vchi_common.h delete mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq.h delete mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c delete mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.c delete mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_util.h create mode 100644 drivers/staging/vc04_services/vchiq-mmal/Kconfig create mode 100644 drivers/staging/vc04_services/vchiq-mmal/Makefile rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-common.h (96%) rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-encodings.h (100%) rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-msg-common.h (100%) rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-msg-format.h (100%) rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-msg-port.h (100%) rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-msg.h (99%) rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-parameters.h (96%) rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-vchiq.c (88%) rename drivers/staging/vc04_services/{bcm2835-camera => vchiq-mmal}/mmal-vchiq.h (97%)