From patchwork Fri Aug 8 16:34:51 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pawel Moll X-Patchwork-Id: 35143 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-pd0-f200.google.com (mail-pd0-f200.google.com [209.85.192.200]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 39DE621457 for ; Fri, 8 Aug 2014 16:35:38 +0000 (UTC) Received: by mail-pd0-f200.google.com with SMTP id w10sf34484323pde.3 for ; Fri, 08 Aug 2014 09:35:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:message-id:subject:from:to:cc:date :in-reply-to:references:mime-version:sender:precedence:list-id :x-original-sender:x-original-authentication-results:mailing-list :list-post:list-help:list-archive:list-unsubscribe:content-type :content-transfer-encoding; bh=bgrVZ2IlthDxVXknEVJlWc6x+1XSlmzkVvYZSxrImzk=; b=gX5RHRBgRz4KeaDMnjtLcRGd/IJHJzP/PdHtT59Whhj/uF/VcD8tpf/AU5rmI3d0GG ecFT3mujVFOL30bsetWIQn7H2FaGFbiEzOt8lLTYsAsfQiApMoqX67BZfNR9sFGSWdSi OAb7VBbOq6Hagc9CDA1oHq+OhNbDjuplUBTBeMzYSk4ZocKcEOhdCAjg/P70it8Pd6qS shiJPZ8H3qEeLrYUsdmXTSteOK0haxN54UDpPfbevofZC26Zlzk6hn3K4IifJxfZtRLH lM1mDfcQ2eQMPexUYBwghUvcOBI17lGHTLYp3J9OkgPIzzxGcnqpcpNwRUR9kctAOZEa pdmA== X-Gm-Message-State: ALoCoQnKUJpoy77JluPfadVnuBn6fA8Lts5znu1/XvYsuohLKE7cOZWRaCR11lYqFfRXmBmKnm0i X-Received: by 10.66.141.165 with SMTP id rp5mr674070pab.47.1407515737546; Fri, 08 Aug 2014 09:35:37 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.90.47 with SMTP id w44ls603816qgd.56.gmail; Fri, 08 Aug 2014 09:35:37 -0700 (PDT) X-Received: by 10.52.5.201 with SMTP id u9mr907635vdu.85.1407515737442; Fri, 08 Aug 2014 09:35:37 -0700 (PDT) Received: from mail-vc0-f169.google.com (mail-vc0-f169.google.com [209.85.220.169]) by mx.google.com with ESMTPS id mg6si3061012vec.35.2014.08.08.09.35.37 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 08 Aug 2014 09:35:37 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.220.169 as permitted sender) client-ip=209.85.220.169; Received: by mail-vc0-f169.google.com with SMTP id le20so8713707vcb.14 for ; Fri, 08 Aug 2014 09:35:37 -0700 (PDT) X-Received: by 10.52.144.14 with SMTP id si14mr150054vdb.95.1407515737364; Fri, 08 Aug 2014 09:35:37 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.221.37.5 with SMTP id tc5csp137643vcb; Fri, 8 Aug 2014 09:35:36 -0700 (PDT) X-Received: by 10.70.126.97 with SMTP id mx1mr3521563pdb.0.1407515735774; Fri, 08 Aug 2014 09:35:35 -0700 (PDT) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id dq1si6420953pbc.243.2014.08.08.09.35.35 for ; Fri, 08 Aug 2014 09:35:35 -0700 (PDT) Received-SPF: none (google.com: linux-kernel-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756729AbaHHQfI (ORCPT + 26 others); Fri, 8 Aug 2014 12:35:08 -0400 Received: from fw-tnat.austin.arm.com ([217.140.110.23]:17273 "EHLO collaborate-mta1.arm.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756047AbaHHQfF (ORCPT ); Fri, 8 Aug 2014 12:35:05 -0400 Received: from [10.2.201.42] (hornet.cambridge.arm.com [10.2.201.42]) by collaborate-mta1.arm.com (Postfix) with ESMTP id E100513F91D; Fri, 8 Aug 2014 11:34:50 -0500 (CDT) Message-ID: <1407515691.31897.26.camel@hornet> Subject: Re: [PATCH 2/5] char: tile-srom: Remove reference to platform_bus From: Pawel Moll To: Chris Metcalf Cc: Greg Kroah-Hartman , Olof Johansson , Stephen Warren , Catalin Marinas , "paul@pwsan.com" , Arnd Bergmann , Peter De Schrijver , "arm@kernel.org" , "linux-tegra@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" Date: Fri, 08 Aug 2014 17:34:51 +0100 In-Reply-To: <53E139C8.9000502@tilera.com> References: <1406298233-27876-1-git-send-email-pawel.moll@arm.com> <1406298233-27876-2-git-send-email-pawel.moll@arm.com> <53DAA605.2030500@tilera.com> <1406913678.22529.46.camel@hornet> <53E139C8.9000502@tilera.com> X-Mailer: Evolution 3.10.4-0ubuntu1 Mime-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: pawel.moll@arm.com X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.220.169 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , On Tue, 2014-08-05 at 21:08 +0100, Chris Metcalf wrote: > >> In addition, we also have user binaries > >> in the wild that know to look for /sys/devices/platform/srom/ paths, > >> so I'm pretty reluctant to change this path without good reason. > > So what is the srom class for then if not for device discovery? And why > > do they look for them in the first place? To get relevant character > > device's data, if I understand it right? > > > > Maybe you could just register a simple "proper" platform device for all > > the sroms and then hang the class devices from it? I can type some code > > doing this if it sound reasonably? > > I'm not sure exactly what you mean by device discovery here. > The > subdirectories under /sys/devices/platform/srom/ correspond to partitions > in the SPI-ROM, which are software constructs created by the Tilera hypervisor. > By default we have three, where the first holds boot data that the chip > can use to boot out of hardware, and the other two are smaller partitions > for boot- and user-specific data. We use the /sys files primarily to get the > page size and sector size for the sroms, and also export other interesting > information like the total size of the particular srom device. > > Thank you for volunteering to write a bit of code; if that's the best > way to clarify this for us, fantastic, or else pointing us at existing > good practices or documentation would be great too. I was thinking about something like the following (warning, untested) 8<------------------------------------------- >From c53f0a2492d6cd38d1f82d57916a6528b071e8a8 Mon Sep 17 00:00:00 2001 From: Pawel Moll Date: Fri, 8 Aug 2014 16:32:58 +0100 Subject: [PATCH] char: tile-srom: Add real platform bus parent Add a real platform bus device as a parent for the srom class devices, to prevent non-platform devices hanging from the bus root. Signed-off-by: Pawel Moll --- drivers/char/tile-srom.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/char/tile-srom.c b/drivers/char/tile-srom.c index bd37747..7fb0fd5 100644 --- a/drivers/char/tile-srom.c +++ b/drivers/char/tile-srom.c @@ -76,6 +76,7 @@ MODULE_LICENSE("GPL"); static int srom_devs; /* Number of SROM partitions */ static struct cdev srom_cdev; +static struct platform_device *srom_parent; static struct class *srom_class; static struct srom_dev *srom_devices; @@ -350,7 +351,7 @@ static int srom_setup_minor(struct srom_dev *srom, int index) SROM_PAGE_SIZE_OFF, sizeof(srom->page_size)) < 0) return -EIO; - dev = device_create(srom_class, &platform_bus, + dev = device_create(srom_class, srom_parent, MKDEV(srom_major, index), srom, "%d", index); return PTR_ERR_OR_ZERO(dev); } @@ -415,6 +416,13 @@ static int srom_init(void) if (result < 0) goto fail_chrdev; + /* Create a parent device */ + srom_parent = platform_device_register_simple("srom", -1, NULL, 0); + if (IS_ERR(srom_parent)) { + result = PTR_ERR(srom_parent); + goto fail_pdev; + } + /* Create a sysfs class. */ srom_class = class_create(THIS_MODULE, "srom"); if (IS_ERR(srom_class)) { @@ -438,6 +446,8 @@ fail_class: device_destroy(srom_class, MKDEV(srom_major, i)); class_destroy(srom_class); fail_cdev: + platform_device_unregister(srom_parent); +fail_pdev: cdev_del(&srom_cdev); fail_chrdev: unregister_chrdev_region(dev, srom_devs); @@ -454,6 +464,7 @@ static void srom_cleanup(void) device_destroy(srom_class, MKDEV(srom_major, i)); class_destroy(srom_class); cdev_del(&srom_cdev); + platform_device_unregister(srom_parent); unregister_chrdev_region(MKDEV(srom_major, 0), srom_devs); kfree(srom_devices); }