Message ID | 20230913195354.835884-1-umang.jain@ideasonboard.com |
---|---|
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:a8d:b0:3f2:4152:657d with SMTP id gr13csp51046vqb; Wed, 13 Sep 2023 12:54:27 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGa47nXlHI7mM+sxj/x+MlWT8W81XVTUjfkZB2Leh5VWLFC2Yihs9Dqw3ssir4JkiUuqFH1 X-Received: by 2002:a05:6a00:983:b0:68e:2c2a:5172 with SMTP id u3-20020a056a00098300b0068e2c2a5172mr5002543pfg.6.1694634866734; Wed, 13 Sep 2023 12:54:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694634866; cv=none; d=google.com; s=arc-20160816; b=Z8SYEALisKWzD6As7KmPCTgqvKI3frfjOP9XCUnKSeGhsle76i9j1fLIaBZ8mLEBln QnOogMBL1F9M/DXcEwgq7UuBM6LKzEuB1VUA4Hd6P4xbgbuHcl+UTauhjpSBilmRgRPB Gm3I4mWrU5O2zEpK3Lhoa87le6qJ2ykBdSYhuiljzF3Ji0UYU3ezyidtIW0+uJzoypSe 3CAkPbJzTPTiXRU2dcEY09diUpQnWLtmBW0JOfNP0HOGxY/xfCAlMJCO7toQ9gfnerl9 VgzD4nGdp0iPWzH6eYCT3SJuqpSh24qhV1629woMhKE5lVUa4gWvO4TllMF1hwelueyD MJsg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=KUlSvW+OkQtzDHg8NqO6OPTfFlw/Bvt7AFXuHFNze5Q=; fh=x1hGPnZeYvyedQGDVaFY4F5NZX5OfdEJxyYqoMYIkPY=; b=vTf3CtBNJMTikk3BzbKxX3I9l/dOm+t3HAeQ5dzQ3jq1LSygUh19SXMtwtfXXSCCOl +GyADPKCp8IQrXbYuwDEfAPI1uiAyAQx4XNqr2xv95/P9Zte/d/lAu5JJuuexIbKYmi2 sMzb61v4jUxxB94IexxY7Z1Fm68uqozIpogwG81oQc6u7+OSviUCeJ4i6JeBMv36OcxL 7Ltl8rVcZf6tn95E9hzx7upDFRscTDs+vGMxkjT3dyzFcg5kxSJdmAottAb8AjDD+q71 Y1FEv8yZ3W0YpiZzHzqpnykX5ej2Bv+OYVP3XsoY88LISuPEAo57nFzvgV4AW5iXbIP6 w3nw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=XszMOHbW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id c129-20020a633587000000b005404f8dd0easi10501139pga.292.2023.09.13.12.54.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Sep 2023 12:54:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=XszMOHbW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id AC4CD8273D35; Wed, 13 Sep 2023 12:54:21 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232431AbjIMTyO (ORCPT <rfc822;pwkd43@gmail.com> + 34 others); Wed, 13 Sep 2023 15:54:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58012 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229642AbjIMTyN (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 13 Sep 2023 15:54:13 -0400 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5B9E99E; Wed, 13 Sep 2023 12:54:09 -0700 (PDT) Received: from umang.jainideasonboard.com (unknown [103.86.18.170]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 8B4CA755; Wed, 13 Sep 2023 21:52:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1694634755; bh=dZQYIYhd8wtDU67jQTMB8G2epHTfgZbmOFawwvBWHRw=; h=From:To:Cc:Subject:Date:From; b=XszMOHbWPsFIBRT1kXxrTff9DznD6g3PRD6GPRe0lEe2KDA7CN18WF/Tteogaywxg mzcYCwr3e06DVsU5j83i5VzxBomxEoMuY90hiwpfcGuaa8NZYHwR+DlYHD9VF4d09s 8u2EOtD7sgEH4tWCEbVRJ2g8D5v8tEukwlQ99gxo= From: Umang Jain <umang.jain@ideasonboard.com> To: linux-staging@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-rpi-kernel@lists.infradead.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Stefan Wahren <stefan.wahren@i2se.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Florian Fainelli <f.fainelli@gmail.com>, Adrien Thierry <athierry@redhat.com>, Dan Carpenter <error27@gmail.com>, Dave Stevenson <dave.stevenson@raspberrypi.com>, Kieran Bingham <kieran.bingham@ideasonboard.com>, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, Umang Jain <umang.jain@ideasonboard.com> Subject: [PATCH v11 0/5] staging: vc04_services: vchiq: Register devices with a custom bus_type Date: Thu, 14 Sep 2023 01:23:49 +0530 Message-Id: <20230913195354.835884-1-umang.jain@ideasonboard.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Wed, 13 Sep 2023 12:54:21 -0700 (PDT) X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1776953450490963724 X-GMAIL-MSGID: 1776953450490963724 |
Series |
staging: vc04_services: vchiq: Register devices with a custom bus_type
|
|
Message
Umang Jain
Sept. 13, 2023, 7:53 p.m. UTC
The patch series added a new bus type vchiq_bus_type and registers child devices in order to move them away from using platform device/driver. Tested on RPi-3-b with media tree master branch. Patch 1/5 and 2/5 adds a new bus_type and registers them to vchiq interface Patch 3/5 and 4/5 moves the bcm2835-camera and bcm2835-audio to the new bus respectively Patch 5/5 removes a platform registeration helper which is no longer required. Changes in v11: - Move setting of DMA mask in child devices (3/5 and 4/5) - Fixes "DMA mask not set issue" reported in v10. Changes in v10: - fix dma_attr WARN issue with bcm2835-audio module loading - Unregister bus on parent platform device fails to register - Reword commit to highlight bcm2835_audio to bcm2835-audio name change Changes in v9: - Fix module autoloading - Implement bus_type's probe() callback to load drivers - Implement bus_type's uevent() to make sure appropriate drivers are loaded when device are registed from vchiq. Changes in v8: - Drop dual licensing. Instead use GPL-2.0 only for patch 1/5 Changes in v7: (5 out of 6 patches from v6 merged) - Split the main patch (6/6) as requested. - Use struct vchiq_device * instead of struct device * in all bus functions. - Drop additional name attribute displayed in sysfs (redundant info) - Document vchiq_interface doesn't enumerate device discovery - remove EXPORT_SYMBOL_GPL(vchiq_bus_type) Changes in v6: - Split struct device and struct driver wrappers in vchiq_device.[ch] - Move vchiq_bus_type definition to vchiq_device.[ch] as well - return error on bus_register() failure - drop dma_set_mask_and_coherent - trivial variable name change Changes in v5: - Fixup missing "staging: " in commits' subject line - No code changes from v4 Changes in v4: - Introduce patches to drop include directives from Makefile Changes in v3: - Rework entirely to replace platform devices/driver model -v2: https://lore.kernel.org/all/20221222191500.515795-1-umang.jain@ideasonboard.com/ -v1: https://lore.kernel.org/all/20221220084404.19280-1-umang.jain@ideasonboard.com/ Umang Jain (5): staging: vc04_services: vchiq_arm: Add new bus type and device type staging: vc04_services: vchiq_arm: Register vchiq_bus_type staging: bcm2835-camera: Register bcm2835-camera with vchiq_bus_type staging: bcm2835-audio: Register bcm2835-audio with vchiq_bus_type staging: vc04_services: vchiq_arm: Remove vchiq_register_child() drivers/staging/vc04_services/Makefile | 1 + .../vc04_services/bcm2835-audio/bcm2835.c | 29 +++-- .../bcm2835-camera/bcm2835-camera.c | 26 +++-- .../interface/vchiq_arm/vchiq_arm.c | 52 ++++----- .../interface/vchiq_arm/vchiq_device.c | 104 ++++++++++++++++++ .../interface/vchiq_arm/vchiq_device.h | 54 +++++++++ 6 files changed, 219 insertions(+), 47 deletions(-) create mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.c create mode 100644 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_device.h base-commit: 0bb80ecc33a8fb5a682236443c1e740d5c917d1d
Comments
On Thu, Sep 14, 2023 at 01:23:50AM +0530, Umang Jain wrote: > +static int vchiq_bus_type_match(struct device *dev, struct device_driver *drv) > +{ > + if (dev->bus == &vchiq_bus_type && > + strcmp(dev_name(dev), drv->name) == 0) > + return 1; > + > + return 0; > +} I was not going to comment on this, because it's unfair to nitpick a v11 patch... But since you're going to have to redo it anyway, could you make this function bool and change it to return true/false. static bool vchiq_bus_type_match(struct device *dev, struct device_driver *drv) { if (dev->bus == &vchiq_bus_type && strcmp(dev_name(dev), drv->name) == 0) return true; return false; } > +static int vchiq_bus_probe(struct device *dev) > +{ > + struct vchiq_device *device = to_vchiq_device(dev); > + struct vchiq_driver *driver = to_vchiq_driver(dev->driver); > + int ret; > + > + ret = driver->probe(device); > + if (ret == 0) > + return 0; > + > + return ret; Ugh... I was going to ignore this as well, but later there is a checkpatch warning so then I decided nitpicking was ok. Always do error handling. if (ret). Never do success handling. if (!ret). But here it can be done on one line. return driver->probe(device); > +} > + > +struct bus_type vchiq_bus_type = { > + .name = "vchiq-bus", > + .match = vchiq_bus_type_match, > + .uevent = vchiq_bus_uevent, > + .probe = vchiq_bus_probe, > +}; > + > +static void vchiq_device_release(struct device *dev) > +{ > + struct vchiq_device *device = to_vchiq_device(dev); > + > + kfree(device); > +} > + > +struct vchiq_device * > +vchiq_device_register(struct device *parent, const char *name) > +{ > + struct vchiq_device *device; > + int ret; > + > + device = kzalloc(sizeof(*device), GFP_KERNEL); > + if (!device) { > + dev_err(parent, "Cannot register %s: Insufficient memory\n", > + name); Run checkpatch.pl -f on your files. > + return NULL; > + } Stefan already commented on the other stuff I was going to say. regards, dan carpenter