From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932898AbcBIAAT (ORCPT ); Mon, 8 Feb 2016 19:00:19 -0500 Received: from mail-by2on0140.outbound.protection.outlook.com ([207.46.100.140]:61312 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932770AbcBIAAO (ORCPT ); Mon, 8 Feb 2016 19:00:14 -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 4/8] staging: fsl-mc: root dprc rescan attribute to sync kernel with MC Date: Mon, 8 Feb 2016 17:40:14 -0600 Message-ID: <1454974818-5385-5-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;BL2FFO11OLC002;1:X6jt0kuHofrGDEE1bHt4DHIUFL5/yBWxk4jVvu3v9cMXSEh/kkutXPFWCarfG3wQZdh0EtttU41/qoQx70/XmFQiNOqvDclvQAbbmsBOv8HDRqYaTHPsclc1AO414PKUX5s2NB3dDxU3NutwkeyKy2o6aw8fpkhXXwZtwen9FRwBX6vPWheHSi4p7uCHs/ve+7VZm/sp45NwaH9vSc2nZ5f1k1Rb6qPx5lF00dx9ONRzBCcDzvy1dgGTf3BvaaFvCnc8Ditsa8BwN7AeUrsxQzc6ZwpPy7vtXxHVTbJu+o6qXf3bTDbDDkU09Iy4ZrrmekLBdXZlfcRKNYHEx4LyzS+Hzo/43/2lSHWzw7GhWeChTjjeYesbAIgv91goC4UyqFxP6oJUnnFgKke6SMdyiwMb6NKaH6Wj9eIyYYr6oyddVGBEnO7oIRl6SS8lnKMEAxVlmX9FDHlNNVZrAe94X5VzJY2LH6MCUG3L/d0Xd/0xds4Gq2ea2vQTCg+3Gorc X-Forefront-Antispam-Report: CIP:192.88.168.50;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(3190300001)(199003)(189002)(2201001)(86362001)(36756003)(50986999)(76176999)(19580405001)(19580395003)(85326001)(87936001)(92566002)(47776003)(50226001)(104016004)(2906002)(6806005)(4326007)(77096005)(5008740100001)(2950100001)(1096002)(1220700001)(586003)(50466002)(4001430100002)(189998001)(5001960100002)(107886002)(48376002)(5003940100001)(106466001)(229853001)(5001770100001);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR03MB502;H:tx30smr01.am.freescale.net;FPR:;SPF:PermError;MLV:sfv;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 457cc210-2508-495b-ff38-08d330e3f6dc X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB502;2:PhsC2dHTqz6UZd3WdhAE0Saivf4emy27AuAkjtb0hndBKbBOLC0oBqhQnft32kiuS2emmnlUibmvDlx4vq0o3kgbqu6hno/j/nGQS2yVEBCSQw5zTdggGft/v7ibqkVDGNYHY3N3rAz4Rzqzva+mBjit2brY2sksAUCq6tOY+vID3NuXc9kUn3X+QjF6k+pO;3:pzhmt6J8hYxTjA6AJzNXY4e3NnPCOt3IjL6yO7kzOF40mlV9Nag6je97OSYmOQZejXTwGKdwlwqOrXbtZv/hxU7xgzuPyNwpA8Q0sOKPhHjGLY6yObqm8vnF47ZMp2Uxw5QKMeEUF2xuBQzry+KLkVKetbvTim9mjuHw+qHO5q5nxYcJj8C24GlEQOgs6uyFhMo7A4iZ9vNLJJKgXbnCwZjDmRI2uEi/qbwTmLg4pHA=;25:JN2q1lq3kbgMHPsg/mRutoeFDcuJJ41px7fQCo6Q02/QGR/HxptoDQrDzdGH4WGmRF76TX7IisWyT4HCfQcvVqufMmwB4GOpZ990NfE1+Nd3CY/fGBHJsFLWi1yM2Ogm1ffE1KBe2a7C4DTUUhWU6BZtmbrZqrSHWX5+KxjpkdVxvv1vX8sqQ+mHVx9tl+j+26K+uDYsOj5ZXrqXQXKQ4VICfD9MKjkIgnYjKIMrbrxSApeAPj5k/JZ44Msh9/HQ7pddgfwKFQP/d7szmbyAe+ZsVXDFdTrX+fMriPS3EnALeoDu9q+oR0eFvw0V61lg X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB502; X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB502;20:3n3tRg9sMq5oOtJyEohuAr9ar+wuc2Um8yI54Y6wuPNkgIBlVqztHRfGA0kdZRFsvX9TXP/r2jMXpHmihVPMOC79ROpGSE8XSkz0eTxK+liE3BdtQV1n7tdMxUS87rK1R10S+MAeTDMGbIj12zSPXjFKdIwDPToeRCdPjeAAbH4STk4GaobHuUkpwKGtDiPOeDqDnRwS1x9owv+r/TbQpa4K2zPBuNOcLi1oprcuZgoQCmhbKbWPXlN5NyLasP9FdozL1USpPXVytfIcGNfK01aLDlilALlJmH2yq4gzss326g5A/CJx5w66cHmlZ9dmGMr5Os9IUrOLU+WPAt98AKLbGDH2e/e0v9255zh+z8JC05UrH3kY4mg7jBBrVgyf7UUk+fDGzlm6Nm/c2/A3cWK13fgE/ruljqwf4gHLDXewcF6xMU7NqEFi+0ZbyUfj;4:4mmHRLFwRuqBLxZe4vBy16qclU/xC1aeMeve8hIULkDSwWRnZIOUwP5JyeDVIiA3/9938acwb6AHJR+XQiH3I8+xjjhbqv1AC+CiOtWtryyCJbvH7dxAkGTqqUAC6vYmmEVO0zizdoevfxbUkFofUammefBPNaQUxeO2PC6f1nnOZ4Vpim/6hOd1HAmTdbDSIStBF04pT+f5Qy74OvhzdwnxL/ykU1zNhpUcilpX8DrETm+GgG3VL1qVxrO/K3/mrKQLn3WgDmtQbSQqBOAEHHp672AfBRD4SFgzBHHbDYvgFZxG/FxHW4vy9Q3uDPmccvDkojpq3bOThxOowY863yUjf+eR+/WI/q3A74xlTorQs+Bg2zP0afv09oChCjbo+cHQgblwJZA2k8+3RIvPb893Rmc1o9qnPnmkpgtJR2Ew5oLvc4WqJZdyNxGY6f+xyip0IHdmJQTRAK4Hm6chOubKuQZ6nrvFQJhWWk0LLDUNQ87rJrdLQ71jfAQeJyiY 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)(13023025)(5005006)(13015025)(13017025)(13024025)(13018025)(3002001)(10201501046);SRVR:BLUPR03MB502;BCL:0;PCL:0;RULEID:;SRVR:BLUPR03MB502; X-Forefront-PRVS: 08476BC6EF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BLUPR03MB502;23:c8ldjUymwNq8PtNpDkZhUCu2a/tfvBo4HpqroyWe5L?= =?us-ascii?Q?zJAlARml64LkeYLp3nYy2ezKjOegygRDaipNIe9jcPo+gaeXKZGE/5amull1?= =?us-ascii?Q?sTSJn75N8E1BsvhphqTkuF2DPhwYi6mNjyjB3SYG+31h8/zjvVyEGjEsjLdG?= =?us-ascii?Q?SdnTWFnd+3ObOVZVtQHyc70qeeimCmY6shVX6ZqmmuSV5BJ9rdSlNGOjS+zT?= =?us-ascii?Q?ft2RCHiMdM+c5vEdYRDBf/FCZpjJR6lLgjkW6Zsv7aBcycxoEvGskQnhSgeD?= =?us-ascii?Q?8RvMLg/bL8+I4QegswdECTGfWERJMQfQHy9rBezwPLAXKH92T1/d+dCKHOao?= =?us-ascii?Q?8tQ8PozZ2bX1cesvgMOlW29CwH6BoIx5BlHCMKAitBf6N6oA0emRVgeyK61h?= =?us-ascii?Q?s+m3geO9/84INY1tXNL4A5b3pBQkzOyinIEmBDodM1kEN4FnjCoghyOaFIjL?= =?us-ascii?Q?x260IyV0Oy8B9a8Pn2ZO6NSbRyjnh63pqgiwspl4B6M8RhAiBGSi0gZgjej/?= =?us-ascii?Q?0XspsQLlyxDgzcsGiqGaCu5Yrp745P0S58jIfaBxkg/269wcTE3ic0Z1uMCA?= =?us-ascii?Q?GPjof+yD/Ub5IaqXa2iGfrG5s24p7njQQvBFNrk7FXxiS/YBqGUFlQ4bMd7P?= =?us-ascii?Q?oOhV8WFr3K3EiL8txHXy109Cmd5L1ElWeFUhainDC1T5D/96v2Q9voWfPt/7?= =?us-ascii?Q?EYVCQ/+dHPknNuLzEFW50nbopHYVDGDA2ZYDYRuzcZfXNg06ogBiB0K6IVK9?= =?us-ascii?Q?tRY/Dc3BJezHN6Bw3o+S08jquJL8fcB4YqB2qz4AUqmU98ya1boNorgbAAz3?= =?us-ascii?Q?M7/8tPz3H5cUnjqA7/etzJ7o0KQKsg0idvKXzAEoYunl+WlNpZpqOhHF18YN?= =?us-ascii?Q?IOv2wcWxcGPW0xDBPkpgNDFFAF+iT+W6V8Y38eW3waDfZ393nJnvthZ6jQ8M?= =?us-ascii?Q?72hO9aTvKoLEZNkkec9e4UwpEe+7bG1DnCwsbvKb1AHhnAvP4OHnz+DB5p6+?= =?us-ascii?Q?5mSfhn6SEsNKPVddd/eyl/?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR03MB502;5:hOC5FoKLOSakKCazYhpG4fPAMxvaM8j/pymbt55TZ3Qa+W5g+FzbCmZfSjqKfo03Q7N9ys6IYuSox1ZbuSiLRsF2WGqi7N7jkwgCsRL8f4zPZ4TdbYrh/RUrYZgVcM1/T2y2jnEESSzs+C4JgEliZg==;24:np9DLYzwlYET4j/7MqOtbf5PUTkzH5hvJrJ2VU4tvr+A4ChnNVl6yhXlWWn6HroJw8TM6xWPFOcPtNp0UWq9+kWbz6SwbtEX2oalJYKAJvM= X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Feb 2016 00:00:04.4575 (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: BLUPR03MB502 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 --- v3: rebased on top of greg's staging-testing 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 b828985..b47c3ec 100644 --- a/drivers/staging/fsl-mc/bus/mc-bus.c +++ b/drivers/staging/fsl-mc/bus/mc-bus.c @@ -102,10 +102,54 @@ 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; + unsigned int irq_count; + 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, &irq_count); + 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); -- 1.7.9.5