From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760741AbbJ3TsP (ORCPT ); Fri, 30 Oct 2015 15:48:15 -0400 Received: from mail-bl2on0103.outbound.protection.outlook.com ([65.55.169.103]:58290 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759646AbbJ3Trq (ORCPT ); Fri, 30 Oct 2015 15:47:46 -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 v2 6/8] staging: fsl-mc: bus rescan attribute to sync kernel with MC Date: Fri, 30 Oct 2015 14:32:08 -0500 Message-ID: <1446233530-8918-7-git-send-email-Lijun.Pan@freescale.com> X-Mailer: git-send-email 2.3.3 In-Reply-To: <1446233530-8918-1-git-send-email-Lijun.Pan@freescale.com> References: <1446233530-8918-1-git-send-email-Lijun.Pan@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD052;1:7nJ6s4y4bU3OXZVWogv8+HjPTdexaFm8gO+QJUQeACV3b/4FHqZ6ysm+1Q558ISNUJGSaqxENBoeWpu7ar3Uj5hqpXid2dLkHKTHgZUMG2DGxbOers0rydePUjXOVHUi7zT8gov8q5vlkiez++pbx3BMiB48b2oCPjvcoxBrQRipX9R7wnqVr7o42ciTezTPTtOT2cyFgpoFV/jmR5yo9lbpYtYyHjDeU9Ls3EWPk05n/2u/l1HSzAaY0AcJp83U7YKb4Cx9dA0wKSmm7nuY2PJTFHur/GN+YrY3fuSYuej1VW6YRFvLXEYI411FGBsW7LIy31Rs3yOl0b/rxPbI2wB2IU5O/lB5mL9z/O6nSqaUZZIGdxHgGNK6148NSPPvpiMwG8A0n6WSaWYysS8NEQ== X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(5001960100002)(85426001)(104016004)(48376002)(2201001)(50226001)(105606002)(229853001)(92566002)(36756003)(50466002)(5008740100001)(11100500001)(5003940100001)(106466001)(19580395003)(6806005)(2950100001)(107886002)(47776003)(189998001)(77096005)(5001920100001)(19580405001)(97736004)(5007970100001)(5001770100001)(81156007)(87936001)(86362001)(4001430100002)(50986999)(76176999);DIR:OUT;SFP:1102;SCL:1;SRVR:CY1PR03MB1456;H:tx30smr01.am.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB1456;2:SpDRzTg7vzFaykiuhDzLcb752DgbAn2PKAE/PgjimYBbX2MAa+LsR2/ztF/uYVL1KnS0Q8f+kY5+26ut8Xe5niGdwM3h278ed5537Es3R4t+DsQuq6DWyBErLaSp3i7BU0aPTJzrhypIFEdXpyQwn0f1oiA93U0Va9pRmDNSFfA=;3:1zv3VwNSUDQ76bRLke1ROnDUS9q8DL0E9Qg8m4LfMnnUuN3biKPcLe0tRufJlWG64w19PrbGVZktMwDsPrZfLGT+1OC+qcnDD/h2UB18Dq78DnNgkRzEG/FF3j4nOqLFcPfu0+wdzScFVg7Ej8qhmcdRbHOcJ4yPSJ978RDFqLMwbk4S52tqiGduUrf4/CgNz2iRlo9dPtauiytCoVUlym68OyLL35L/Bd56WYuyn2M=;25:OmTO+8d+dOrQdy6I+q2Qo+pr9JRpWJg1W7KwCIrMfqn7Lui5YPQFsQxzeAo7Q7Lz/wf8XF97pWnCprM4PMKcYf/EUpY2I1nE2sKmSMaMcAISVcoNOi+pVvhqGa1TEYFNy9AHM+OdRqu4KccIRmOsfxji3F3kFsmO6dd1S6rwRDxAhuacME9OBjVNmWY5iUq5jNd6OIt3taHYkAr9bZAgpUzJvlZfIxDh8sIqbDkeqLDyj1hQXq/fAtEzlvRoMx3H X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1456; X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB1456;20:tYSmi7vE2Mj+Bv4zwJ6OhYZek5KW6OicZMCNZFr/0blfij9l/MJB5aF2YJ6gXhoYraUFomcBgcd9w8Tqziv3JbUQ1cY7R/eJaZMGalp+mOCSxyYtHGOE/qRlWAWqnfCFebCGLOqIIPmJGSuRgdaE43wQaDeEmone87iKv7XJN8FnbWoOgiBKiwROee00PIFI7ZxJhHa0XazzyGIJuiiR5bSCt62Xj9pvvyASTa+jvU65zv95OejR9po3erfRMoHb52B5+pTDwPqDxj9mviCsFwMFQIl93+4UvmhY2vHxmjpYvbtJQB3nB8crsRGDRIq7Dz6ro53bCebkGF2kKIJ4jxFGPZNlwGK8/vBUKMlW20k=;4:DN3SSEYqyZmzPgj3Irmnuue9cJDXd0agxM7BNv2WCoFqLMkjlhWemTweQmRsHFwkRjUxAp3WyrAykm02UtqDWjROe4WzuNWOjBq7BImPi8zXaDU3zqWx0PiuMtqEDEnDa9XcFNT5F8wt21xftvp0hzt8sbwN/zffEueZAO4fnvizZXBTDioVKjxB50iIiR1FVpoUV5bCu6ZEe2R1wDogCgcb0eyr/qHBmMKBtK3Onq0hc3B9Y/mailZsgquJnpzir0RZnS5g1tdA2HnlIvx6WgJ3mpJRV60c2whss+xaVqgCgdKL92LkRh+KYT6u6uzzS9YyjsNM1n9nT1Duc9WC/WPg7JgywZSd56YSipCGfF6S3UufnsrCOuMJpBzcyeeBCR5SC6cvnODmJeni3twFEQ== 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)(102215026);SRVR:CY1PR03MB1456;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1456; X-Forefront-PRVS: 07459438AA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR03MB1456;23:eVfMVXosy17MVmT1Fd8cWRZPdQXWBajvaWafV5DlI?= =?us-ascii?Q?5MriowBmVPOWn2Ujsv60OLogdvK0BevkvB8zNETJjsVuQqtKjok7uRbrDpk8?= =?us-ascii?Q?Njf2TiG1zm02G4nQfScgxbPoAoO+DhTHq5BLu02mDJuDieLjH//Rwfjq5Pai?= =?us-ascii?Q?Rh5CZdjCiwDPLMORYo34RYSUgzAztLqVrpQ03Q+6IatK5JX/WKWdeYPO0YP9?= =?us-ascii?Q?Gw0sdeWkuzM7XF0mHQoOEveoqdkF1jwXnN/MTjfIh2VXSo/PKVzB46CNoHEH?= =?us-ascii?Q?7nswvoNSALTESQebBSK8tP+W5pjlop/m6BGIM+2gfbclnPVlhhnCXOLz1FV2?= =?us-ascii?Q?dXva2hy1lzIKeEiqsccDZ5CxWfNjGiJC8tWCB3jYz59+DHUqOzseuxOPFuXZ?= =?us-ascii?Q?E2ZGHpa8A1+Hr275USSJPtbJViXwIm5zSqL5bXkdKW85uOHRX0FgFrnzYoEY?= =?us-ascii?Q?/q6ghaQZsPqDRDDf+Nxtau8K+0QOX1MtOGM3BvEGI5Fsws/3LGxxxV2js5G6?= =?us-ascii?Q?RYowyif4KrvTcc63I62Z0avAh/bKJdzL1D2s6clw3RSVLCdLoDhTA48iH/hN?= =?us-ascii?Q?vZ/pfCexa7INdMFpvtW0bRX75JIIOFi9cVoHJZJxW1zcAxPbw/2Lyn1LLNOx?= =?us-ascii?Q?WEdwL47QmZSaFsVQxkToz3Kp5OPr1VjdnOUXg//GN5el8X25xh6taq44mQGz?= =?us-ascii?Q?Z6yJr0vtWolE5ZyojYABoTUDDN/d+qKj6mOCGvt2u1GB5m/8yCmJ/jgr58rU?= =?us-ascii?Q?QRgNTx/Bhk0dgahOQ+OUhSNz96BchU7CA4gBFSO8rYRa1uC23AKiCDfXnMKQ?= =?us-ascii?Q?ckB/8WW9ZFGm9jnlz0qIkac+PCDqlQMzlb2yRyJetgiwfnNLkMf3AQhYeGi2?= =?us-ascii?Q?dR+KMlha9V/5ruGeZCELrA+kEv7Zdoho2G4NIZbYQsAo2UWidbQplpui2cBR?= =?us-ascii?Q?KVQFAMDpAD/8y7g1RVa/hFZQ5w+YZvI77ghdZgM+Mjpk40umuw9M3acdLAVw?= =?us-ascii?Q?7EOYpM8Z+jN2zlUJd4Z+I5WA6lWDlETUypjjQlf9gou00lmyS7Qe8zfWtKy/?= =?us-ascii?Q?pDe+Wnzjnkw1isG4CYFiubvaL/d6NXUuRJpAAB+5pPi+RzdWiE9cSM8YePFZ?= =?us-ascii?Q?NrRIkTY9iM=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR03MB1456;5:gBGzmHnRXzVlJ5ioNQLgBaTfUJi47+plvF1JL4gPY8zx/6w5ZMkRiauidfpp/UQO9I9ll3PvgsWR3pWc9NFGKLwQwcKnxZJJRlsFUsA2dQ2EkhNWttuuezbhmX28LlUP7LOtmKFs5VmdSS3KTnJnlA==;24:8ViktJ3seIPUFXyBf9MUONTXE4VctVqZ8gXbsvowIZbCXZ6+CNoSXCK3JhajHI5UsiR5rMX9shqEFVm6Vf/wSF4IE9AlCkhaqjvqdKiTNI8=;20:PPcgGIj85GNeIHVGJkojRjz88zmkZfs0ytHSuFUh23llSHLjdt0qFJrlNIr7aXOhtxf84L6aZdEJs4LIW92EqQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2015 19:47:42.8938 (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: CY1PR03MB1456 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