From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752564AbbJYW5D (ORCPT ); Sun, 25 Oct 2015 18:57:03 -0400 Received: from mail-bn1bon0141.outbound.protection.outlook.com ([157.56.111.141]:10176 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752024AbbJYW4t (ORCPT ); Sun, 25 Oct 2015 18:56:49 -0400 Authentication-Results: spf=fail (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 4/5] staging: fsl-mc: bus rescan attribute to sync kernel with MC Date: Sun, 25 Oct 2015 17:41:22 -0500 Message-ID: <1445812883-23551-5-git-send-email-Lijun.Pan@freescale.com> X-Mailer: git-send-email 2.3.3 In-Reply-To: <1445812883-23551-1-git-send-email-Lijun.Pan@freescale.com> References: <1445812883-23551-1-git-send-email-Lijun.Pan@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD003;1:YBX88y3h65JW949iDiYjNlvzAhafbmOefdQeIErlOHGVzUZmXh44c7ETc8j+bOCBKiLvyCEJvF47u1tDWuYH0mFeac/Zcg0Y5GfJmMKZu/CHP2++8iX32AqdYCXKFjgGh30Wj8XiVWyRWQ6SyAdajVxwEJrS+NtDBy2zU1XkHzKEIAuZG22BKxioBW1ig6TZbr8bnqW7YN+SVuotMOBM9YVAoV/PSA65kanxSSxXmc3Q/4Ewozpxt65CxwzHtKFkrKevkxvCHPCpYJOPLdIgli7yKECVsjn6tArEIHS/g3FEJ4LR2U7v9aBf7xObaWLopCovtlZPE/awwzgiGEMFFFLYG/rn7zOBPl2hTr1MC+gg7fexfsZLJnMS9ILKlYEHcTqB90r7QD4iTum5F56ugQ== X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(87936001)(50466002)(77096005)(106466001)(92566002)(2950100001)(48376002)(19580395003)(105606002)(50986999)(19580405001)(76176999)(47776003)(50226001)(189998001)(5007970100001)(5008740100001)(5001920100001)(5001770100001)(85426001)(81156007)(107886002)(5001960100002)(97736004)(2201001)(229853001)(86362001)(6806005)(4001430100002)(104016004)(5003940100001)(11100500001)(36756003);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB504;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB504;2:fOw8iZW+kYrK+VR90j76BKqkKN28Ov4IqRzryl3HzwLQ+Aupt8MKc4VAK0Fd7zbGT3iNkc2slx79K8xGjZwYvImzC2KtLl9rmabiHmCgBFrw/QniCIPR5+AdDe53J72rCOe+Gntq5GEC98+WR7NX+7Ncm5MCwkKcFWmLENObifo=;3:CTFkJ+BmMSu4/dNx7Bna4uEsgj58VrKp8w4fyh/LZvmc/JFGtCXPMplAB5a4IAZI64htX3MB3Un/EcuCyC5Ly4iapKoIp09koxOfrCbRIcaMnnRYZmE5rmMGMb1xfVDLd2iDlOT9FuMv9OcGsrk/rCy/x+nMr+5v5JfgQ1EWKDkQL+hF4pCbf2HTzRqVnalJLuuietz0/+HS3joU/SuHy0FiJHBkwJ/iEdTrJmgOIIo=;25:Jgmj9M3d6DWUrfJjrMHqxtP5Xch2iToSz+dmALQknKc44sZEdtIx4iN0BH4Q17Coti779fiAlGI5cLqRx5G32r5X6rO6wugt4q+pL4piiUgvgzT1+HKk1SschJgqkfJk6m/GPxSKjHfp7ehY5uOMv986Jq/fSXFRROZienZT4ii34ey0jAR5eOXpvz4LRsONRv2Bs1CNl2oJW/93ksBxR563e7BaaaRqz+9Nfgt9FkPNGmOee7j5uixNGO7YmQc6 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB504; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB504;20:2ldoWiCyB/SVasmmXE87gQOsO+YkEPFun0BfAk/TDhWmys6F7SUbyv3UVSpDYROfYySniDXUp7Zj+2DaAdhMhyZF/ceoSyDbE9+27zdEF8nO1qL0OywKDNyt7fS0wOEpcXLTeXPO9GH8X+tjteJbQHl2qrUgUnaTpguywOJKmB/AfGX6wWdEgxj3f4BxH6nEn5ItajCB6bVnLuQ6oZu4bTG2Ez2qrDEAj57tB3H1McLD+SP350Elk+uQeTT/0R9fTYDCyJR64mMvPSwF0Y3TVn8Q6qJjlgqW9ZqQZdL8ivHFArkqSRirAVMmZPiPQS4G80w3mei4y07C9z97+c2esylk0pdtHASEyiUW4pzv0/c=;4:I7/7I6XQbQiPfL58w0o4rn1ckh+6Wiy2mwG8HhgRe/544FXPZX0z1ZLnP8YIgy5C2faH7bAakQwvkM9QqPpaVfm1oEtzt15VP4mspj/WUN+M+SYlmc5tIwp3XKD9Kfwrh+eNVnOyIOrNNBeoj17zEezds0RUjCOws3DHEbkjF4bsZPuEkTKpKpMlead2yEPk0Cn1RCY9QNgSNBxttCKX9Jf/GnRjgMITK35d810A4c6yIA9YzqJn+5w7Ns6xtFATL8aLVOc4eWTwfCRDepn8MyQYSeo8QV1nLd1kvEdfBvqxSFDO7eQYzZ+9W9YbOXUpa8FTCo8vUJYA94c4CIz4oy37oMEB9uEfQJED5gdgoF2G/j1ev1pD0BTqQB9yCNbY X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(520078)(3002001)(102215026);SRVR:BLUPR03MB504;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB504; X-Forefront-PRVS: 074040B844 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB504;23:pBhX9Ynw7SUzdzBlndb/X6/g+CA47vVKChMfwbh67o?= =?us-ascii?Q?9V3UcywaCeEFbnhqfQbZAJh+OeGAwL3VTw5n/QbJEW2rFT57gTSjavr4L4sL?= =?us-ascii?Q?ZVlZ5gGTK0G/vit8wZsBwK5+kgvhyYMDJm6e/En0l9s09IaM0C57XSfnQSCa?= =?us-ascii?Q?VANaohNpgBJC0p0ClYu6pJqEmTKJA6uwUAHqzS2jMJaL1EpO9pHnCioxLH3c?= =?us-ascii?Q?a73vMg+Z6nhW+wBVhWo+uHfi31sH+EUl9POXVvkNQLwmZvBckFMUpoF9Id4N?= =?us-ascii?Q?0mc3oyQIB7tk/qF3pxxuRlYujprEV/f88MJZ5eOwbz/StaVDK3LSc07sz/ag?= =?us-ascii?Q?+QYvuQ07LdLkYWFsVsA0mAjAaAIrERajjLT1BYgdERe6QB0gtETjtQn7Oyed?= =?us-ascii?Q?v1gCz6HTmCkyiNx5AguzFbw4KDxZW7HEABC23aPGBHmr/ijo+mvLskhhpYVJ?= =?us-ascii?Q?SlpFa2Wyjx67J7mpoIuFT9Jrjh1iqKds4PhCrs3EQV2y2Hi4n49LCVXUeD8w?= =?us-ascii?Q?3Ik0fehf9dqL3mjsuCpLdgPHDjg0rkXwh8RvPHyDhqCARBJVTpRqsSpQYKoF?= =?us-ascii?Q?R4NiBmQIpI2KrVlqewCzWDNTgtqQ/OMAHfTzPiUpHYGW04cQnaJEBtRsBgCw?= =?us-ascii?Q?b0TFnOKPQUzIS7qOHwJyOHKF46yHM7wOzGfJbmUXiQImIuPWdfoxUpBw2syc?= =?us-ascii?Q?DPS29P1C+z4GFjuzo9aDzIaJs+6QJwSoAyBevF+fQl0k9ssroqcblZpRAISo?= =?us-ascii?Q?NzObEAQsi+uiBSBWIIqDo8LX0kdRfuo+GzBxWGLqV/GfWkksfn8ndJW9uE8U?= =?us-ascii?Q?OFzCV/G16wMN0d8wS3zFjvJl3XQrf+DZNRBF40bzoZZq6RcB9Lhhz/S4VMOU?= =?us-ascii?Q?UzkpXhXmznAi88aSGSz23Qlgk3dDSs/2fdzrkma2EmGORcbGJ6HY4vLxhFoW?= =?us-ascii?Q?Xx83cKnMlARGEWi7OnR2Ft28xKrbbQEucOEIa4Jqsh1il/D889PzgdqFCpR0?= =?us-ascii?Q?IF5w012Qt8ceUZiSZt1eHDdbRzoXZ7auDH6h72/scBbkptK6nZWEbabuur5I?= =?us-ascii?Q?eOdkeBOpx3shFUrC1pXV64C+KnNtG6G3XQBoTtdj2KvTRyTWR6aIP24jPfYD?= =?us-ascii?Q?CmvE/AFxY=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB504;5:lkQTDBhdogayJwR6u1IktuNqAUDun7qtvVnyXLbOParoBNw4oq5/KHocrNgwy4pPXG4Xyq8sx2BnYRYq6E69lJdREUnAu8hzE3JPxXiXVoERITtWSwbmcU5HSFsiODtcU7aqDM0U3OPjO+srnRlUmw==;24:wYZhj5eZ7X9XZmwNq1tkqO5BxHcSj8jt08A6Fsp+J0DrSXT0RiM57UfldeyiUGZAi30oKpMV1imITZLA3TJUVsb9IxIaadMjfq+lWQaLlcc=;20:nGwU/cYhDJIH8Jju35CYhkmTFQD63TUmB/gzN2NN2DLp5VFxwhbdzmF7SrOdSgU8FoINhOjb+ri+qfeLa/JcYA== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2015 22:56:43.3779 (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: BLUPR03MB504 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 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); -- 2.3.3