From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760725AbbJ3UCw (ORCPT ); Fri, 30 Oct 2015 16:02:52 -0400 Received: from mail-bn1bon0131.outbound.protection.outlook.com ([157.56.111.131]:53572 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1760113AbbJ3UCp (ORCPT ); Fri, 30 Oct 2015 16:02:45 -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 4/8] staging: fsl-mc: root dprc rescan attribute to sync kernel with MC Date: Fri, 30 Oct 2015 14:32:06 -0500 Message-ID: <1446233530-8918-5-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;BN1AFFO11OLC004;1:j9Llt/HCf0NrOcTs0oKO2bpgXpulm3oo1MQxQ7kso8XuIdRzM5Dlv/VGG82Qcxbglp9UTBdQrhZkSPStK3phIkvmrfJExXwcS4M0JuNp0+CLIrH4AidgCrQEv16aZ8WpmY3kNIzdiRljARWWZTAu7W3PlG2GtkYrbvRJGO9hhZ07qK4qxC7TV8/H0P+eXVFel6g/a3W21MAMYFDYDHh2EI8Cz4QJRNLIGC1Q071qZzFUvXvKJBWEnRdNXLWOwvs1V0JAtaYrUGPHHknbUEQWVNXvUzVYa0u5DW+VcQRcvTzZmfFbmEqEPl3BDOpIWZEP8IzEWVoqHmLqKxxTIdtBoa7ELqGoRScmmnsErd1eopeT8ptPbF279MATYP/AsZnm8/QG1f4LEISH+0i/xDg1iw== 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)(85426001)(229853001)(48376002)(50226001)(105606002)(2201001)(5008740100001)(19580405001)(6806005)(104016004)(87936001)(106466001)(11100500001)(81156007)(5001920100001)(5003940100001)(47776003)(77096005)(2950100001)(92566002)(50466002)(5001770100001)(5001960100002)(19580395003)(97736004)(189998001)(5007970100001)(86362001)(76176999)(36756003)(50986999)(107886002)(4001430100002);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB501;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;BLUPR03MB501;2:i7F4wATgW9MNnf80ox/ew6X8vq9OYcHtzNZKmoNjxDmiqlxHUhC4d2Ffm3I4NFzEbLIpi6Ec3WDqlQkx+zYums5OMh9Vc/dJ7OtoN71ZQGqIIhw2jM/BfZcnE+LjSQURKBXvzLDNxeFTPHEIRXtzAfTF8IV0gjTVNd7WYuKZYLU=;3:kekRDqqVVuD/MjIFWu/jWs9udHY3c2bwrz3rebaIB9sGhWEcwLVyQG41aUqp2xDl0fPNpjAaXxLPwlkD1n/9slTYJq9lDP79c4GbOBkFeR9Q52ny/L82XpKcTVckAz/WuD+Ou4/wBjcuHNATvDVgbDsr/rlonmh6pDPmM6YPNTx9kLbJ9Qm2T8yMuHeEF9FpVX3w/e9A2pNI4ZZyGkYLyY8VGgkyAZrQQ2hZBsHkKg0=;25:U91CHcZ9kQgcoMYoN0gTMCksz4/G32vp1bAzLlnbiVj1nC9ANj83ETW6PpnwhWJb+Vi/B8kQq4JQbnBYM5LJlBI+MxlZyM0RMFd097ZF0jtdlpmUqekrgJsrIWUJ2R6L8QHHvuG10xKGbiWVKFgf/MPB1Eayhc2mnYUF4JhlwcPlVHJm8D88Y2Qlk9GuEMwS3rRCKzJd8F/Zmp5Td4L4uhLUQ2wUHCJFLOaJVD/Q7a+37r3tiV6IYzewq6++/iUn X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB501; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB501;20:LxDAr5h0YrktPmVlIAw5bsTemWN83g3uqJYGhUrk4UR927VRppf0T29pIcuITT3kTAjLl+5Uw89tCnyKlsFE2r2fMYTiQI487bdrhZXWqid+ElF2Cxkeda0LNvwYPKDxjoHZKi7XLUPimfHwXDRkRVG/3G+eagqlHw0NxFsbYgU0R+MHipg+auqELlDYT0dSL9rg7IRsQ1aHv/BfME74BWFadDsKJZlQlufQos534QfH2e8FbbJhCDKKlQWL/3F894/b8QBRbpD4xhxO6sAjmMWqPJkjxjK4yn/kyhwDEU2Y35l147trvmpNjF9uzubwoQIVoqY9TpY/IZ9XGJFNbjzmHhdO8VhwXW2rw8oGFmE=;4:CN7Wjr/OnF4dSE79H97nb47RgCZzYpBdj+kHI8v/aNIUmoOFQgFsMRKorwBqj0g8XvzZYFBLul0X8kSA5dHyeoeaIdTVZavFuSWBtpRYUnqx0gEeUm5yEGjXp5+8lAA2aMlHNowy4EfBSOf8giVPOVclvE8eE1J60bFtb+dgsr3b6AfGBnkYBYb258um45ptEtJCC8MakGe5ZDp6eJQSBEHUmTrkpWX31VE3hgM6OR3lfzCE7XcGw8Rtkh7+F17D2FaYQl6csmbrpQ/6VAUqTVCRYD6Aajc3QOuZVZg79QWPOxSs8LrTrcXhE2rs6fQ7Q0lwNVMDTSGNQ42ghjwyrPy6lGyv0Rmttja5pm/NZdo3O414PYNwMKZanDMDsHLeVpobA7y5pnbAG7sVJ1fs9A== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(10201501046)(3002001)(102215026);SRVR:BLUPR03MB501;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB501; X-Forefront-PRVS: 07459438AA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB501;23:851WDWKBaIwG5y5fTD8qdaDrpnRT+evqaqybrrcAYy?= =?us-ascii?Q?317m7lp9HTza0mcPbx8+D5QwwKH3R+SafIML7Yav5rNp9yjgQfghTZK63Csq?= =?us-ascii?Q?tNWJ8PvS0EFxtlc044mXClXvKHxk/7nY1sESZs9jBB/MCItpaQ85rhFUA61a?= =?us-ascii?Q?diDv+TS4gQyYHHh5KkFx8byEu9G6LKBQT+J53HlsjhZK052FVoIkUIef+OMA?= =?us-ascii?Q?WIc1UhO5BnEpgiD+EMD4euEbWMpyGLev/d9+LCOw7Unp/w6mY1FcDHSTMW/A?= =?us-ascii?Q?LL3vTiBQs88eWAcwyQpPhZc0dBiYV+6XPgi2JKS8XYDKdsjODAsG6MkuoLHW?= =?us-ascii?Q?lXBoJzwhRzUaG1v1JqFr5DscXL3F1QkIWg0qur0jNJIA8I91oDV+hJLRTCVY?= =?us-ascii?Q?Ql5y5i3lrdhxHgPnHdV50POZy6pGuIydfqkdf8U8tYnHobfR/CLoxIueLNee?= =?us-ascii?Q?J9FFu9gJL7C5lJG3LG6myBu0XZnpxVHh4EDXQGJ+X57wBPEpOVWMEAOc8z9N?= =?us-ascii?Q?BeVF0OfD+iTl/vYgIpueIQ9JDj6Z7Foc7FHnphVMsf81+3sGOBC4AQkdfrT6?= =?us-ascii?Q?ESfpKKc2blun/h0PZ5rAs2Avj9/3aVB+Fv7AMBI2SJE3xe38+cCieK6zJN8m?= =?us-ascii?Q?MNodvAXP9OPhkx7Qbhsqd8lqX0WU3efCmn9HlwYB4RJzFVSSqFl5rkCvEFKC?= =?us-ascii?Q?5k8oJhdAB+9S3dWDz//NeBszD3JhmBMF4NMn3bTYApqZHbPiiOwZHTmsicBy?= =?us-ascii?Q?3hfnD+XOjovGFp22K1zPMuIiUD5jZkgd6R4HU7uJ6UpQg/4gHDTKtCla/T3O?= =?us-ascii?Q?f7ZGXWQEXoJNYSsEkF95sGw1OelmaWRZgsqLKKzCw8geCxSfztIpZWHqHc8W?= =?us-ascii?Q?BcrYLRiCYcHqzh2kpjeDkCvOETAdiMBszplMjHZAYPHcwNnNLkwq41JK46X6?= =?us-ascii?Q?V5MhFFePnX9HyPHmTU4CE40ldeU569+2NdnAaCiEL+anT6YTQLVBx6jUzflr?= =?us-ascii?Q?IiYJfXRBsi8DpT5gpDBCO7sir26ALAVDxs/tD16DKaXCqxYFep0wpgT96bEz?= =?us-ascii?Q?EN3+uINvFIlz2N+QO3krkzO2Yb3fvDKF4xuVGBkzU2UECsZIKgA1CxTHaQP8?= =?us-ascii?Q?Tfw++/D4c=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB501;5:imI2jgtBetCPkaQ7hpSCQb4otf65DEZniRvC9fOSLmiBN09xkkWcCl+r2n9g7kTc2AFIxTmV3rVWx7mxBF8Vs0XzZx7vw5hLOukd8M/JPW1k7mc7wsteiXb37uNExE6rD9EP0NXvak07ihqljq+PJw==;24:8ZbPg319gT3yEuaIZfhdp8JJ5fENKTuqKgQXJLSAVCg4N1uB5akglvQer8GmwdCy3kJb8AlQBUL8QpDToR2ocZcZjWVFMT8IwmQHNEF4VjY=;20:GfsZ3WN76zkPs4B59eOyxnGnWoTBfvE8/0rlTm3qnTifwa9G6vyT7bbmqUXgcBblox1DrGv7v+Ty+NeKQbwqZg== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2015 19:47:42.5629 (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: BLUPR03MB501 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 | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/drivers/staging/fsl-mc/bus/mc-bus.c b/drivers/staging/fsl-mc/bus/mc-bus.c index 25e205421..61d44fd 100644 --- a/drivers/staging/fsl-mc/bus/mc-bus.c +++ b/drivers/staging/fsl-mc/bus/mc-bus.c @@ -100,10 +100,53 @@ 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); -- 2.3.3