From patchwork Sun Mar 2 14:47:30 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: 869820 Received: from mx0a-0024c301.pphosted.com (mx0a-0024c301.pphosted.com [148.163.149.154]) (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 0F9A72AD0C; Sun, 2 Mar 2025 14:59:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=148.163.149.154 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740927601; cv=fail; b=ntP/L0at2NRDBY0a/wgNKKTc8x2NrSxkyZ6lRttrIn4/f9I26HGMJ/glGrPZhQ0kOExgd+NVo0GClo9fLwWepbsUCVDVwaIuQkVM8sRAn3reTfjBb1ALqd38A8Mrcc/s8cZMZfQjXu0438ZqGr61d66Otw8ATLTLri69GMxCoIQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740927601; c=relaxed/simple; bh=wbfzaANHWrZwHehU6zHqx+P4Q8s6SqoS7Ckujnd6xIk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=rJG/sZIPQIzncAJrBRGgLhCsKDzAB8TCIU0zg61ioXpPA2mefPKFISCoboGKbsN16y1h11wr1xyuM6ayawD0j2wHvdLlS93gopOvgD6FAfoWQOjgoWjcNtMAj0s8Y4ys2X53scnhp8y/F1DXOkiz+tGcXdf2Reo4CNKvykXhBWY= 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=hyDR83W1; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=AOkzV8uL; arc=fail smtp.client-ip=148.163.149.154 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="hyDR83W1"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="AOkzV8uL" Received: from pps.filterd (m0101743.ppops.net [127.0.0.1]) by mx0a-0024c301.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 522EItXZ010648; Sun, 2 Mar 2025 08:48:16 -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=wbfzaANHWrZwHehU6zHqx+P4Q8s6SqoS7Ckujnd6xIk=; b=hyDR83W11vvJ up7rOh1WFW2Hxlj3uh6PVna2/nK2St1A3T6GfY+Ui6si6wGwwl5fkjx3Fmik8Pib tX9MFrnknmK6YhEov1OXJ8a7oBaPJNLYX1DIwumIEH65sFKRfB5ZfwnucKJ3zqEV ixCQJ/VYBgowSAeINrb1vrZLKzRvB+NqtxJ+PLRaMuXZKRiiGTfDTednqZr4Im/Y po6JcUCnC88iKXBUcT2WWUlWNEqebmuWUXAHPOvg9p4zuk7Eh7FIKfiZ3CPv7AP3 Cuy8G1SFYHOYwInLnfhM1gNBMBtEOhhA8kwbPZcFEeQXgSSWSP3gdSDNUAqtH0ni 2zuB8eX+NA== Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2046.outbound.protection.outlook.com [104.47.66.46]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 453yegh96p-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 02 Mar 2025 08:48:15 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NxvXb4Azs7Afw9ymZZ4NlEdpUkA9RFUeVi9yQDnUm54foyahcXWVbYbb68BPEOzluMNa1ySCYcSnx6FkHkqHutbYMdfkWlYn4MKxMjIQ9TGkIKiFiv5sI/+XKjy4FK5dKMX9C7tcqEl/eD4K/a2K3ZGt2VXObCOvy8X7kK82Jbrcx3qvDMWwTZUXlkhuxS7gM3U1INP3vK0i18ln4l36T4PSJ8jqsTLGef1l2k0RwRTZoqWmToShd3NnD3heeiF8UvMKLlyQDV+QSGok8rWdRmilnYVu6xW72q5w5O3UfNW0T/LJcgKjf+p3fmHBG5vqY2MxjseCAWZxSEDnaqfTiA== 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=wbfzaANHWrZwHehU6zHqx+P4Q8s6SqoS7Ckujnd6xIk=; b=ISeu8L+71NwNFwLyeN2t9imnztOBVl14qzX0sGPkf3Pcke+/DsB4LbbhhODK/veqya+tobUTLm7OgCfe0ebe904ZYt+3P7H2pIAhzpkVMCIEE/qzQVA8ukYaeAwLa+w2mCkivR4yaJQjmZ2fWY62Z+wgMI+N0dy83bCLTthALkhSBWo69zKDuPIWzR8IoLrH9g9p19ogwQ/4TsJecTKOsmCigWTtTAMliJ7fO8kcagriYND5ZCmK7REcPvwR3XjfSAtKQlcUPJxYNq4ErnJ3C67OpvLok5zX7I2wtYn+KRkkXdsD5MEDOJWSdHfv6nKpJsLlYSBlYLrGhrNkWNJzVQ== 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=wbfzaANHWrZwHehU6zHqx+P4Q8s6SqoS7Ckujnd6xIk=; b=AOkzV8uLpdUi0kUVD6+2MqVMQAn9GSJV7H4EITjdnFOPtvMmkFVz3/jgKpANEVxS1i6ZTm0bfzAI2d+2NBUg1yCAegB1xqDIY+TNhixqVXN9EerMCwHOwhnDPVe8pmTHKExchhoMwPIe75zihO7ap2si9bcTvLigId6PE8fnOMI= Received: from IA1PR11MB7773.namprd11.prod.outlook.com (2603:10b6:208:3f0::21) by DM4PR11MB5312.namprd11.prod.outlook.com (2603:10b6:5:393::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.27; Sun, 2 Mar 2025 14:48:12 +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; Sun, 2 Mar 2025 14:48:12 +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 v2 4/5] wifi: wfx: allow SDIO device to wake up the host Date: Sun, 2 Mar 2025 15:47:30 +0100 Message-Id: <20250302144731.117409-5-jerome.pouiller@silabs.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250302144731.117409-1-jerome.pouiller@silabs.com> References: <20250302144731.117409-1-jerome.pouiller@silabs.com> X-ClientProxiedBy: PA7P264CA0241.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:371::7) 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_|DM4PR11MB5312:EE_ X-MS-Office365-Filtering-Correlation-Id: 445870bc-35bd-436d-ece1-08dd599941ef X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|52116014|376014|1800799024|10070799003|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?q?LDCTbnI+UJk8IF0NPWIOPAp3Psdc8bQ?= =?utf-8?q?Ols2n9GeRKsWfFLOGYUBdBCxyvUZVwK2z7W/hXYF2EVucTsugG8nR3U2JWC8WU94L?= =?utf-8?q?KPqpwZcVSozmfGTU5tIiSPR4pVkXAJlUHHqfQkbWNhxX7ISvLal5mi5BzLIEfVQLK?= =?utf-8?q?WaoTyoc0eJa7BFrwXDC7hiHoVzgSe3bfvXlnohHm1wdWoy64/Z/YBtuWDqvvoVMZL?= =?utf-8?q?oeXmxWwqWbZtT09jXOoEa7qmn3/akgAbc//evYgDBvrNxCOo9KitlxqmhqW6wgzgm?= =?utf-8?q?pnPd3ZAUZRnPm/oj7/gYeforP7B0NlzWUte8dkxYJxKmQQHUdvKlaradQOLy3nKMN?= =?utf-8?q?Pfbr4Np7K+6Z77wmygyxfYM4PfIf0Hfw5bvs+Ap4BsfwTzQn1GBYztc3pal5t1cPM?= =?utf-8?q?lsLsoEp0E31F4FINv+a8t0D0c6BaxQlk8S+1ZGdl70jgNwxmE2MgG9PKpKa+qnp60?= =?utf-8?q?b7QspuZ9IvKoVm1YSJVv96X5ewA2PYagXS1oSUhcGlXBCjn0cRgr21KpbD09Jd6eM?= =?utf-8?q?BG/klw4/k6s4a4zTfmPabVJnhFKwBVLUYTSYtZhX4zfquof8Lpd59/rNbGFCSswjk?= =?utf-8?q?wvsPz0Qs5XHACi02QqQEKlEdDjC3gdMZx9ho3Wi1OBFT1wu+7cDoGRYYKueRtiM6R?= =?utf-8?q?60Z2d2YFiGoLwY8TtWkrqvwNKScqTUezFhPjG1/REKLdLfkDvuFzqQu1cCURg/unt?= =?utf-8?q?5fWN5kmrrX5VvXGf1yXDQsW0Pr1bgVmrD3LkFkZ+DzE1AoJU48kd8rexwidsvCZUs?= =?utf-8?q?AO1FP/OHpOi32KUVorMraS7460wk/49Nt1ySEM0tr9JzJmGMA6WoxXmME2kJHhT9A?= =?utf-8?q?1d8eCu1ajg9Et/ZLULVmb9vAzCDYlYKx6Zxf1Uu2hmJH71HEzYzw7IOR9XTDjAgPj?= =?utf-8?q?RzgrCt5YzkHXG9ZmAdr+o2zsxIpGzyGjCq/BEE1df84IyuJTcUE/naC4gze7artxn?= =?utf-8?q?UdqW6c1zPi/YPYlHsEVYnym4dpAyJR9Yvvr8kiVFh7mxD7D0u/dBMoY+LnqU/0kAL?= =?utf-8?q?0ExESU0cgpPkW607XhmSkRo3J0/kj3xLUiZbkNldry7+0r1oMwvhW5kw9qjjLZs83?= =?utf-8?q?vd7gdBP5jzPYWlXiD0BEmuIWK8KYwxhLL9St2H1cCd4MPRBHql3zjuZ5B7xX31LFq?= =?utf-8?q?/UaQepPvUj/DB8NtWdKAWirpf13a5j14pQUKtKR98l5C9Tb4Mz/uUDzLRjW9UUriA?= =?utf-8?q?+YT0z3x3ifFFHV3gBbBF5MK6p3/fAO/eQ9kMWUAemZdEg6Np6sUsVAoB4yRRjUe7M?= =?utf-8?q?1jrkMi/zRQntmOZYrW/9KmNZjwNG7zCF3ffaFW8IbJ5Al5zT0xpVVS+Itx3RWKP/G?= =?utf-8?q?XOy8wQwCrii0?= 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)(52116014)(376014)(1800799024)(10070799003)(366016); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?ryuBvMX4+52cjc0ly13SI+suX+kF?= =?utf-8?q?IRpu2+hHF9LiOR4mazhG+Ndyd4Beuxs6P8M1PPXPNAZDzI4NstQijLRJSanO7+46U?= =?utf-8?q?eJUf6pVBpagiHMzzXNwMtJIx+iW1t1mbIdCCr68Wk5zu6Tqd0aPqecTZ47JDh6iVM?= =?utf-8?q?BMi33cQSn4opD0InLWNowT/3ekApiExYFXaeYIFpgOJ4Ro8XKDjnwB7ADZc7Qo8wj?= =?utf-8?q?z9JMbJPYMBYTbPG22zlRjYivW18MeKTZgFDLfxIeRhhPSM8OxG4ePfzhCojGDIq+S?= =?utf-8?q?JzsXT0ZLsmzIL1X/jlQnUPBvAmUdkzof3lVDWjp5Xy8cLFVow4wbkaP3riavT4Bg5?= =?utf-8?q?wMITvSTp7bfPqxIkkaEoG8fEFSGKPjnmcfX45LMw3Dq0BcDMgCfYwVHIEoUMk98AH?= =?utf-8?q?iPKo6naNUNVIqHvGkbEyF+t/+DUYBwJGpULiAdOILRFlUD/Y/ugh/4z1I1t0s4YoY?= =?utf-8?q?2d12kqNgjinGCw4nZEEj6+/corAYR02OULCWdV+l7D3VFip/44ngUzat25vyI7UXO?= =?utf-8?q?4pwHfA3n0reT0GLSfWVbuZ9cqHjgum2H9IcBAeltIon9GTdQfyOGQqSRBOmLB/ljq?= =?utf-8?q?bDbltC5B/5dnSCjLX5l1sCtWeEwuOgvWjDTY5LMySgMgd66TRlT4FuMoICKyRy2Nu?= =?utf-8?q?EnVynhUl9AK6TObOAncyZrLaeY3mYBduBhRsEAopXvTDeUu7Iehi5CmWlwpKa43Yx?= =?utf-8?q?Fl5DOOZS8IyshBQR0Y9wCxMzkKNwZU+V/VkNUA+CDxvfqcYOjnbP8lqBw9b+Kuv58?= =?utf-8?q?YC6SmURSX9bRUw0d7TXnyX2/MJXKP3Byw115KAg9/PVNhirDkJpU5u2mV0PFkFMZ9?= =?utf-8?q?+ktdwl1RgMSAAsz9l/jdXLVEGVFZEVPvZepgl/ad+vA2XZnAMyQEACohmvMtQoxQD?= =?utf-8?q?rtg7xQ5szmErYhFuV4E5x6+7cssKy8Vu+Sk8gVYIIMjPd0h/O0aerkEhiKHExntkv?= =?utf-8?q?MwRHeRzEKUV0XEIS8fh3luIbzg/bM44B7tG9t2pGx6jtqKhe4P7kLp/G6XXF7KBLY?= =?utf-8?q?fVFWfkkioifXDyUXIfEDYWgWnkRwfNrSUtsyrjbiP09oeWI6/FDe2QtH9ocSrycr8?= =?utf-8?q?1GCrb5fq5Ii1ubdex98k/hRf23jL6zcjVTgNYMBDx8T8pR34vOzeQdCGonE0WCeZU?= =?utf-8?q?TN7IQSA52rAC9msuytvpqVzQxq8vJ9aSCDMBAW4KYJTs9Gs/aMJsyUIRoVAAbhve+?= =?utf-8?q?/jZ8xqNTwFVPntFLsJzwOnARoXfhZZoZ81Z7O/jrJrN3glbeOKnU41yqOI/gs1GeS?= =?utf-8?q?mOW9t5AtQ0QpePmbGFjbVHPklhqlNvgDJCMXfo9jBqELRLuO1qLZ7O2adJ8oFtTdD?= =?utf-8?q?38YlIY56iSE4amzEsbbyl2a8eR8tJNIYaptgazGSWw1cyNa4/6PBMOtj9d/xbLPpQ?= =?utf-8?q?quOrdirxmNlKK1ltaOYFXxmg5XYBa/T7pZGeVpk95drL20g/HyvCyD3SsiPNRwo7F?= =?utf-8?q?nj0sIWkHn3qUWh4OiwrRDktZv2qoj1yj0K6K2Vb7yKM6xdAET8EYlor/ws7DqCvKS?= =?utf-8?q?nXFyGlNZDgHQJMp4qwl/PEYeUnQ0BgZBM2a44dpSHTrkHDDO1TLKkEYBVMeDpEMRt?= =?utf-8?q?1cEXQeRvN4m?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 445870bc-35bd-436d-ece1-08dd599941ef X-MS-Exchange-CrossTenant-AuthSource: IA1PR11MB7773.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Mar 2025 14:48:12.8458 (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: jg/gUdZWIHGGyxxprk2kkvRzTeUFSWb/YGp7VMBgcW+aFLZCtx4InURKwI4LunLve7/h5exvveOMAsN0M3UXQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB5312 X-Proofpoint-GUID: Op8StPeGsMzHboS0rHpoOLFIyki8nVsr X-Authority-Analysis: v=2.4 cv=K9PYHzWI c=1 sm=1 tr=0 ts=67c46faf cx=c_pps a=gaH0ZU3udx4N2M5FeSqnRg==: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-ORIG-GUID: Op8StPeGsMzHboS0rHpoOLFIyki8nVsr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-02_04,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 phishscore=0 spamscore=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 mlxlogscore=824 impostorscore=0 clxscore=1015 bulkscore=0 suspectscore=0 malwarescore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2502100000 definitions=main-2503020120 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 | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/drivers/net/wireless/silabs/wfx/bus_sdio.c b/drivers/net/wireless/silabs/wfx/bus_sdio.c index f290eecde773..bd8e1ffb61bb 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,46 @@ 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 +273,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 +302,8 @@ static const struct sdio_device_id wfx_sdio_ids[] = { }; MODULE_DEVICE_TABLE(sdio, wfx_sdio_ids); +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 +311,6 @@ struct sdio_driver wfx_sdio_driver = { .remove = wfx_sdio_remove, .drv = { .of_match_table = wfx_sdio_of_match, + .pm = &wfx_sdio_pm_ops, } };