From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752616AbbJYW5e (ORCPT ); Sun, 25 Oct 2015 18:57:34 -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 S1752198AbbJYW4r (ORCPT ); Sun, 25 Oct 2015 18:56:47 -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 3/5] staging: fsl-mc: root dprc rescan attribute to sync kernel with MC Date: Sun, 25 Oct 2015 17:41:21 -0500 Message-ID: <1445812883-23551-4-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;BN1BFFO11FD056;1:7wDfER8xe8LYIIAxHUbAxjc+0mYeRIlLf8hYwzYVMb+WA/a/tfGuiEj0dygvdq+MGOUl912mDYK8CEn5sHDGeUUYLyj7O0nq7lgR0KRDDA88w/q0R8xA6B7+dmt3amybOfbHQQJslWvxrl9JMybFtI9oIytG1ooOULENkAIy7KsJNZ33WxnRKCRPCoeAqlejasMSaNFNSGJcy5cpFKaTWxjyUKr3tqeIq5kY+6AFDK/AyjfRB95GoeKIyC6cUno+JVNhWgB1bz5VkwoZDBxcCfcmY5eTCw+K4dwVFonJuWx1gKOPV1Yi8/HsPlMm26cJkvHRsPJFCHZRifsuIKiRs6YpSWPT6OHql0LsGFfJeEXxvPrHRuXG9//Ysg/cMyqHStO0Inn3TEpk2tMddRTM2g== 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:QoJf7TMWqhjFeCD3SbYhncBOz/6SSHMhkJk3uDg0LqUTk3g+R9xdwYKaQWvgZ+Ft6dCTnXr+1SChsIvRUhLk/fIFPkd8htDghVrzEoSfHzt3JPMQT9/lLHnjDNVGHIh2ddPJU2JWhkkP4RpltvPQ6YgZhrhzHZZs86v1ZApBE/M=;3:ZGV+pRj7r4cO4E3YpCroBa0ZBBSULQ31iae2Zc2VpKGpByl0pzKyfT3mG9q0RyxWAOtLUeCt4Jl+AshdkZ4Dbuk4dprzv3TFB3Vjnk44yTFJfK9V0TE8/g8r93WFc98E8rK050/c0zi0yphPycKHCejEttJ6K7tN/7rc5Sa1Sb7149P6feHcq/v+nSbp4o+C2avWkLzAb64QnCb7gmY3l8ZAgM3AE9kiS1ayWUw0gpM=;25:26sLiyLWg1jc6UkvoUgS958RIu9enYMk0/kf23Cs4NJE0U8/U6MwWktezRhQRyFHqNtxdV3y9+4N2yZf5x7pUS/D56JQ43gM+bsCLAoo3A+LdyiHdOmzRR4Jqwnzf+AcBTTTQKNg5/pwXmFAl7Lbvn8dMnpPWkAfv3KK36wvtK2apwxCkB2RcSBT126hkrQFc87qE40FcNsuuv2Ew9MwAbRoGrnDjZGK+3Pudp23b6XtK62mZsSnRUKgQeM+FFFF0TxcqUhTh7yNXbOgkJ8H5w== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB504; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB504;20:RhaxzJh+0rZ0Wzi3sV5Lto9RIRhhAVLZn0qiba2JDISOidkZBViEwogcuydj2RdeBS2Y1JV/p1hwpg8MU6tISsw/5eGmXRdR1qFSdG2Ky06TW0G0wg5OPPceNRFBbVL5izAdvTL4/hCT0eKuUzf0PXoDl9bjg8s6uVrhW5mWrM/gld1UIxNWzOpXyVMD2SyPoJxqcEOdMjHl9hfITpW9MWSbz2kHDH8OTlIwTB7H+OkMrZTtB6MwwKZTpP+wRgplA5MPdKj3XKCJns6tLXEUmR3CBL5f7dEk9NGYsyI1libWnXjZS3RWLp6WWkZwJWMOfpnx4h065opIcgJnhGhZ4JjjBQ1XFzhX6lXut6EU92M=;4:U3ajCcVUjTNr+0dFbv5k0YrvQWammZ2MPiCiknnh2VMTd70YxMAxQ0dds8MQoiXxQlXVfaRg4/7AUwesO+Jdaq+VmGu+MAEll0tgVCYzdNDtCnN446ryV5FNqH3uFtruKaKzejSyGxCGg0VDWI7F0QMhWmVscrebaMBF3YboN3GrffZnHvyeyGFqC+5nIN1DzYJiPOk0R6Y27N838TKcMAO+cF2d3KGlD0Km83jBZ0TPYvpgoXqm+HK3GOi/AAuUVKTK/oVMGCqqkoUCJ3FgWaRcxlSTw8R8kPAhBvedwh8Z9kAcyi9SzxybBpwyfwvrTQSjF9zdDmAzQP4YgD84EcMaatGjtnCqBPMuMqQ7eOmAoH1vkwRGQECadv+R35Vs 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:56Iyjlm/ubAScv6/h+5G0+bNLjDaVm22HrAI1HClgT?= =?us-ascii?Q?djZxWELq7MivkoYaapfJKTJiGEKXW8BXlBk5FKp5Wd5K6jXsoF8iDhwgJ81R?= =?us-ascii?Q?Bz9PESSPwDeHDKvrLxHbIN9BSueXN0m8NOzDzaB+ZUPuvU2jAaxH7/YC8eUC?= =?us-ascii?Q?Vb+R/ryor69DKDT3O3QAFhts6LzVCkbVFbsSX6z3k+Sh0LzsCxKMLFYw4XGa?= =?us-ascii?Q?M+++lBxD/owh6aWLJr8n0hDB+YrXC03Ev4ON2GcZk28SksiE0NeQFv1ZeRu8?= =?us-ascii?Q?8JdntPYj1g2oIVPrL6sAQNYYksIKdEUofWPyvzEJrJgGGDOjp145Vg5sAp/B?= =?us-ascii?Q?i0QYwfDLNtB8rPYFTQL4rBehfVBvhKjcBb4/rB8axub1NvYlfxerPIwBfxG2?= =?us-ascii?Q?pkFIlZjUt93MVqqfLz/YQfe1oO0yh2F/90aPQw3itZs+n98Wm3hDlWvPAjSl?= =?us-ascii?Q?Nw0bLvKVtMRem9CmM3ihWpQ1n90Tkb+c6jMMnMo5n2MwM+KKDevTaYRfLImh?= =?us-ascii?Q?/hQojnaRlDcX4gZCEnxGb8fG9HzAKBk5PN3B2eaKyyEToZoOTQK5qCjoPGNG?= =?us-ascii?Q?OjAoGS5+eK5OiSIdY7FUKvJyyk46YKqto0n0RgSjs60kJSrZQqG5LKMKfpNn?= =?us-ascii?Q?J9dqU70Khs+9kuy9kf09lVDKo8iOs48/tzub5u5w7ngvgsEDz12e92qw8wM9?= =?us-ascii?Q?VhmLQ0NXCMKslW80hbFESJn0ymKbt2AgJ/q5YBuvE58ccDQQ5K9D8+JJQ+5a?= =?us-ascii?Q?BQZKVfpPRH/4MAKJ9nhXKrD+TemLHBjlthx6TVDG32hlymni6C4K9nGfDuzk?= =?us-ascii?Q?lhUNg9uQztFRaT3Xs5LwlwUu2FEkTzFUXQjvvRcaFqOz8k6oUFYo10HyJZm2?= =?us-ascii?Q?+AOtT744UgpTH6cfoLD/FZNTxJpZk7w+KXc8TPEXiY7KS6Dc6ylPgJ7wXkpF?= =?us-ascii?Q?b46sjseLbyEUTYAKi3YUOY9p/u6pQOwtVPhdr3QQWa7s+BMBu1Lv5xoUaBpN?= =?us-ascii?Q?FQUJF3m1ofyUQ3KwWHwvAvMGIbT2oVIun7sZX0rqQs4jzcb2kmL/pWcOfgWR?= =?us-ascii?Q?4IcA5WOLwywOFTCMRzZL+LSDowF8iqSbmwHnMYdko/vS+Ky+Jleb1Km3ie+/?= =?us-ascii?Q?VQYp6Mdfs=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB504;5:hvBIAwSXj/iS9nJBWgWmAUIWzLBbr/8b2DTpWfEF5VqNsiwb9dduJ/aC5vY2XUSGa1uucfW+3hn+5hDXRxUSsm3Y+OSRnMLmY10tfq2B5Hk5mtpK3RKPUBlpBwJHY7KeNlcGyIJV/WF5ciqICqhYtw==;24:VAxyc31GSU+q9n2vJRQxsUYIB1COkTO2mebtRbUao2Yf2Qp2iyKZ4Ob/izRTDoeRQoO/J6L3BB39CT3AgL4LNi553XYdAnM8KCaf2gn386E=;20:AL9/IYZFYNKgMO4EtRwq2BVgThGR5IGhjMR7cZlZJ0piA7RX5H9jPuvap36WH1+QtQbUdx0c33Qp56EV6jODUA== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2015 22:56:43.2454 (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 device attribute to synchronize the fsl-mc bus objects and the MC firmware. To rescan the root dprc only, e.g. echo 1 > /sys/bus/fsl-mc/devices/dprc.1/rescan Signed-off-by: Lijun Pan --- drivers/staging/fsl-mc/bus/mc-bus.c | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/drivers/staging/fsl-mc/bus/mc-bus.c b/drivers/staging/fsl-mc/bus/mc-bus.c index 84db55b..33a56ad 100644 --- a/drivers/staging/fsl-mc/bus/mc-bus.c +++ b/drivers/staging/fsl-mc/bus/mc-bus.c @@ -102,13 +102,57 @@ static int fsl_mc_bus_uevent(struct device *dev, struct kobj_uevent_env *env) return 0; } +static ssize_t rescan_store(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + unsigned long val; + struct fsl_mc_device *root_mc_dev; + struct fsl_mc_bus *root_mc_bus; + + if (!is_root_dprc(dev)) + return -EINVAL; + + root_mc_dev = to_fsl_mc_device(dev); + root_mc_bus = to_fsl_mc_bus(root_mc_dev); + + if (kstrtoul(buf, 0, &val) < 0) + return -EINVAL; + + if (val) { + mutex_lock(&root_mc_bus->scan_mutex); + dprc_scan_objects(root_mc_dev); + mutex_unlock(&root_mc_bus->scan_mutex); + } + + return count; +} + +static DEVICE_ATTR_WO(rescan); + +static struct attribute *fsl_mc_dev_attrs[] = { + &dev_attr_rescan.attr, + NULL, +}; + +static const struct attribute_group fsl_mc_dev_group = { + .attrs = fsl_mc_dev_attrs, +}; + +static const struct attribute_group *fsl_mc_dev_groups[] = { + &fsl_mc_dev_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, }; EXPORT_SYMBOL_GPL(fsl_mc_bus_type); + static atomic_t root_dprc_count = ATOMIC_INIT(0); static int fsl_mc_driver_probe(struct device *dev) -- 2.3.3