From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030188AbcBIAQt (ORCPT ); Mon, 8 Feb 2016 19:16:49 -0500 Received: from mail-by2on0128.outbound.protection.outlook.com ([207.46.100.128]:38650 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965077AbcBIAPf (ORCPT ); Mon, 8 Feb 2016 19:15:35 -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 v3 6/8] staging: fsl-mc: bus rescan attribute to sync kernel with MC Date: Mon, 8 Feb 2016 17:40:16 -0600 Message-ID: <1454974818-5385-7-git-send-email-Lijun.Pan@freescale.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1454974818-5385-1-git-send-email-Lijun.Pan@freescale.com> References: <1454974818-5385-1-git-send-email-Lijun.Pan@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD027;1:NfrT+Yt5vM8o5MPgzTynrpzukhLT7y1k4bAgHDm76f9bC5ZkgKqEEqakqZkAZa1DbpjfSMZyuH8b/gITXKfTs3q/IaSECqKT4SqXdYm94c+VJ3JFRmdc3gEnNCa6ewtXzAGk1pTv4HhvqvfLvIz9gB44nhAE9oY4Qdyn2RISTxJcExSQo9A3hUIyoJPRGoRHyDR8tG2MVR42Ix4Zk79tJ5wgPy+cmfZaX3x0BpIbGijqITX5VQq+wz1/Lgyy4ZTYiKIDLznAfnzWy6JbZdQKTBNsQqzVkbo/VrVuiEhvbm1U08vEMlTMfF6/9qdYroG5WrTvtEsnj6pV7FPZt0j+PQNiSeFItuC689sP5AtJ0LHzcqoUa7n2rFCfQ66HbVGjau6HxbhUHTQhzIxIzzXM8NTCE6zNu74pGX9M6yYSxpqVA8NdzODRcAfDYqq9Ebw/wrI41lDUE9UWQozW+QefpXfYoJBArCJcCq6GNYQhgUVQJAR4L+ZoyNIDRhyp1Mym X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(448002)(3190300001)(189002)(199003)(50226001)(106466001)(5001770100001)(87936001)(5003940100001)(77096005)(19580405001)(48376002)(47776003)(19580395003)(2950100001)(229853001)(50466002)(92566002)(107886002)(5001960100002)(36756003)(50986999)(4326007)(76176999)(2906002)(189998001)(1220700001)(6806005)(586003)(5008740100001)(1096002)(104016004)(4001430100002)(86362001)(2201001);DIR:OUT;SFP:1102;SCL:1;SRVR:CY1PR0301MB1642;H:tx30smr01.am.freescale.net;FPR:;SPF:PermError;MLV:sfv;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 69296fb2-4ccf-4a04-1242-08d330e3f6fa X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1642;2:/CoUMThWR+3xyEmkZnT7u9yrDJBE0pGEfMZtytiRKl/dLR7W/KH1eFhg2qfFRJ4tfSazf9WGTe63lyeOYnh4AF+6pJxR7/ma1Q8gxMKrmwOd2javb77d9QSS9avIY+LFHRM51CisPUBoebM9O1W/K+Me0GMZnyOmOxVT6Kwleqok6uWUbBe8wcU53l40tRFk;3:cJF/7U2iKTZZBxVYMG43es23UrA9uc+vFWubcBB+7/xL6g88HpxhCJSykRejba0oKfKms8K01I+4mfKUU4+o0a8T5iiNdzrZ4LBYnciXWgg902IyjFchfpvqLksGqKja/eSav7YzuOgN+notXwQwiFMs0F9pcekrDpgBIviPQiNZQr1FMj9DW5RCeRvow9hIj2JQP1ayDrJiLwdTOHzdadZaSD+gOGNSmhjuFcQGTeI=;25:Hp+q6dOVqtq36qvenxvoq5q0khiGXNYIFGnmySO9MSxXXNxVAQqLPsvBJI2TLCaliZrynY3refNJpxR35LyP35X2FmiER86EFC0PVmP3cVqRt0oU5ygbibiP4xw4x9v/xJe8Q/ENmFrq85H+gvHr9XJCIeKURJUBkaGPKct6myFwEoRvv6AwqALNDxNiST3ycImsgMVOQ12StCBglHrJjcso6iLHDQNncPCymlidPocyyIY4k9TnorW+Xnd4Vp/zLVIBtnHOJnjrsL03lAeBpueG3rMBLRql8MtADpQfMcha0Jfmey+jsxzQkfu9SuGh X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB1642; X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1642;20:CVvJcgOD+EAf7KO+L9WCYHBPzL1oWPdqAG2CyjU23gNw0jtlK8iSjpgMTQXDsv/aRgrZVFwG6haKEBSkAJfKWMW1BNjoy19gIg+LdASoH2SH/XaGf71c0yqai3YIC49uHY8NMtVlDJWfHUAf+O3cE+HAMFYTZXaEXii/XTa7YMaoH6z3QyZntiqlXMqlbU5PscZLtFALA0Ge1GBM39gVbNde2a/bL8z1UP1OtxsQLSFPPAfrJm3pv8u7FX1rNLtp+zI+En4W+1VMnbPW/OVbNnKVcgoUFRFfYrRkjQH3zFInb2PQqLH3eeRqAXeEhJD9LVFYG5pFFhGHzQVpFcdEs1D4XK04JR44UaPSF4Wdi7kRsfpcLetyOUaI3HDkf2Q+SL52huGG3FFW+YFznLvTSt33V5M3LnM4fJ95vcX1KyGbm7fJiVkUJdmFCGOdLRNA;4:A6FgKZKz0mIP4iWY2hs9pzjTyDLcCvlEdwItOWLbDrXZk7AEF1u9cOwUERlTjxmkm6pB3Kl2H8UF5W3AP4ORpi3/XPgWfkVIMSQ0bIwcrMeJCNDdlicTEOf6twTrPL2mxJ5BaeQftZ8x1gjS3m+z+/pJXNj7KdXUhOziS+MTvilGqkMY8K163wkeeWodk1+WMj7QACQi3t3SHtR3uv0eGkZMVliQ+J/SYZ3XuzH253Ge9vffUqvqygnkNsY7OkJ9YMhinvjtxQKt83ImMQ+c6KnZKNvvB1bVEWEJof4Lv6gZJijkX+cyKqfBcYi2qZG9ei+6nc1UQfibUk14vob9i0Hmo2QelpBPy7T/ycgQWmdzmL2ozjngncztJCKIGP8o03SoEupE7T4aG2zPKzQr8iKh/7qhKplpJ8xXhFMT0seK5OMc1IqOl7wzzAQfQadME+BtYpHcfjBmcFestY6TPwtFFekso9poHR4aisP9dNCvxyff0PbIkI+WolO/cDm+ 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)(13018025)(8121501046)(13015025)(13023025)(13017025)(13024025)(10201501046)(3002001);SRVR:CY1PR0301MB1642;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0301MB1642; X-Forefront-PRVS: 08476BC6EF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR0301MB1642;23:v6uhqCHCGuwfIBBb+EfBXCDe++bC9OX6cDv9fh/?= =?us-ascii?Q?RO3rDk7HjM/GmhyzSgG/H4223ECpN0DRWV2P+qsooXIfl527SyoXuTprBJL7?= =?us-ascii?Q?8FfUk3LnU8NfEtQzyUNeaVNWISFYcgv3hip90+i9D9en7LBrwHXzAHjzenCg?= =?us-ascii?Q?fFTXSaovYGRZz/zp/5Vwp5pDjUMHtxv6otEVB50LhUWwg8+ynXkqnIXctI+6?= =?us-ascii?Q?rZCNjrJNx8X595KjkN2sf3/aVXXStlcj9reElvW9jQPeOEOIKi6iv0bVMsSO?= =?us-ascii?Q?qFqmL86aXiZUw9bWVKRzarTLGAakGoCZMztwin0K+REyUShe5nGSVnJ48c1z?= =?us-ascii?Q?9zyRgStQEcLCkRei0iblYGlR4eEAy/T8Kr4xCBLCxHFR7zEfTEZQ4I8VGLfS?= =?us-ascii?Q?fj/sjFqF1ShuJg6w5fvrL8z1gaEEwOKaGby3jEszF6nYtxJdh/wEgRXHVRul?= =?us-ascii?Q?MLyChSlEURDhrsmE87Pn6cNgruJkKZtl5GCv6PNr0BIXJ750CcT6suVIg0D4?= =?us-ascii?Q?PvHKoWWbRXioIcDLn62hIKRQzR/BULcMymAXwDm1ok8zRyR0gESpzdoEpXuV?= =?us-ascii?Q?GOWJwLgBBiGcj+34Tq9SV2WEQ+TtGaEsa9r3g3HrBnrlWtJbvMJ9MLLGw6Db?= =?us-ascii?Q?cTHuZNarMWd6hA/0GpIveTpJRs7pSQy3uyaQ+NS8ZQZq1ey1g+rwBm+dioGI?= =?us-ascii?Q?THQrU2a0YwP3zbi7Wqr1duyIIguvyKdZ3SbQwKRo7RV9wFwgowZBJcXd5KyD?= =?us-ascii?Q?dJJMZnVpMPZxWdv5h1ecwd55mQy2n+KMFOZa83hj7vNTA2W2FuwiwrAx6RbT?= =?us-ascii?Q?VyUGglbCHlgsDJQerVGwarLQRnBxErCmWdkiRPLaOEqyDIIw0gH/tJ8rxhqx?= =?us-ascii?Q?r6hHyPmdAjwOQPx7neUYOodopfqjUfZrXXFOrxNFalcVS16v+uSxeOydrEls?= =?us-ascii?Q?xy0HuyaGXF16rl1PMhbHUi1R/HlFITThtLcP/wX8ujlmaB3AagM2XpSKtku5?= =?us-ascii?Q?ye86ziA7VVW4GAYTjoM1b2kxl?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0301MB1642;5:nyr475QYs086EFvNetT66pTmGdW3wHYqbbTkOQvEPpX5KWDjjTGNnKARKmNQ400HsDpl2Bu7vv5bPOIb1xOs+juPxQ264wA6CzkfjGOrgktbfhtSneroA/RZtlwAFbTSjeDluEN+PiN+KoSHRqysaA==;24:7PpDe1eGGbg12Th37KdB3oywkLuJ76Ff5V7dp1w8C+j0+/lc0diZXIll77qeMmGJvqBWfHmM/D8XkykoKMlPEhVEQWCyhANVXZ2wdt5mTsY= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Feb 2016 00:00:04.6013 (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: CY1PR0301MB1642 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 --- v3: rebased on top of greg's staging-testing drivers/staging/fsl-mc/bus/mc-bus.c | 47 +++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/drivers/staging/fsl-mc/bus/mc-bus.c b/drivers/staging/fsl-mc/bus/mc-bus.c index b47c3ec..713d441 100644 --- a/drivers/staging/fsl-mc/bus/mc-bus.c +++ b/drivers/staging/fsl-mc/bus/mc-bus.c @@ -145,11 +145,58 @@ static const struct attribute_group *fsl_mc_dev_groups[] = { NULL, }; +static int scan_fsl_mc_bus(struct device *dev, void *data) +{ + unsigned int irq_count; + 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, &irq_count); + 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); -- 1.7.9.5