From patchwork Tue Mar 4 15:32:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 871167 Received: from mx0b-0024c301.pphosted.com (mx0b-0024c301.pphosted.com [148.163.153.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 81D0920A5EA; Tue, 4 Mar 2025 15:32:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.153.153 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741102365; cv=fail; b=mpthu4BcYJT/zJPVubTwe0nowq1Usypjnh+F0HyJXG0U9DE18Tj1GKhXyDmui5skFW2HizCsc/+daBm/irRV6+A/y6TyVLT5MzABgo8se7axDXDF93zk9hZtZsjTgMD32Yj885Zu6wYSVb8LjRnEIlyp26dridA4ePJhVxVVRQk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741102365; c=relaxed/simple; bh=jXTMqQayNWK+OVT8qiUBwW+haAwrrcI8uj0NoGtLn0o=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=dWLbHfEi+JAqTBEvaShpjodoZnFEoxFA20Ycchrzrrl4bk4zBuOsJ9LzWjS0bjGf0/2atpGX8Lkzxgqod/LtTX6d0LYIVhreORqQbFrBedaahvsFLCZidPCWq/Rh97jq8r2LOCgTEuKfzJ+SRqe86gZN41l/8Cj4jqfS/GpzMU8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com; spf=pass smtp.mailfrom=silabs.com; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b=o3jRqqCb; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=SiI2JcAd; arc=fail smtp.client-ip=148.163.153.153 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=silabs.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=silabs.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=silabs.com header.i=@silabs.com header.b="o3jRqqCb"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="SiI2JcAd" Received: from pps.filterd (m0101742.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 524BF7h9031961; Tue, 4 Mar 2025 09:32:40 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps12202023; bh=jXTMqQayNWK+OVT8qiUBwW+haAwrrcI8uj0NoGtLn0o=; b=o3jRqqCbKzR9 ZOc3dZ7JZaUTICrRoLXP8v8wbDjIZIfFclUbxnZkvRp8TN0aeCiX/fL4By8eLlBh +uQHnvwl6xyib0ExOsmhu3/XcX/PHwCLYqiUWVt9GtQGvRbtqJ0rsS50xQYMHbBK Oymm/ahbsss02hhoVjBHwnoJHTlWUA7CEZ0TTnYzsW+7Lr9/UFZD/kzYovc0xAZ8 k96kO4rml5XSsdrP6fbzMrFDB+2GyKoefbt6NLyc62JgZyPj+9BFjqf7HqnE8Kae dCuk6iFF+TWvbEr1asuZgGeGv/QK94ji7GhseYHtAZr6wNac5gee7LnBICX5M8xG NtTztg6xvQ== Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2045.outbound.protection.outlook.com [104.47.58.45]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 455qchhcus-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 04 Mar 2025 09:32:39 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=haYMwz5JfYqnkDddV4bKac2GZmnTzR7DrMRc3xY4L+3hoFoVyX9XZOKt2JksScqu3C6Y/P5wtuPzhd4OK/d14drxCmGa27Oz0cqB7dS2tTn73WXh7LzgJPdW+KA+4YNur/goppNlyxJ9amPtnHnVtEIbr2x3QkXkxcLpEt7fNK8L3KhsWCw6CADTJpYWahpAhORdYDx/dYnzclWC5rIBg8BHEdLrZwXGz35XEFHQ6Rh0Ac83swjRp/eTyVQbqsRADcaOXvmQr/nokJ/sLh8vvqKlFjA8c5qC2MRWtl7AKNqUaa5Vzwn/6AL7E0yacN1DLrK75pqBXOhj+wjN5ArKdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=jXTMqQayNWK+OVT8qiUBwW+haAwrrcI8uj0NoGtLn0o=; b=eMtF4aB2AHzfdalvXRyQ4B4+N2XRTtC/MebiBqo5wD6LNnO0c/7a7f2TScArQarQoxHvMBiuMGpOgcSC46RVFzjp9YRSOhteMSYGsRKQ1KJ4jn9hbAW/GEOhyl88N335j/5qtB8u8lWWZTVkbdAqHztPXfh3+uqyzjXul7eXxfqaUoIp7svhy5Fd+TGCT4pFgYGkCW4VEAfuhnaGW6zN4KZ2ekxr9cGlfx+Sp98bVuPHVa16qg1rPlnpckFL2vcxYqaJ0Sv7PO/6G/hkrSu81+BYohT49ZofPsaHKL43zllsOBSYuQkC+TLhAFk1UD9r9bSsik92qfXyUqc3Lm6eZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jXTMqQayNWK+OVT8qiUBwW+haAwrrcI8uj0NoGtLn0o=; b=SiI2JcAdGeH4AtukaVNYO/cpeLm848k1/P31JYx3O9fHLD4anRIydDeKdKFXcnhjQIMZlA3J9yLnDIHGQpnSBr+ruxSjP/SagF3Xeu6/IUqi9QHYt34sw3ZpSOfyWrRcXa2BX4i/0KdM94KPMb/D2DzQ5NwRWge3wJF0PfYI4pQ= Received: from IA1PR11MB7773.namprd11.prod.outlook.com (2603:10b6:208:3f0::21) by PH0PR11MB7712.namprd11.prod.outlook.com (2603:10b6:510:290::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.16; Tue, 4 Mar 2025 15:32:38 +0000 Received: from IA1PR11MB7773.namprd11.prod.outlook.com ([fe80::e78:8cb8:9f49:4005]) by IA1PR11MB7773.namprd11.prod.outlook.com ([fe80::e78:8cb8:9f49:4005%7]) with mapi id 15.20.8489.025; Tue, 4 Mar 2025 15:32:38 +0000 From: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= To: linux-wireless@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Kalle Valo , linux-devel@silabs.com, =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= Subject: [PATCH v3 4/5] wifi: wfx: allow SDIO device to wake up the host Date: Tue, 4 Mar 2025 16:32:23 +0100 Message-Id: <20250304153224.39083-5-jerome.pouiller@silabs.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250304153224.39083-1-jerome.pouiller@silabs.com> References: <20250304153224.39083-1-jerome.pouiller@silabs.com> X-ClientProxiedBy: PR1P264CA0115.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2cd::11) To IA1PR11MB7773.namprd11.prod.outlook.com (2603:10b6:208:3f0::21) Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: IA1PR11MB7773:EE_|PH0PR11MB7712:EE_ X-MS-Office365-Filtering-Correlation-Id: 4652ac87-b24d-462b-8cd3-08dd5b31cb5f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?fendLNTezTtHnqpBqXMFycPpTj6j7i8?= =?utf-8?q?+vALRTeG3g/swHinUPMwnZqdl/ZP60btFMfuuyVh2sX4Adlto0AV6p6qw7ihfyAgn?= =?utf-8?q?wMGxtJGCZveijXhYM6U0v9zs88W0oiW4Xq4jRNS8P355IjXWAsHFUggsdKKoJB3xW?= =?utf-8?q?xK85xkuqtHu5hsq+xjfBLHfsq00Ye0llwLnTN0etmNVCb4gRI2wNx4iIQU4HsRaDU?= =?utf-8?q?hEym7Jh3Q6ghqxf0DtzlFpd6n9I+ZU7rdEhM8jWLnLSdfUm14glMyOAgRuP49EU0c?= =?utf-8?q?IyiyvgjAitSwEk8C1OTIhzdzXH0cBr1uoWVqYo31U5g7iY0C9Ttys4muqe/0OZoQU?= =?utf-8?q?HcrsUJsaGxBoQemLIxJVe6etZHc4PGfmk8tggUeAWkAxLGjA4FPDJvf+X4DXHjgEM?= =?utf-8?q?09lNqmKay+UfT0SDtj5S9lFmX9N55mGyvBDDO8WwpJ4Nngqb9AtdbabGx0ke5Tu33?= =?utf-8?q?QOmy5O7A2WG9/YJRK0UvWqszuqfGcTv7yc355f9LuFgrPwcSg4Y7ogI+Vk9kcRhQP?= =?utf-8?q?u7UrdFpYS37D2/zIoG+T6llNqHzNz1wzqYAF7is5Csd2fa1PTMNhoPL/kfM6IkG32?= =?utf-8?q?a/E5+657liQxJqmpKDkG72jHLlTG4qSh/OjYbQKwuWZbIXGvmyqKnib5lU+TCAZ2f?= =?utf-8?q?slNXnGDB7u/axYmCphiQEt4hakJ1OtC+k2OG5kH1S9gdrGOWkvItIyODZQ2Hv10JN?= =?utf-8?q?/U8yclCGfxLFRmY9zoVts2sEC+Kh6D8jvsPWq3Wae7DkWes4ol7wSok7Jr+qG9Ta8?= =?utf-8?q?X220S82hvNoka66zw165tEDswOH0MP3eDtV/A07QGOZsL3NHrMi+6AlnXBmmzGJIg?= =?utf-8?q?GTbrlCix7M/OJBczx2uYAJxSPYuIOCPE0MSqXzP4QmvfiwHKu1KLuE7hLNCohbx0P?= =?utf-8?q?wl+t0x0reLWg1uxcNVRlynrEftxI7d3Ossg1t7xqeVuwDyN7aA+4wq3lmCALiGqWb?= =?utf-8?q?vUelLq/gpIncmulqy4H489U12f85Qt25OnIUW1NXj7bEDV3PUJlJ3Q6ZubQzsIycU?= =?utf-8?q?KZAvBTV5vy9gPEJtK+SV2GsWyJ42ZAtJrrMeYt7KgX33YULmRSb9ZDVkyrXvzbwsF?= =?utf-8?q?pDwADQVJ2CXI0ieAXi/1d27QGOrIuFuh5Yu/Z12jetfw8g5il57QpzDqS5GWSatps?= =?utf-8?q?+RSVlrIbK2dXYATnLqlJGdqCpHtStwDTyvp0Hbub3sITDFnrrmyXrWYCZzxlfG2ZN?= =?utf-8?q?def4MB3psCpUzT1bxnjZvHV0SreOwUwzwSPL0Cp1IpPHc2Xk9De+HCkZ0ZZOfha+/?= =?utf-8?q?B0QTQ1SdWmUzEYKeSTCfl30bhYqyeI19q3xs2te58RX4FpNQ+TT2HddnBk+v6rfd4?= =?utf-8?q?ezlH5CWqJK2prvMEKXNoj9kcjVDWrEDphp4SipZonCbC3yNbDGnOGzaAYKZEZvat1?= =?utf-8?q?UQs7Lq5eA0i?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:IA1PR11MB7773.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?1ureY8i4EPli936bXqbpj15Esz/q?= =?utf-8?q?FzXHtLeMwUOdg6PS5WMi4ibqwgVHmc1HVTy4p5BhoEiYnTdPzKJUC5fR94fsZSP78?= =?utf-8?q?X2KOIZAoLxZfuic/gxUWyHz2jV7wvcB8mP72OZFl7McvI3Aiz2GmMWTJEn/OHMehK?= =?utf-8?q?eeWJ8QNDK00fEzPi58VPYjhzsJz2nKGaJU8SUPiW6/nalaL7WmuLZV117+qAzDlJC?= =?utf-8?q?H9ZTplpYUHQGrIv1OGobHiHpQZUPcrh8mQyilY42Xwj4gLfHnPtN0SM7Vw5aeMazq?= =?utf-8?q?6EvWlwBvz5I+UISt4RRNnoT8WUYoOd+VgK5QTLZLdQDwRUHTf/ZtwyRvlsNEnxp4r?= =?utf-8?q?lXfdF8H4b2ci0WXhr9nvlUCwOVpekPdIqV6Ad0a27b9GtFija0JwqR8LACXoHyJ7V?= =?utf-8?q?SM1YLeNV45eTpfFPtOohNzWeyx+amD4uzrtOMFLhUdNOsiDLKldhohk8sMy7Ztgk9?= =?utf-8?q?lfcgyxV/UjhGaOZBTM6SOGZE+frlwsVvko01kI/vQEQQpvP+oRlgePBBuIe5fKgD4?= =?utf-8?q?psrktOjUsV467cAsX2gcTVm5y5qvRxngewkOz1UcsuwrF8Gyrs244F7Uj/IO21fKr?= =?utf-8?q?q24euWhMQvGSciNV5TKdF8a2IuAGf7OFKsOd7oT0nFZDiiUqxcqCQQhre1MRGa65A?= =?utf-8?q?QuyefDjVWiWOLelgvLQBOVk7OQdWIsLyaVcg16g3/w9wnM+SZAgnxp7FXkWHwBf6i?= =?utf-8?q?GRtlJK6Ij93NuAulKiukiedgqEUEsj+7e26ZTxZhD84zbeDSwt5wSDqOn3FFmpvZQ?= =?utf-8?q?RFloHDVw7WOlBHGQIppP7ensUGph7+a7MNwRtiPRnqTrEX+8wOQTAPe1jd0b0epom?= =?utf-8?q?X5dQ3zACRoMy7h50Qb5SZmWyMsSjRfESFMOABcdxe0SdHYHG15xIu5L4rO6pkdF+a?= =?utf-8?q?sQVW9f3mgEC4twT0BEU3qlb825j8u7Pjcyti2uQ6IGKcDoQKiZlih/KQNK3AvI36S?= =?utf-8?q?M+EaOC+kSRoT5Aik3jq3GRq+4lxCMdL5sx1bDHe32TUkXfaOksnLzdN+3KUkTd3F/?= =?utf-8?q?ANKKfaBbILalq//TrCHbMFqr2R9TF8Pf09QDb8yAmGmracE/r5Wk/ThOS4Vv0WyKB?= =?utf-8?q?ZixLuYMrkxiUxlY6bNQEqSPNUYdCBqHbRQIhKwgsV/XMLkNaeJ0lWT1AwuzxJDgAF?= =?utf-8?q?j+qSlFCm03I12AynZtr5TGpjOJY+MvbvSIVzOwLwvygeg9bhUpYvFPuSP1hVAyDxf?= =?utf-8?q?fPjfFxAWFaIO++BMK4cmWY+ocdOBJlXjB/2QrmKMgZjlQbmlF8gx1YsRsMCPCBQ8P?= =?utf-8?q?/UqOA/zU0w4ax+J1RgAsBC9rMngsaoO7++abJcvs4JnsFW1eJ3YgBJXpUAr0NhJZT?= =?utf-8?q?JeDHPZRP1eJjbk2dKoUQzru/gn4FIELZduob9qDT9miOt0/c1lSiDbOo9A5/CJ/he?= =?utf-8?q?IEAIGYcxuGGh2uXvJtuEF1QTl2Tpin0qao3j8TWT65Q1YiWYvzejNqWgeWTRnyH8P?= =?utf-8?q?RMYaOzZxVdrlDZyr7eq7PXZRBZEpqHjeaovVjNF0CQrnAvzu2ZEcwsqYkX+MIv387?= =?utf-8?q?trjtwN3WWuCD?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4652ac87-b24d-462b-8cd3-08dd5b31cb5f X-MS-Exchange-CrossTenant-AuthSource: IA1PR11MB7773.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Mar 2025 15:32:38.1916 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BOnZNeNlkkfW86bjY1blahLVnmAr5St0ElFQ0vLp06s9ssLNPGORkzOoISdVH5XjIQmRDPzDyxjvqwul3Lpvsg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB7712 X-Authority-Analysis: v=2.4 cv=DPN14zNb c=1 sm=1 tr=0 ts=67c71d17 cx=c_pps a=Syk5hotmcjzKYaivvMT4gg==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Vs1iUdzkB0EA:10 a=M51BFTxLslgA:10 a=i1IsUcr2s-wA:10 a=2AEO0YjSAAAA:8 a=_bZ_Ugej2YiJM_EvIRMA:9 a=QEXdDO2ut3YA:10 a=CJgG61vzA6yyTBTLYZUp:22 a=d-TXpq5eZF0AJmg2YLt_:22 X-Proofpoint-GUID: bkINjzr3vwkjoCMCgPK-fTzNjrKbpR9M X-Proofpoint-ORIG-GUID: bkINjzr3vwkjoCMCgPK-fTzNjrKbpR9M X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-04_06,2025-03-03_04,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 lowpriorityscore=0 impostorscore=0 adultscore=0 malwarescore=0 suspectscore=0 mlxscore=0 bulkscore=0 phishscore=0 clxscore=1015 spamscore=0 mlxlogscore=830 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2502100000 definitions=main-2503040126 If the device is connected with SDIO bus, it can wake up the host using either the SDIO controller (that requires MMC_PM_WAKE_SDIO_IRQ capability) or the out-of-bound IRQ. This patch allows both. Obviously, the SDIO controller must be able to keep the SDIO device powered on. Signed-off-by: Jérôme Pouiller --- drivers/net/wireless/silabs/wfx/bus_sdio.c | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/drivers/net/wireless/silabs/wfx/bus_sdio.c b/drivers/net/wireless/silabs/wfx/bus_sdio.c index f290eecde773..27c5d7f534a4 100644 --- a/drivers/net/wireless/silabs/wfx/bus_sdio.c +++ b/drivers/net/wireless/silabs/wfx/bus_sdio.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "bus.h" #include "wfx.h" @@ -191,9 +192,48 @@ static const struct of_device_id wfx_sdio_of_match[] = { }; MODULE_DEVICE_TABLE(of, wfx_sdio_of_match); +static int wfx_sdio_suspend(struct device *dev) +{ + struct sdio_func *func = dev_to_sdio_func(dev); + struct wfx_sdio_priv *bus = sdio_get_drvdata(func); + int ret; + + if (!device_may_wakeup(dev)) + return 0; + + flush_work(&bus->core->hif.bh); + /* Either "wakeup-source" attribute or out-of-band IRQ is required for + * WoWLAN + */ + if (bus->of_irq) { + ret = enable_irq_wake(bus->of_irq); + if (ret) + return ret; + } else { + ret = sdio_set_host_pm_flags(func, MMC_PM_WAKE_SDIO_IRQ); + if (ret) + return ret; + } + return sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); +} + +static int wfx_sdio_resume(struct device *dev) +{ + struct sdio_func *func = dev_to_sdio_func(dev); + struct wfx_sdio_priv *bus = sdio_get_drvdata(func); + + if (!device_may_wakeup(dev)) + return 0; + if (bus->of_irq) + return disable_irq_wake(bus->of_irq); + else + return 0; +} + static int wfx_sdio_probe(struct sdio_func *func, const struct sdio_device_id *id) { const struct wfx_platform_data *pdata = of_device_get_match_data(&func->dev); + mmc_pm_flag_t pm_flag = sdio_get_host_pm_caps(func); struct device_node *np = func->dev.of_node; struct wfx_sdio_priv *bus; int ret; @@ -235,6 +275,9 @@ static int wfx_sdio_probe(struct sdio_func *func, const struct sdio_device_id *i if (ret) goto sdio_release; + if (pm_flag & MMC_PM_KEEP_POWER) + device_set_wakeup_capable(&func->dev, true); + return 0; sdio_release: @@ -261,6 +304,8 @@ static const struct sdio_device_id wfx_sdio_ids[] = { }; MODULE_DEVICE_TABLE(sdio, wfx_sdio_ids); +static DEFINE_SIMPLE_DEV_PM_OPS(wfx_sdio_pm_ops, wfx_sdio_suspend, wfx_sdio_resume); + struct sdio_driver wfx_sdio_driver = { .name = "wfx-sdio", .id_table = wfx_sdio_ids, @@ -268,5 +313,6 @@ struct sdio_driver wfx_sdio_driver = { .remove = wfx_sdio_remove, .drv = { .of_match_table = wfx_sdio_of_match, + .pm = &wfx_sdio_pm_ops, } };