From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752954AbbLKT7H (ORCPT ); Fri, 11 Dec 2015 14:59:07 -0500 Received: from mail-bn1on0141.outbound.protection.outlook.com ([157.56.110.141]:57889 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751358AbbLKT7E (ORCPT ); Fri, 11 Dec 2015 14:59:04 -0500 Authentication-Results: spf=permerror (sender IP is 192.88.168.50) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none;freescale.mail.onmicrosoft.com; dmarc=none action=none header.from=freescale.com; From: Lijun Pan To: , , , CC: , , , , , , , , , , , , , Lijun Pan Subject: [PATCH RESEND v2 6/8] staging: fsl-mc: bus rescan attribute to sync kernel with MC Date: Fri, 11 Dec 2015 13:25:52 -0600 Message-ID: <1449861954-2824-7-git-send-email-Lijun.Pan@freescale.com> X-Mailer: git-send-email 2.3.3 In-Reply-To: <1449861954-2824-1-git-send-email-Lijun.Pan@freescale.com> References: <1449861954-2824-1-git-send-email-Lijun.Pan@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD006;1:xmQJLFM22As3J52v35fmlqMgbOfOOzoFqOdl4X6+v0M0c3CR4jNm4uYvt2WujYoYaf8J1xL1xgAs7tEp234HEfJnGbsF8A4arlX2XoLhWbRUJLGCSFpHHfmMe/63olrKXnvgaPvB1gjV9n3PxgLK6FWmRKGpIvg04/R1Hte5f7YsxRxi9yMh3r9nElZ9IbpqZfNM8twXsDfzKvIZks8gp/SzwxHsh8Al56rWBnb83fLKRWnl3nsU/o1vF8U7lnpr+Rbh/pFrt6OuYVJNAjxdqClPkTW/lulGXMJxXbQfc2c46d+9zstwRV3m2CMqKpi5FYabAvdWvlPYqZGA2ASqapOFvVa3Siwph+JoWw9jaMfkYN0Z7Tj5Iba2mwGHMQG+hPDJr/TpDhSTmPhVk8e6qGkBpS2rF7fLk2dCLEVNFNc= X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(448002)(189002)(199003)(6806005)(77096005)(86362001)(586003)(104016004)(87936001)(106466001)(50226001)(85326001)(11100500001)(1220700001)(1096002)(4001430100002)(2201001)(50986999)(92566002)(107886002)(5008740100001)(5001770100001)(19580395003)(50466002)(48376002)(47776003)(5003940100001)(5001960100002)(189998001)(76176999)(97736004)(229853001)(36756003)(81156007)(19580405001)(2950100001)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:DM2PR03MB509;H:tx30smr01.am.freescale.net;FPR:;SPF:PermError;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB509;2:67mCoOsPuKNfaUcqfllvSbsK9BR6LU/k4+02ONQfn3zS8d2VTRpL0wkGhDcsQYSiOJb7yAhxuDxG1OBegaJ6GEypAoHnAv2a6kgMbqw3K/oX2O0ni9+okOimiHL32tfDdNh8+LLiyeQb7IwEx4aE0g==;3:ZOM/3tZNpXmv8vqGfhPng2cMMQPuMUAKTMG4GUp+m7919RzSQCE6zPDrAXHDdJIjNkbIB5dTGiNx54nmEau/ySfr/Fb+hTLLU5WbZPYhanYO3NTiELchLj7Fl8zMsBAPCps4fPsAPX9u0tcqBla0DRUYcmCVZQ7XI3prpFW8kn0DjL0482VqHQHJDaprUU/3qGl7AG5pGjcvWQQ8dBFD3xJ8i6cB8itkwweGy55fFZI=;25:3Dnn3TaftVzOaR3WGOmPN7c0ILJuu41TThoXURr0O8oR19QwbeC+i7lt15R9P0LQAD4vVq3PXDuv1x6Hbti+y3pEiJFpqCscPaZwg4wlin+sDPiSo9dS/rAToOFI4wH937zQjk8VFnZ4YR9lqyXQYbW8vmeabCvA6EOaTaC1jvWhAEZbVnLvBPc4VhqCE8m+KnlAkFJYSB9b82OUdrRKvnURJohvEy9EyoLOgxmlc+lh53GLM8mk3cLUhHvUdC1E X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB509; X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB509;20:5/6BUPv1WpzcXmrWMY5lC2fpv510YnCTqLKORRAc46CVwv8Ivlts9YBPscHzUlq8b01ApGFJWOxqotHx4fuuPb/rknvHyqNYvbA1q9LexMon4OBG3RL+LABpOb08TDuGQVyPnMLdV8fLh1dOSe0jILl6pjlgMPeYcAfcn6E37XGHu88JuE9Ji3ZCgX/6yyW4nUe2u4FKJpAkYp7qZcY3rIPEp3KpdK0rACw1DuYlMVQVexRpix94Vrufjc8HzVdKBI07sbs8bEm2tjF2Z3ZMEu7hqmulgW05AmOVSUu2ev6Orx+ySNbXxhStrT2Eru2gvE+Uwn/VjMc3a2VfzrBBBE3NCTuxlO/K8G1gtdmQ6kc=;4:Zn9U/gl3YlepQi7iHDdCH76YGU2SEzqYHLGK3SFwlWeSmSR1oGsJCWFh9RHUJ/4mHAfJDc0hVel/bhn4tNZ4g3Gzte4SPEXwTyXalCWBiRuovMbAVTt+o62zT6OycrlJXHS/iTbBtTdHTz/+UldZ/MsoRaXQm/dcfj5ahUwifZ7n5JEIE112dtKMLBTNCDdWge8Tx1i8s3do3YWXRuiL5wX/SnsTFs2BCyUqo3kHhGeprqhpYhE79GwKTm4cL1ui7gN/UnRhqmAt+CskC/NrP2+sjSkWSMpxC82jKIw1aLEFTDTiOGC2CcsquE3df3O+0tSExvm4nkxrEWgbKcBoUJ+z6QSvXWCP4gZVczPXxVIbB1udljdIJf3eRjTJUJQomxvcpymM8vn6sM3VgG8I0+LFZoq4z9f2uhXokUsel58= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001)(10201501046);SRVR:DM2PR03MB509;BCL:0;PCL:0;RULEID:;SRVR:DM2PR03MB509; X-Forefront-PRVS: 0787459938 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM2PR03MB509;23:c8fT9Kp0tZkymtDO/Y2ijwf4Ukd7WIm+wrUzX/TJOB?= =?us-ascii?Q?83Itio0bYsEELD30H/D2OgcZBNMDTJltQwN96mCT1ircN8LA3ahES0P1kbLk?= =?us-ascii?Q?/OIg7aTB5wCQP7xEJeqe5bfQWvjWxW940NaqNhAtK8X24WujlRMGleQ5L3VX?= =?us-ascii?Q?o89SCHPwdSRsK1CLIAT4JddA9QUiJRHUpqz//8eROq/sa+kv+vRs0YpY6XsX?= =?us-ascii?Q?6TndJfl7gBpvxvBwMB4/zDdGEC8e5XlpaHMPi7ICJsWs99dWpYHMByVMYLV/?= =?us-ascii?Q?3EpwafQcW5fJNsgQ7tcNcvLPS0DKQcjiz57Z/mSOssXR3daT2MtU2A6JSYpl?= =?us-ascii?Q?XDcUH61XZK0P4mVK8FXJD4jNOCMNil6Yo9Ma0WmLNqfDMYBxq9WWWzaycrD6?= =?us-ascii?Q?uVcAZzbrgEjKwJLjv6OD7IlO9WHQxgwpH+08DrLuiSUHCZOtc4iPw4m2fuoS?= =?us-ascii?Q?CfzwHwr+g9vRf4+I54tz0T/eYVEq/VFyd9lxezEd7ceZr6RijN37EyMrdQYb?= =?us-ascii?Q?Wnn7FdYgGF8exidMAVswRuSU7GfD7kn257D8PIE5lTvXeP4xqODGh1zT2agR?= =?us-ascii?Q?KzcWXdwK6Llw+W2Hm1pEKSHxRNxGC8/JPkgSqzmt9bDgh94y121SFYL8N1d/?= =?us-ascii?Q?16u1ZFt9qQ8x8R3kZE6mMNRYF+g/lWxsvwAiRAuiJ9ItHXtjKE4cbwjfmyFU?= =?us-ascii?Q?w8R2/rW81YHmSyjOsM1HVwU+FyGCIlXZ8Y4bssSxMlCCqBZQME6ivgP161mE?= =?us-ascii?Q?fwWdas+lYhV/b6ZtLh5+3PqK/2+PRT2WFo4zLFL1zy9F68d4w8PaOXWDnADo?= =?us-ascii?Q?z2EBDauhg/eXW1nag98KtjIRu2DYZvGSbKXylUbX5iPCHDgi+rY77GEmKgB7?= =?us-ascii?Q?oSkTlhkIg5Y9wvay5g/Hx0G+5B4pVIutwX3UgXALd+Qr0j6KgOhkF3A/GGpy?= =?us-ascii?Q?YJexqr/nkuOqVqbCtOKNRb7khe7HMO4oh77I1MBfyymxBEUjtX8NNDJ+Cd/b?= =?us-ascii?Q?vfecs1HfHKcs1trkSMv6ueSXBHxLZCdEfU71+Lantrj3yp6uJK95l8H0ahhO?= =?us-ascii?Q?u4JjU=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR03MB509;5:XmP77T1W53H+x6IPJgVCcAoZQAM0LXVTWFZqnROsFXpduNC2Fc/RvvvhJchZU5bVBtn09WTUlEtIaQ0vHudNeTXPve272N4Vl6kpMQxBhUsWFrxt52kpR+5Hb7UcM+KWhoYVdHns4gawK0XK8Z/wOA==;24:SQbBa52K12C9IcJEN9nDw6y6VjThbToO2SxTVID5SYRPWJ69Yv8Li3SDEomFUl5GJF6g5tPXNQe36Pghis5G1nH1Q1j2OOGHFNW+JyyMwmo= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2015 19:43:11.5134 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.168.50];Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR03MB509 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 61d44fd..f9ee5fe 100644 --- a/drivers/staging/fsl-mc/bus/mc-bus.c +++ b/drivers/staging/fsl-mc/bus/mc-bus.c @@ -142,11 +142,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); -- 2.3.3