From patchwork Fri Feb 28 17:14:40 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: 13996832 X-Patchwork-Delegate: johannes@sipsolutions.net 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 DDA461A8F9E; Fri, 28 Feb 2025 17:35:30 +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=1740764132; cv=fail; b=ssyBE9Zc0fIK3o4bR1siE+92j27k00UDNxFcjj94wM0SWxTJ2kxL36CNL1cmr4VNiOzbk0/55G+MB5ysr0UDzk8aUGPALPK3UQ9ELissaT1pDSm/HxP7RGHgrY/PoDvDRdfpA1cTweiFKbQzlDLEXf+sOSxsXvpDwPz+fVP4wPc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740764132; c=relaxed/simple; bh=wbfzaANHWrZwHehU6zHqx+P4Q8s6SqoS7Ckujnd6xIk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type:MIME-Version; b=b9IlssSKQP2bDDwwwg/n+18VMMWEcRgEEGY1pt1K8St6YQJBbErvHGMJkdLhJP2Y8uO2kA/xQsZWaCTdXJLEWeNllusiYa2nXtbQueL1F+ronn73U8P82GO4qAJ2DVrLQyqUdTsJNU4slTSKrF5dWujtaTmGIZOUybkCCRQFFZ0= 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=lP+9/y8c; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b=KIpxY7Tt; 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="lP+9/y8c"; dkim=pass (1024-bit key) header.d=silabs.com header.i=@silabs.com header.b="KIpxY7Tt" 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 51S8EhYJ012718; Fri, 28 Feb 2025 11:15:01 -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=lP+9/y8cVI9t 9vk6+T1gSwgGiM1sm5oHbMAHhv+BqbdiJo4TIXIimldZe3oGka5hxDsxcPb/Ueax j37I3Y6WYZEMoH5te29DDl+PEz1rtA4Dnk/bhKDHX+FxMNUhcKcAgBu7hVZ4KnUt MQ+mBMJP/+nLTavJovZyrOiRe4cMUH+xyW9bJWetAWKLIGUuRQZBeV1TnqrRYNev rTjCDnScwZxPTeUjMLYUnUpZrJJSrruBWJA/chSY24TMv8UkneAE4TV1/gXKYTKF HHTSYTIJvlryA1Df38z0Vy6XaZuH+2XbtGjen/NKy1DAGm+k/tYQkr3L+uydYKzD 2XyK3Z75AQ== Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by mx0a-0024c301.pphosted.com (PPS) with ESMTPS id 4539fbrujd-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 28 Feb 2025 11:15:00 -0600 (CST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nqjwtyXsYMvLcYJlaY3a8HkSAI3QRKjZI9Rbq9jtMVYOqq6S3dIWWo12Ade7QFxvJRYKr9HfoQkqRZBaNl9YDenb7PCMWs4shkVAmkAIV6+0+IIpU6/X+la3W0P5RHfQe0hBuSXm8JOuSn8ZD/lpJj1K+J+pMJHRJGekZLpYhfw4cp9QI2646InwluAAhYmzuNdRZMKF7OLFoAJCEV43SKx2pKhWZF2XFtKR2iSBfURW2jzxrHz7gysh8tDP2zpGIrsXk8n0w20LdFlgwjf+0Mk+oWf3Q/ZWfoK1g5GCNvJoXm14Bb2Fc8j6yG42+575RBKbro/K7DbWikk0wM/EhQ== 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=u2G79onUrASXtFt3k8o7ZS/MyAOU4mKoV79EtGCPR1vNuHQ/m05bP7lOEYNOEQO3NICcwK2FYjvOt7aoR5+TocR0UxnQ/jfFJFBCtcIW2KBW326Eu93cSDNK03Oka7smW8mIuGFewz1mIvxlkiKXcdbetwK9FeKDz03naORLdax6011lKrSgRCtJkvYb3oEIp+qAOZy8m5ylRM8D8+Fzuk0QcLdFm0u05J5yxvpZDxUpb7/fgikpWTd8WDY9+tvDtHuSKJ9NEwNwABB07I6eJkkpyRYZN77HHLFazbhURECF9JbPjQrQzuCrA0z2MlnNCMzFVtGdMdvQpPrVnFbNZg== 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=KIpxY7TtTWMOS/xDkoGQebOe+dFLMKSJq1uZZLGpr8F5db+C8x+e3JneXg6fLCZXZgr10Fp0vya4h6Jiff4LVkFTtwFxmfUtYSNxs7rw0iXYbVm8qKA4KQxFaZERElgmc3NKS44OmjRGhCD3SuCKKZk/nMMShBwmRcnQ7sPUAZc= Received: from IA1PR11MB7773.namprd11.prod.outlook.com (2603:10b6:208:3f0::21) by SJ2PR11MB8567.namprd11.prod.outlook.com (2603:10b6:a03:568::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.22; Fri, 28 Feb 2025 17:14:57 +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.019; Fri, 28 Feb 2025 17:14:57 +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 4/5] wifi: wfx: allow SDIO device to wake up the host Date: Fri, 28 Feb 2025 18:14:40 +0100 Message-Id: <20250228171441.109321-5-jerome.pouiller@silabs.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250228171441.109321-1-jerome.pouiller@silabs.com> References: <20250228171441.109321-1-jerome.pouiller@silabs.com> X-ClientProxiedBy: PR1P264CA0058.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2ca::12) 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_|SJ2PR11MB8567:EE_ X-MS-Office365-Filtering-Correlation-Id: 33633b8b-2499-41a1-c175-08dd581b6d1f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|52116014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?YzFwhw+nyCLbq682VLA2CrYCyVQrfkn?= =?utf-8?q?YqD7DkEWK/+566e2Y9dIgOMwt9BX1az33IG2sALPCNnZPY+9GyFGjMW3dpxttRw3P?= =?utf-8?q?1RB8oD6mEy3rV2CawUaZZLcav5HB8upsbjT3fgdifBgmD8zRvlPGZoiM6NKhhFmnl?= =?utf-8?q?8oApK9MYzQm4zNZgMQOtC1BaqxP9krserMsvy62IrwdrQ/yA8Fmiw7Oxgfikf3N5r?= =?utf-8?q?KZ4ip8MvAtuv3a2E1wbOWSasJLO5CwuxbnQbCjiUkNiFNE6Ohsv804ea5KN28qAX2?= =?utf-8?q?NyD0cE1ExNZdHr8oT8VZL75ty4fso378kGFvCknmuOnxnCP6FGbo1bHfxDT+seNFk?= =?utf-8?q?B5kmfxgPwyE/P1iFAH5Mu3cG1+yEIRLGJy5e3ybotGXW7//InFTW4JT9QScL+O3ZW?= =?utf-8?q?ViXrrYKVYV1bcXXuyrFHLY3mEN8MXysyUfFcfeCfVXeFYJ49yfZvrT/1k9KltYPtX?= =?utf-8?q?RTiFiRttM9O4ZMY7rl8NykpoC399/TTEcE2tkDDzldIt8bXhdhIK61HrQMXtvyi3z?= =?utf-8?q?rbk4p+tEjWt7SK/6nKrvN/NzAV+4N/zJ1M8OFavWF3F6ZnjsKxQbEEv39WiXBCoTO?= =?utf-8?q?7KBqPukRlgOj/vOnmGtjj/I3N23sCRJhaM1a8x5y0qQR8WjuJScaEX8PH+Hm4Gh12?= =?utf-8?q?Td2MaHsl6IwFnOKGE7HTecM8BMYzJ33Tflx5ALm/3kWehPvRxLshSOQ0D61NYMfsV?= =?utf-8?q?FQuCx15MQniJgvqbaxpR5Inbfxbs/cqDcHVtbzmY+fZXl/tiSlw8bQT2rzLZGv2GQ?= =?utf-8?q?VFn+XLFFYVSjfaQ3fSScZu50MJp6C7+VmE0w+Gcm1C54OE2F4qb/MJRJ80MUJPj93?= =?utf-8?q?ORw50LE7htrQUVelPuU50DpMR30IXfGgazwDajHRi8yJ+WiEriwMkXPu3lNvE7Kdr?= =?utf-8?q?aDFdu2kvFk5H5RY+TQKWlCwIJ3U1bBEbxKVWkDBCpvvPQAs1pYerzrtofj5B7OAJJ?= =?utf-8?q?ln/jUjXfKUxnSXq1pmmHt5nENZ2fWdw8IEXDnfKcXVk0dVvIcbKiXqSAvJ0T/Wn6z?= =?utf-8?q?S5DczGnU7cFnhFCaKAVJn5QAAgDE6+nxTUWzuPmXAtKSRtKicjoyCJVKVEPXlWpcz?= =?utf-8?q?SnIQyqrVM/LfYyljiRtEj/h8Q49PgQDlSVkqpddCDXVsN+c7/zU5472iIFlaBGC44?= =?utf-8?q?em+vPdt+c2gXDCRdwlyGhp0TkmXRqzG/2iGGZ0R8pi5gOuaN5kwlKB8V5yL1G21mD?= =?utf-8?q?/4IYh01L+SRVNunYA6vmWWLxCPGbPUjObwgZAJpduoMGW+wWhSccZV8s9H+2xaT+j?= =?utf-8?q?4k9oSwhRZepvbd8GVe9QHxS2X5Px49rUf4ocJ9zIFf/s8daF19/81C1ridTh2MKkK?= =?utf-8?q?vnKwUNBYP3WvpciX0XzXtc7Z+HtgHRS1uDVDdoMuLsvEgRHhb2PXfd82i+/qXfany?= =?utf-8?q?H4yb+EPmxTo?= 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)(1800799024)(366016)(52116014)(376014)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?CUiKbuzql6fGqEoNUgjQkRrxslsH?= =?utf-8?q?vMPPx2NfRu96WD/qX02hDBdaVmXh8EZqa4vjvWFgwHq+c9y3GXl+3Jkzq3tBEeNd0?= =?utf-8?q?z2Gxn7FjcrtWFLo7QagX/1vfs9qi4SPq4NNkbCyQXIv3z7m2Cjk5pclSjWdZV3yKt?= =?utf-8?q?bifkKhnlFu5RMZ19LRv/YDCrhvpDhy5dL8vs+Z4/738bWuSncZvO3bGLPa0ima4ne?= =?utf-8?q?THThBWrs7OUBWbZOA0+7hePDReaRWPO6uhQ9lHE8tKmoIFxczTUI1ZlRAs5KzXnQm?= =?utf-8?q?Daa73SdEJn1gxEBdMT3Cg7XHFzU0Dumbh1ADEfrhTLQYu9wPymCtTvSBsPR/rbiuQ?= =?utf-8?q?WomlGF1bcCevJ25ECKstd27S+nvSZv5o5GWm+Tc4TDLDzLTJCUHepgMRWI36kb8hB?= =?utf-8?q?HFnFks7dWpwkztCHJbjqwbn/MZ9OShKlM+mAcEUUYxuc/DNCRQZKWJcOPHigoC9yQ?= =?utf-8?q?zvJ4qee7Mr9KlrkE+nyDM0t3+Zzk3VRPoxQO09E9Lxdy4tYFVP+aWOADBRe1mWe3A?= =?utf-8?q?LqT0lfOVBWXDq+hjsKxxvVz5eVk6X7u6yCA6HV/ucTGih0XTEwm4KzxWyUZLDpo8u?= =?utf-8?q?eMj3U/0v1RkvM/VCuDN4Gk4t/EJ+mEzbGq05S1UEzeivnV8SvIHc0wsrvSqYrGL8z?= =?utf-8?q?dZlLG1G0ekz2SO663ftW/vpchKCBI8IMJ5gTUpk0U7CX5bG7oxGSBbmhKiHn9wkvU?= =?utf-8?q?ufr/Hxwx7GFOqfr/l8RgHLZZBLi8aZhneEfA+mqKxle4ugBdQyUv73DViX4zjejLz?= =?utf-8?q?Mapmz+OIfLiJABCtEh9FuJrZeYEeyn9tj5BdROZ0CUdPkrUiKhCANsefbGunTYYY9?= =?utf-8?q?ChmUXgKRTD+hjsTE48G7LKQBqRVNayO2aoMpuEw8J5QfZn5Rhtm8YqqeHOwq91N1j?= =?utf-8?q?ig4fZdZjZEHFquOMxsGNODEaMXioTdQLTKTBALuTBWfJfHPSBweld3V0LjlpsO7mA?= =?utf-8?q?WwCOBLlgWlj4GXAVP8vN1ZjWuhve2S8T+cwcB8r5miImyo5+xWRQc9uXgZaR/c3IQ?= =?utf-8?q?JHA2d7qflO0BLSSneqxHIYDF0vil77Ze1g6veh5E0o+lozXwr4403QcatvkBDZAaY?= =?utf-8?q?XXdR5W31YWrjy8BQvLiq/IlTccSAhNno4kx/WzLrQPSZzMbNiTlZldKkL7FQEe+ho?= =?utf-8?q?0nS6be5EN0AXcVLOUHVp/G1Fc2ajWq0HgL5V9ttbQhaiHRIYXM1VDvoIYOvM2KXdn?= =?utf-8?q?5eKo1h182L+MH3/g3MjORydm81ZsHALRr5wnWlfQd4TgtSaWmt64xG4g1ooMVpwWV?= =?utf-8?q?KnBmIj/Zn9GNdLeMZvNMnjJjIRVIYqYCXhSxnaTx/T1FbWffeFvrLx4FrgumbQd+E?= =?utf-8?q?zazeqt97232mdLOvBLeGDHnXuusGYCS3jLmW5rZmkU7TwejtifKPyW2eFXbiCsg2p?= =?utf-8?q?1cTuwSiHHZPJpf9vdOlQEAB2uuUtSWccX9UJok7BUEZjS91Zf3Eaj0d49u8jyo1il?= =?utf-8?q?mMItRRhH8p6g6qQxzXIhGThomqBO4u7JS+I/LQcpdlj7VSA2FEfC5IJst1HAgWo8A?= =?utf-8?q?6EN9q6LfkWJm?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 33633b8b-2499-41a1-c175-08dd581b6d1f X-MS-Exchange-CrossTenant-AuthSource: IA1PR11MB7773.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2025 17:14:57.6110 (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: R+2boAV+RHVO4MuAM/vnfoW9lMVeHsm21rq4CyPEhqTdGKXS0jBwje67oqiVWHH4WYxUCKKEJ1iWz5y8SBHB6w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR11MB8567 X-Proofpoint-GUID: RLp5xNZYsiTlVxi-bCFJEhN7TKBWlGIh X-Authority-Analysis: v=2.4 cv=BptnwZX5 c=1 sm=1 tr=0 ts=67c1ef14 cx=c_pps a=+tN8zt48bv3aY6W8EltW8A==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=T2h4t0Lz3GQA: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: RLp5xNZYsiTlVxi-bCFJEhN7TKBWlGIh 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-02-28_05,2025-02-27_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=824 bulkscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 mlxscore=0 phishscore=0 clxscore=1015 adultscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2502100000 definitions=main-2502280126 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, } };