From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753764AbbJ0Fjn (ORCPT ); Tue, 27 Oct 2015 01:39:43 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:38929 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751454AbbJ0Fjm (ORCPT ); Tue, 27 Oct 2015 01:39:42 -0400 Date: Tue, 27 Oct 2015 14:39:39 +0900 From: Greg KH To: Lijun Pan Cc: arnd@arndb.de, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, bhamciu1@freescale.com, bhupesh.sharma@freescale.com, german.rivera@freescale.com, agraf@suse.de, stuart.yoder@freescale.com, nir.erez@freescale.com, itai.katz@freescale.com, scottwood@freescale.com, leoli@freescale.com, R89243@freescale.com, dan.carpenter@oracle.com, richard.schmitt@freescale.com Subject: Re: [PATCH 4/5] staging: fsl-mc: bus rescan attribute to sync kernel with MC Message-ID: <20151027053939.GA22784@kroah.com> References: <1445812883-23551-1-git-send-email-Lijun.Pan@freescale.com> <1445812883-23551-5-git-send-email-Lijun.Pan@freescale.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1445812883-23551-5-git-send-email-Lijun.Pan@freescale.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Oct 25, 2015 at 05:41:22PM -0500, Lijun Pan wrote: > Introduce the rescan attribute as a bus attribute to > synchronize the fsl-mc bus objects and the MC firmware. > > To rescan the fsl-mc bus, e.g., > echo 1 > /sys/bus/fsl-mc/rescan > > Signed-off-by: Lijun Pan > --- > drivers/staging/fsl-mc/bus/mc-bus.c | 46 +++++++++++++++++++++++++++++++++++++ > 1 file changed, 46 insertions(+) > > diff --git a/drivers/staging/fsl-mc/bus/mc-bus.c b/drivers/staging/fsl-mc/bus/mc-bus.c > index 33a56ad..f1baad7 100644 > --- a/drivers/staging/fsl-mc/bus/mc-bus.c > +++ b/drivers/staging/fsl-mc/bus/mc-bus.c > @@ -144,11 +144,57 @@ static const struct attribute_group *fsl_mc_dev_groups[] = { > NULL, > }; > > +static int scan_fsl_mc_bus(struct device *dev, void *data) > +{ > + struct fsl_mc_device *root_mc_dev; > + struct fsl_mc_bus *root_mc_bus; > + > + if (is_root_dprc(dev)) { > + root_mc_dev = to_fsl_mc_device(dev); > + root_mc_bus = to_fsl_mc_bus(root_mc_dev); > + mutex_lock(&root_mc_bus->scan_mutex); > + dprc_scan_objects(root_mc_dev); > + mutex_unlock(&root_mc_bus->scan_mutex); > + } > + > + return 0; > +} > + > +static ssize_t bus_rescan_store(struct bus_type *bus, > + const char *buf, size_t count) > +{ > + unsigned long val; > + > + if (kstrtoul(buf, 0, &val) < 0) > + return -EINVAL; > + > + if (val) > + bus_for_each_dev(bus, NULL, NULL, scan_fsl_mc_bus); > + > + return count; > +} > +static BUS_ATTR(rescan, (S_IWUSR|S_IWGRP), NULL, bus_rescan_store); > + > +static struct attribute *fsl_mc_bus_attrs[] = { > + &bus_attr_rescan.attr, > + NULL, > +}; > + > +static const struct attribute_group fsl_mc_bus_group = { > + .attrs = fsl_mc_bus_attrs, > +}; > + > +static const struct attribute_group *fsl_mc_bus_groups[] = { > + &fsl_mc_bus_group, > + NULL, > +}; > + > struct bus_type fsl_mc_bus_type = { > .name = "fsl-mc", > .match = fsl_mc_bus_match, > .uevent = fsl_mc_bus_uevent, > .dev_groups = fsl_mc_dev_groups, > + .bus_groups = fsl_mc_bus_groups, > }; > EXPORT_SYMBOL_GPL(fsl_mc_bus_type); No documentation update as well?