From nobody Sat Sep 26 11:46:39 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011004.outbound.protection.outlook.com [52.101.65.4]) (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 A4BEB3A1E67; Tue, 1 Sep 2026 19:35:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.4 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291317; cv=fail; b=qA9uEi0cIQrs0LjZ8bo4lQkxGM3xE8bnJBY/EyMPN7vhddwJN79ixjNCIhrdbYhg3nPZyYWnDWBkVn0R4CujIk2jL3m25fLDY+5S8WyeYt1jLAYAZZcj7jOMmca4qsgVvC3n7HFToZvVnmkw1uNlNKCii3dA0picYblyawfvIYw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291317; c=relaxed/simple; bh=KaIYbjJyWmFjzySFgFo00E5lChAw+KsyyTR2G/XlqJc=; h=From:To:CC:Subject:In-Reply-To:References:Message-ID:Date: MIME-Version:Content-Type; b=EQzAcOULwl0M3gvODgrY43Xt1ylaYsBsYG+eX5FK4P5V7MJt18LkboAgwooVWjvlq1cim0KX+d6BCulBEUti8ACzLgNbtG/pc7P15J9tCcXR9xhEVxnaRC5cRjnBqNcX49iAACZhwYkxTue62HbLoSzaMT837eRzkkMpso/Gsm4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=ABsb7Wpp; arc=fail smtp.client-ip=52.101.65.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="ABsb7Wpp" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Sy1fY0mV5IkL0hjFnf5b+vj78BFAshon+wYLGzW7AKceSs0Dpn1g/DBGURyUI3GA2tkM9rNKLQ49OS/PLMlFBdiYX53trN3g3ttEXmPNNbZHi0CSgboNCRRM/hEZwFco3a2AZgLbmRMy+m8dLJemncEhqlPqMOS5PU34sF6fsK0fM/AOqOEm7/OSvz9xLIsc3vncJdKhh19hssd8Jzrcx20oL5TqAVOADKsIWHU2tEVMuXtgUeObGm1E6JuKYqaho6m6qz7Eek0Y9ahpwU0fBGaIRvitRfTa0uQ/8ETruC2k2TkfZ5VIwndbpj8gTGH4NUc8XDOcdPF00guEvIDh6g== 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=TftWA8QiFjcxFTiAZIUHp8fuMFU4sRhI5CTTkhEzq2c=; b=Qc4PSrD1li+qX+I+Ct6L1/YTT3rcyoQCaMUD9w64KT9kFHCrKmqCV4a7wspnBBIDHii+ePlCr7jbq20QjhN/Mwo4aGvJqwGPdCXk2lsoyQFQTkD3J6AGd7FngMJLITcCwOx6yiCz+nW67/OSJ0BZhGUN6vrnbbvVWyCeNDdpQDEJoh3/DHf8nOBAQcguICmXeMe+Co1rBcjHvW6TIe59UxKm4Zfz5Q/5jUkp2z/neXzLumoQkIgfsICYTewsPxONZmS0INxZbEwa/Tbv67xAjLkJ4f6CMGHjUVBAj95SgKEF6rqwKx739r4PpbX2rNDUZPEJC6QtSwwnXt0CQhx+iw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TftWA8QiFjcxFTiAZIUHp8fuMFU4sRhI5CTTkhEzq2c=; b=ABsb7WppZ7+p2ToMEyZyXKbUltbd1YlTmpCb3OoWjLdnL9fXey7vCatkSz+NtCiVGVsVJKOXzJou+AlVZtBbUTeKPuY7Bxv3S3V0HRh2EXuf42WAULRxAsRIFQsxtxXA9Iv60JPXp8WNH/L8yTjwWyB8BBPAUxC7Unr4DhWqrlM= Received: from AM0P309CA0012.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::19) by AS8PR02MB7077.eurprd02.prod.outlook.com (2603:10a6:20b:2ef::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 19:35:09 +0000 Received: from AMS0EPF00000198.eurprd05.prod.outlook.com (2603:10a6:20b:28f:cafe::4d) by AM0P309CA0012.outlook.office365.com (2603:10a6:20b:28f::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.1 via Frontend Transport; Tue, 1 Sep 2026 19:35:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:35:09 +0000 Received: from pc67007-2609 (10.4.0.13) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 21:35:08 +0200 From: Waqar Hameed To: Sebastian Reichel CC: , , Subject: [PATCH v2 1/8] power: supply: Pack power_supply_desc to eliminate holes In-Reply-To: References: User-Agent: a.out Message-ID: <5b6d1d588c8aaf237c45638c29a2ff23f0a07f34.1788290289.git.waqar.hameed@axis.com> Date: Tue, 1 Sep 2026 21:35:07 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail11w.axis.com (10.20.40.11) To se-mail10w.axis.com (10.20.40.10) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF00000198:EE_|AS8PR02MB7077:EE_ X-MS-Office365-Filtering-Correlation-Id: e2ff6def-88f4-4063-15da-08df0860222d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|36860700016|82310400026|1800799024|10067099003|11063799006|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: YhcVAEpIghWTixBGBAI/Jj3onhSwEU4NvsxWpjSt5y9gJSdmb3HAMERWzMWHVejt9Y8GJiHyLaMPLAAErjm7Q0b8Lr5OVH+Tp/pA/awShXeOb2wlYbmtfrrUpORTdR3FLrDbEUg/jQRLv3l8+N5COh6e65PkYdkHV1USZqEJDXgY2UldFa0sqIWPuSYuFUMH6w4/j/TKQubrgZJ3YKuTt6KWYbzeLY6wwybMNvIbiBsx/L6iS0og6ob6/nA/LBCFSmSmklap6QZcdBuozFnZZi+Bh33NaenExiSrvhYAHRQ8pAQmIMkKBWY5d8U0ZxhE0BMauIDLdVKBr4v3C44yK0u4dLtsfaDB5XSllha2l8SdFTJ6uRFq3IzSnq1ti81N6Zq0m9PRYF5xjMb2BXhBXazsnmBxMapIirIB1zUboZBx65SvuT9IreETRqneIYMtYyPOlzF0OtDMI5ft2xUqqWGuqeq8sHmqudpUJAqVxLQvcHm2yFxvdk8vdIkR5y8xvtKx/CsFF+YQfzD721Mk01C+1bsGC6buGdT7LDBtEOvlAEvb1QnN7XLWAkmYGbrboeVTzjZobi77CuE9KCqEfHtnkXl3OgfYPM1DX0Kv8nY17XFy2OmHp5yQHMrY+27pihvx/kGnW85qfQd8eM1bzUopXjADNJCZScjRTJacH30bfLHrRzUf8vyrfHFtfLCnVPt+6Z0HMx1FA/3S53Tvzw== X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(23010399003)(36860700016)(82310400026)(1800799024)(10067099003)(11063799006)(18002099003)(22082099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6LAPP1X3H1+pXi6u8Foe+cnh3ZLo7T8vp5f5UWcpVNuJUzQh8zGZ3xvwrIeRx5GmqhmueYaHB97nYIc09H5qLxiSi1o6mIOO4eUUzFqAWAleAYvbMe5FN6zhoemh/njYEpKG3GELJKgSK1POzRQhRK9PPrFGJiaw0l5MoNfuzLgt2t9E5bVBsxlx6+fT0yF2SLmtt0PGL654eUbJtG3pejCb/a5V0HpCzNgxJwOSbLfdBgU/jGh8Cn/OGZ/TbebaKmOJ6nJ7B3q4Ob6L0zpuTzclFYVkDvhVng3XI9BBljHLfi4HAr8qMRKaItuApn+e4iddLN1b80RH5ieKzlrkfJHedYfVidSnxLx5tHKlKMqE7fr5yUvdnLcQ64MiFxX5xHjDoqiuSuxjr3Xdxk7sYJiYIpMklNPXU8d8VSCyd5q+g2qNmBh+VneSLEULEW7X X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:35:09.2776 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e2ff6def-88f4-4063-15da-08df0860222d X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000198.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR02MB7077 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" `pahole` reports that there are two holes in `struct power_supply_desc`: struct power_supply_desc { const char * name; /* 0 4 */ enum power_supply_type type; /* 4 4 */ u8 charge_behaviours; /* 8 1 */ /* XXX 3 bytes hole, try to pack */ u32 charge_types; /* 12 4 */ u32 usb_types; /* 16 4 */ const enum power_supply_property * properties; /* 20 4 */ size_t num_properties; /* 24 4 */ int (*get_property)(...); /* 28 4 */ int (*set_property)(...); /* 32 4 */ int (*property_is_writeable)(...); /* = 36 4 */ void (*external_power_changed)(...); /* = 40 4 */ int (*init)(struct power_supply *); /* = 44 4 */ bool no_thermal; /* 48 1 */ /* XXX 3 bytes hole, try to pack */ int use_for_apm; /* 52 4 */ /* size: 56, cachelines: 1, members: 14 */ /* sum members: 50, holes: 2, sum holes: 6 */ /* last cacheline: 56 bytes */ }; This can be optimized by moving `u8 charge_behaviours` to the end and swapping `int use_for_apm` with `bool no_thermal`: struct power_supply_desc { const char * name; /* 0 4 */ enum power_supply_type type; /* 4 4 */ u32 charge_types; /* 8 4 */ u32 usb_types; /* 12 4 */ const enum power_supply_property * properties; /* 16 4 */ size_t num_properties; /* 20 4 */ int (*get_property)(...); /* 24 4 */ int (*set_property)(...); /* 28 4 */ int (*property_is_writeable)(...); /* = 32 4 */ void (*external_power_changed)(...); /* = 36 4 */ int (*init)(struct power_supply *); /* = 40 4 */ int use_for_apm; /* 44 4 */ bool no_thermal; /* 48 1 */ u8 charge_behaviours; /* 49 1 */ /* size: 52, cachelines: 1, members: 14 */ /* padding: 2 */ /* last cacheline: 52 bytes */ }; Do this in order to save 4 bytes. This will also help when adding new members in the future to this `struct`. Signed-off-by: Waqar Hameed --- include/linux/power_supply.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index e749d21893352..fcd05f4a88833 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -259,7 +259,6 @@ struct power_supply_config { struct power_supply_desc { const char *name; enum power_supply_type type; - u8 charge_behaviours; u32 charge_types; u32 usb_types; const enum power_supply_property *properties; @@ -295,14 +294,17 @@ struct power_supply_desc { */ int (*init)(struct power_supply *psy); =20 + /* For APM emulation, think legacy userspace. */ + int use_for_apm; + /* * Set if thermal zone should not be created for this power supply. * For example for virtual supplies forwarding calls to actual * sensors or other supplies. */ bool no_thermal; - /* For APM emulation, think legacy userspace. */ - int use_for_apm; + + u8 charge_behaviours; }; =20 struct power_supply_ext { --=20 2.43.0 From nobody Sat Sep 26 11:46:39 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013047.outbound.protection.outlook.com [40.107.162.47]) (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 037893AD52F; Tue, 1 Sep 2026 19:35:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291319; cv=fail; b=Vg7YQMDz+SQYrGu5h/ypytRAv0F016dGYUdbknlnPBn7V+fSG5YGakEA5unHwhhH6ZAjl9m7Y4klpSrPuSqX4nbQCWCqWS9sOFynN0xgBb/Q3GgKn2SH9kmsNqbPA3dSvso3iU3Gg6JgQLkje5bl0MYEi3PtiqZRIe+cs5YoefA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291319; c=relaxed/simple; bh=IWwpAXcN35768jxv8+620KOWq8693rXAtqcZTy8OCwQ=; h=From:To:CC:Subject:In-Reply-To:References:Message-ID:Date: MIME-Version:Content-Type; b=IkLTipTbN0E9cIGfEfFVIm8upVQuOs3mnaLUeqotgN0j2ihgolRBZiz1C62Woj24Px/f1QJlhUCQH1CH0TUumeVKQt5lFEn2zNtvrf0SSPj8Rl4h1TDigzt7KiSE6nv/wy5xGdQsKeH/eaq9BC47wT2e3LRpRttTToj7kbDgRvg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=Yj7mFI2I; arc=fail smtp.client-ip=40.107.162.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="Yj7mFI2I" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HS8kL1NRz4kHt6kXPX7HxC/bJzLkId7t23ezdagVDtV2GuvbvZXTx9WwCX1cBNwNmt+zsSY88gdllPnbUuV8RAhTqsZJHf77Nx7K59dbxcm5E1yBkw+CCtxroIsWlFLMAJL2SHiyUlrZeMHTBSYllUfqAGZ858xfWFyo8QyhsM4Q27ye6PQpLv935TIlcEWNf6ZEBgh7sNrwL4U16VXIpK9gXtQAxrYxoaZWmXTU1ZdJPPldlTa9KwsN2lB0W+RgJDPD/NsIUpHem8zhpUk89QUKd3jjUl8TzkSRdaAV3uCIggosUWAlaAo2ND8OoquHXeFeqVaNoWwvbtTMDqFEAw== 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=3auX8yZcFl09pPamyNmWrviWbpPUz7wY9K3Wgy2Z3hg=; b=n/QpbKKRGtbJphUzyl0In9X8nlV+JZ1ob8olJVdl8BjqpJYapvx2rgEBZ6dnVXzjSntFwO0QvjDz879ebIejL+FgCAiopvw4fJXlo9iY/3KMSv6w/Q20bi2MPmbgN86T2eyi0ghA04gRRvyniNo7eXkDlqyLXhxpi6afT6Ttl4t07rvds9DSiikjP5KHM+PTd4pSGV3nOpZCBVVmsnZgxCNFSYc+usqOwh3r8CuDEOlCl6ZacGw+PoKBX8E8/F4WUZruIc8q2qYCpOdaEhJBsdB6E6JAo5UEpdjwyBLLixSbgvazq4dvwazAQ7u051qyUZGqGW4yWVUS29vw4ULyqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3auX8yZcFl09pPamyNmWrviWbpPUz7wY9K3Wgy2Z3hg=; b=Yj7mFI2IPH9GoT578HoJmx+1pBxLp6hfh3kh4+BqMC9pSV2NtTHloxjOBaaiXNCh+ahFPu/cjXYIxv2wIa8ST3DrHi+786g97sXvj4v7tEk6yJLrEKPitq8s945bjFjHcI2bkUCcJBypxmtcQrliQ2kJPLST9fdTpLlCTOwt2mw= Received: from AM0P309CA0013.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::34) by AM7PR02MB6401.eurprd02.prod.outlook.com (2603:10a6:20b:1b2::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 19:35:09 +0000 Received: from AMS0EPF00000198.eurprd05.prod.outlook.com (2603:10a6:20b:28f:cafe::6b) by AM0P309CA0013.outlook.office365.com (2603:10a6:20b:28f::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 19:35:09 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:35:09 +0000 Received: from pc67007-2609 (10.4.0.13) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 21:35:08 +0200 From: Waqar Hameed To: Sebastian Reichel CC: , , Subject: [PATCH v2 2/8] power: supply: Add sysfs entry for system load control In-Reply-To: References: User-Agent: a.out Message-ID: Date: Tue, 1 Sep 2026 21:35:08 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail10w.axis.com (10.20.40.10) To se-mail10w.axis.com (10.20.40.10) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF00000198:EE_|AM7PR02MB6401:EE_ X-MS-Office365-Filtering-Correlation-Id: d7e5d682-d0b5-4612-1a1f-08df0860226f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|23010399003|376014|36860700016|18002099003|22082099003|56012099006|6133799003|10067099003|11063799006; X-Microsoft-Antispam-Message-Info: IhXgifDikq2+2Aqs+0qaaBOKcdCDqLR5UuhNRc8P+KvRftfR2tESNDRccvGU8oZvLRLH3rDAfm8hT3gDHwvz05S73had0eri6zPRFKwk2DN6qVYoL+veAqNwnvQQkOw5QgcNTYATqgR8btt/OvLR5z8mqaxJxo+1QK+0X3w/qM0IQewfvBMGUUf4Pwrc6nSubCBvNJDYIBZfoE1r3AlXdMeWKlEvmSQ1GrGwi9tenKmGHNioGowalgt3MDFWVwxJsRz5xAsmlNQ1PaUpLrp21b2V+cj+ddvQ5LkHlE9kleabxYaZQgrLk8dbqf+rUT+YlVdgYDmXlfOQIDTj58GsC/f/SrhnPwluYyXoXz/ZFnvDT4pk+ziSRHPpY4rmD+sYDIwrftoZbDMpMnCXS9mr7WlooRaFoPa9HcLsYBZQ+LH8CPACeAwS6vdtffh2AcQ+Ckq45U4/p59JM4LfS4alP6guNDRnyR4smZ22UCX4Fm9dvHMpfxIrPVh0GN9nl8Ek1TAvdY5MpQRHLirD+irTJBNk5RHeFL0lg31zfk2US02p6TF+ima8LTKxReH6owxigKpaHW2LULWa+9uNuk4VtPKcfGGEAg/gOLMNoBVdx+C4pZzlmnX593pDB1NvgxbEBM3zKgVohrZQleIdFnvc1/y/es5GjBSU/DBc139JsMs3cvwTf0r9vvj7J9+NwKDLaMe4uizhFiuSKJTM8dQ7PA== X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(1800799024)(23010399003)(376014)(36860700016)(18002099003)(22082099003)(56012099006)(6133799003)(10067099003)(11063799006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: i8aXKliO+nEcoYn0i7+1iIE3K5/fpYwsoWgbDr5rhHbrQnsXWXw5YyZPP+IZNLEIw+7k4aJW+FxhRR9lPJrj+FRg74LCCmYNNYJu2XNPgl2w1AwmSB5hF4TYXZxzh5YYtyhpqQvCcL9TlY2JPgazRCZfnWl/cfwSLJ+vkAOWlzoLnDwEKtA8uCsL/Qq0KLvoFXEvO1o0CqPhgbn1lnBlXONbg/ny/xHIWAP8KHOpFr6tTw0HNFfrLIqXZetxLiR1ZpU0ubxFTSsay5cQ4RE0nqRIM9iowQQmxqw+lmNdRuFoutxCwg3zRmQGN4e2ObxMg8W4/eamg0M7ha1w1X/2Z5QS6sDTJl0jMRg1TCC+5lu1I5VgpPgbGV0Ib0ebZtFCt6sRFGWBaq2IQQ9Jn0n+xGZJcGBOxC/acFVYQO3aiva6ogQFH1jDxNW50e2Hs8HI X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:35:09.7086 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d7e5d682-d0b5-4612-1a1f-08df0860226f X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000198.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR02MB6401 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" There are devices that can control the connection from power to system load. For example, with a field-effect transistor between a battery and the system load (BATFET). Drivers for these devices are currently enrolling their own custom `sysfs` property to control this. In order to unify this, add a new `sysfs` entry for controlling such switch and corresponding `power_supply_property` with `enum` values. The obvious states are "on" and "off", i.e. there is a connection or not, respectively. However, many devices can also enter special modes such as "low-power", "shipping" or "deep sleep". Since the members in `struct power_supply_desc` already are ordered, adding `load_switches` only increases the size with 4 bytes, as can be seen from `pahole`: struct power_supply_desc { const char * name; /* 0 4 */ enum power_supply_type type; /* 4 4 */ u32 charge_types; /* 8 4 */ u32 usb_types; /* 12 4 */ u32 load_switches; /* 16 4 */ const enum power_supply_property * properties; /* 20 4 */ size_t num_properties; /* 24 4 */ int (*get_property)(...); /* 28 4 */ int (*set_property)(...); /* 32 4 */ int (*property_is_writeable)(...); /* = 36 4 */ void (*external_power_changed)(...); /* = 40 4 */ int (*init)(struct power_supply *); /* = 44 4 */ int use_for_apm; /* 48 4 */ bool no_thermal; /* 52 1 */ u8 charge_behaviours; /* 53 1 */ /* size: 56, cachelines: 1, members: 15 */ /* padding: 2 */ /* last cacheline: 56 bytes */ }; Signed-off-by: Waqar Hameed --- Documentation/ABI/testing/sysfs-class-power | 25 +++++++++++++++++++++ drivers/power/supply/power_supply_sysfs.c | 17 ++++++++++++++ include/linux/power_supply.h | 10 +++++++++ 3 files changed, 52 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/AB= I/testing/sysfs-class-power index 5641f1fd5fd6f..93f2398125d88 100644 --- a/Documentation/ABI/testing/sysfs-class-power +++ b/Documentation/ABI/testing/sysfs-class-power @@ -590,6 +590,31 @@ Description: =20 Valid values: 0 - 100 (percent) =20 +What: /sys/class/power_supply//load_switch +Date: June 2026 +Contact: linux-pm@vger.kernel.org +Description: + Devices can control the connection from power to system load. + For example, with a field-effect transistor between a battery + and the system load (BATFET). This entry controls such switch. + The obvious states are "on" and "off", i.e. there is a + connection or not, respectively. However, many devices can also + enter special modes such as "low-power", "shipping" or "deep + sleep". In these modes the switch is usually off and the + quiescent current quite low. + + Access: Read, Write + + Valid values: + + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + "Unknown" (0) Unknown mode. + "On" (1) Power is connected to the load. + "Off" (2) Power is disconnected to the load. + "Standby" (3) Low-power mode. + "Ship" (4) Ship mode. + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + **USB Properties** =20 What: /sys/class/power_supply//input_current_limit diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supp= ly/power_supply_sysfs.c index 9d6b24856c8b0..b0f524d152cf6 100644 --- a/drivers/power/supply/power_supply_sysfs.c +++ b/drivers/power/supply/power_supply_sysfs.c @@ -152,6 +152,14 @@ static const char * const POWER_SUPPLY_CHARGE_BEHAVIOU= R_TEXT[] =3D { [POWER_SUPPLY_CHARGE_BEHAVIOUR_FORCE_DISCHARGE] =3D "force-discharge", }; =20 +static const char *const POWER_SUPPLY_LOAD_SWITCH_TEXT[] =3D { + [POWER_SUPPLY_LOAD_SWITCH_UNKNOWN] =3D "Unknown", + [POWER_SUPPLY_LOAD_SWITCH_ON] =3D "On", + [POWER_SUPPLY_LOAD_SWITCH_OFF] =3D "Off", + [POWER_SUPPLY_LOAD_SWITCH_STANDBY] =3D "Standby", + [POWER_SUPPLY_LOAD_SWITCH_SHIP] =3D "Ship", +}; + static struct power_supply_attr power_supply_attrs[] __ro_after_init =3D { /* Properties of type `int' */ POWER_SUPPLY_ENUM_ATTR(STATUS), @@ -231,6 +239,7 @@ static struct power_supply_attr power_supply_attrs[] __= ro_after_init =3D { POWER_SUPPLY_ATTR(MANUFACTURE_DAY), POWER_SUPPLY_ATTR(INTERNAL_RESISTANCE), POWER_SUPPLY_ATTR(STATE_OF_HEALTH), + POWER_SUPPLY_ENUM_ATTR(LOAD_SWITCH), /* Properties of type `const char *' */ POWER_SUPPLY_ATTR(MODEL_NAME), POWER_SUPPLY_ATTR(MANUFACTURER), @@ -400,6 +409,14 @@ static ssize_t power_supply_format_property(struct dev= ice *dev, ret =3D power_supply_show_charge_types(dev, psy, value.intval, buf); break; + case POWER_SUPPLY_PROP_LOAD_SWITCH: + if (uevent) /* no possible values in uevents */ + goto default_format; + ret =3D power_supply_show_enum_with_available( + dev, POWER_SUPPLY_LOAD_SWITCH_TEXT, + ARRAY_SIZE(POWER_SUPPLY_LOAD_SWITCH_TEXT), + psy->desc->load_switches, value.intval, buf); + break; case POWER_SUPPLY_PROP_MODEL_NAME ... POWER_SUPPLY_PROP_SERIAL_NUMBER: ret =3D sysfs_emit(buf, "%s\n", value.strval); break; diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index fcd05f4a88833..f6cbeffda6534 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -104,6 +104,14 @@ enum { POWER_SUPPLY_SCOPE_DEVICE, }; =20 +enum { + POWER_SUPPLY_LOAD_SWITCH_UNKNOWN =3D 0, + POWER_SUPPLY_LOAD_SWITCH_ON, + POWER_SUPPLY_LOAD_SWITCH_OFF, + POWER_SUPPLY_LOAD_SWITCH_STANDBY, + POWER_SUPPLY_LOAD_SWITCH_SHIP, +}; + enum power_supply_property { /* Properties of type `int' */ POWER_SUPPLY_PROP_STATUS =3D 0, @@ -182,6 +190,7 @@ enum power_supply_property { POWER_SUPPLY_PROP_MANUFACTURE_DAY, POWER_SUPPLY_PROP_INTERNAL_RESISTANCE, POWER_SUPPLY_PROP_STATE_OF_HEALTH, + POWER_SUPPLY_PROP_LOAD_SWITCH, /* Properties of type `const char *' */ POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, @@ -261,6 +270,7 @@ struct power_supply_desc { enum power_supply_type type; u32 charge_types; u32 usb_types; + u32 load_switches; const enum power_supply_property *properties; size_t num_properties; =20 --=20 2.43.0 From nobody Sat Sep 26 11:46:39 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011019.outbound.protection.outlook.com [52.101.65.19]) (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 F1FA83AA4F2; Tue, 1 Sep 2026 19:35:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.19 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291319; cv=fail; b=iGf+w6nRx2kpMSQbqPqT5rK4oEZ7//0dz/o2ds4qtuKQvvHaJVs3ldd/OgqaGvWGcu3zwSjyPU+WT7Y7awkeegAUTOrQzbH4M7qR+mFtvc5kC+TAHcJmhLrciqCsyOSLpaIwCli+tLADTaqPKWP/drmiKIHdW39TltULr+5t9P4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291319; c=relaxed/simple; bh=1BGOXdCN3lM3H+7KZwOMtvaQYpuLpMmkgQlDYKC2sIo=; h=From:To:CC:Subject:In-Reply-To:References:Message-ID:Date: MIME-Version:Content-Type; b=QnRjQ+P9kEzWtH68fdBWkjIsgeeKKgBDuj+lui2LwOzFox2LIo3WTSP1V/pDJIZ36bIqoFCo+J/2LgJKfq+F/BhYvHwCRmuOiKOKZZYY5PghdNYAcBHAZaE2+UGnXp0W9YwLM+iM3Olgmiwr/v7b5rFlEDvmMeNW4zkwPz/UemM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=BLUO1Vz8; arc=fail smtp.client-ip=52.101.65.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="BLUO1Vz8" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V9reOmPumqQy3gPEDscvEf2rCHjRjdYdwIOsPT8U8ZtetFsy7j1Uiw0n8s9cX4p7atPlTrA7J5Rpc+yCWfzuOW5l7W2OckcoHSrjX2AiAW/xMUtV2gq7c9VWUkb+4pClcUrVgAnR6JcVnd6MPL4snw99DzdxrGrz7HIGKaJheTKAvrclD0rtZjV7Do5Xz377xtfqZmS7o6TMGWpSerywPUXUAlQPAkaIuZND/42q8rHGTkoMKs9O0vyLLVw2csIAkt/41UaBSMaDIncUym+Pc3rzMiLQmXWf3XWWK6HBdQ5ibmFhZCQMF6IBYNvHcVP6d/YDn6mOaoHSSJejgJrT7A== 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=hsYbSKXBWLviDYIMxIGUYL8L2s2SWt8Yj9ajayuL0A8=; b=KOAdkjNJ2IlWxQwSd5bEojyTX/+4F/tye50NuB3tEUACdRlIAtZq185UtWBvG3XCDJHlPMX3jV53Zb30lS/fBJhm3grKure+BEI3b37NQRJlOiKQMDBUsbxsrD4s3csqZOBUBYlLnBzgrWrynWX2J+P2lMriBycy1gCIu8q+4mkXI4fUS6dRjrAAQakA3lWzjHim2bz28TlPrOKkpzWA8OPjfb1vH71i0CHcyol1fkEHzhl007x0+Gf96yhTJeCgYetZ9DKDiAwFPWt31+nJ/OUnq+C9LxJwd6G683FHyHgUWi7otOOivq5ToWhxgB/il0ro9EXvwsh4mZJ9m1AhKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hsYbSKXBWLviDYIMxIGUYL8L2s2SWt8Yj9ajayuL0A8=; b=BLUO1Vz8+SdMYl/PPYNP6kfrouGqOAfhARoIswJhnkv9+QqY7Jj8NLI7VMASKaPVsslcE8vXif1LaoGdPv/psnnFNaKHg/z/okWmFBHStzfc9bYxy4KM5l1w2gF1tfPfz5etEvBKSgowypwc+G/LAPYherEyuBU5FCuvDNn0858= Received: from AM0P309CA0012.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::19) by AS8PR02MB10361.eurprd02.prod.outlook.com (2603:10a6:20b:56d::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Tue, 1 Sep 2026 19:35:10 +0000 Received: from AMS0EPF00000198.eurprd05.prod.outlook.com (2603:10a6:20b:28f:cafe::26) by AM0P309CA0012.outlook.office365.com (2603:10a6:20b:28f::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.1 via Frontend Transport; Tue, 1 Sep 2026 19:35:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:35:10 +0000 Received: from pc67007-2609 (10.4.0.13) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 21:35:08 +0200 From: Waqar Hameed To: Sebastian Reichel CC: , , Subject: [PATCH v2 3/8] power: supply: ltc4162-l: Use POWER_SUPPLY_PROP_LOAD_SWITCH In-Reply-To: References: User-Agent: a.out Message-ID: Date: Tue, 1 Sep 2026 21:35:08 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail11w.axis.com (10.20.40.11) To se-mail10w.axis.com (10.20.40.10) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF00000198:EE_|AS8PR02MB10361:EE_ X-MS-Office365-Filtering-Correlation-Id: 40d68f82-3997-4b79-84ed-08df086022c9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|82310400026|36860700016|1800799024|6133799003|56012099006|11063799006|10067099003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 05q8TzKZv/zICuGRv0LN5Nbl/Mlt0+S5ocexgsYHrm0xePD0hGY3H+BYcrgTfNQQKTbNX4oJ4FobWY+NImv5+qLyAc/LglCzOnM+t0XpYLUyKtEE1xZnF2XqQjVNpOArA/kQPVokjCC82xZVdAqVxlNWBbP64B9tcB+uHwovLSjG7cFiLqCNwsq5oFFPtcAFn14CjBYppE9rJNTerebdQtfAOqIJxYww4cc/kg4G9K/cVjKJRpCOFAnaZzjuocme28ObZRkJJSr7ZRC4whtJakvyylVX/YI5vS1pfS6O0ern+2KgU4GJJ4lMJCi0paVgyQyTq+L8Z77wTbzSy53k27Gj3kdmLP6KDWfZM4D79puKAJAwt7FpmrYDpq4ZjHd6G4iOVPxDXlvdFWpDJHtFCyOikEjT3bk5sg5U/EqgRLXfupFc0cLkG8FUcqXGu6MYY7eI35ju/jJMuTpZ0p6C1qmBYMm2w4MFM7RigoZLmlCtX09X0zE84x/wyq6M2Cq7CGfgh80w5CqadBmxrZ1IvFNmnq/+6dg4hnMosG6EOThmvPRsZvTDWPHhw53YVQBEvEqOJMAQpkS8VQgYTut6hevywX4U8RuHQ9DleQUYupkeye3Ew751TZSjwnJvzL+saxyzO+VTyNRJYIWQxvvVmBHfQ9xR7+laAsZhUiyl6mDWja1qn6MrFrivtfhY3dJ90nQS0QqmKz82Vt1o4N7UgA== X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(23010399003)(82310400026)(36860700016)(1800799024)(6133799003)(56012099006)(11063799006)(10067099003)(22082099003)(18002099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3vQ7WjOBfkYvKbAHPL/g/VtnGNCh62x+8TjoDnlfukaQ+ww1ndas7DerdE923ivXCphCmrCAdfnr6FJkfkwO7Agy0qEvfDFuNwVpq5gUbYDSH8S9lIgK4S2JvxUTHerBcrlFR6uUknpl6JMN+0JZK3SO+U222b5uxH0RS4wgxGN3ojnAWxBH9Hg1zMv5UBYo3SH3+yWMcEemjvYbP+66aU32tBSo+6bBY/j2uRemBYrJwop3YJS3KZ9X55YMtrHwtG6IskyWA92U2Cr7w9ekOVM3rVfSS39FSYvoLj+s267SiJGvJHiscpHxjsPDHq2UVmuAP2vGqgeGFbIunO0q5umIP7uXyrdC7D3yX57YdXJWN/xSK3c3jtopKw9L3XnoHvS9VOQ2vkaRJ9fwsgfer4c3E6S6TSiVUZiCFd7ny7S+LaO0F7UZD6YmKtdNNjEd X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:35:10.3037 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 40d68f82-3997-4b79-84ed-08df086022c9 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000198.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR02MB10361 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The framework supports controlling system load with `POWER_SUPPLY_PROP_LOAD_SWITCH`. Use this to select ship mode, but keep old custom `sysfs` ABI for backward compatibility. However, add a note in ABI documentation that one should prefer the property `load_switch` instead. Signed-off-by: Waqar Hameed --- .../ABI/testing/sysfs-class-power-ltc4162l | 2 + drivers/power/supply/ltc4162-l-charger.c | 56 +++++++++++++++++-- 2 files changed, 52 insertions(+), 6 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-class-power-ltc4162l b/Documen= tation/ABI/testing/sysfs-class-power-ltc4162l index ba30db93052bf..ad46ad834af05 100644 --- a/Documentation/ABI/testing/sysfs-class-power-ltc4162l +++ b/Documentation/ABI/testing/sysfs-class-power-ltc4162l @@ -77,6 +77,8 @@ Description: The ship mode, when armed, activates once the input voltage drops below 1V. =20 + Note: use /sys/class/power_supply/ltc4162-l/load_switch instead. + Access: Read, Write =20 Valid values: 0 (disable) or 1 (enable) diff --git a/drivers/power/supply/ltc4162-l-charger.c b/drivers/power/suppl= y/ltc4162-l-charger.c index 5c09e0368e6f0..01b0511da9aee 100644 --- a/drivers/power/supply/ltc4162-l-charger.c +++ b/drivers/power/supply/ltc4162-l-charger.c @@ -755,6 +755,41 @@ static int ltc4162l_set_term_current(struct ltc4162l_i= nfo *info, BIT(2), BIT(2)); } =20 +static int ltc4162l_get_ship_mode(struct ltc4162l_info *info, + union power_supply_propval *val) +{ + unsigned int regval; + int ret; + + ret =3D regmap_read(info->regmap, LTC4162L_ARM_SHIP_MODE, ®val); + if (ret < 0) + return ret; + + val->intval =3D regval =3D=3D LTC4162L_ARM_SHIP_MODE_MAGIC ? + POWER_SUPPLY_LOAD_SWITCH_SHIP : + POWER_SUPPLY_LOAD_SWITCH_ON; + + return 0; +} + +static int ltc4162l_set_ship_mode(struct ltc4162l_info *info, int value) +{ + unsigned int regval; + + switch (value) { + case POWER_SUPPLY_LOAD_SWITCH_ON: + regval =3D 0; + break; + case POWER_SUPPLY_LOAD_SWITCH_SHIP: + regval =3D LTC4162L_ARM_SHIP_MODE_MAGIC; + break; + default: + return -EINVAL; + } + + return regmap_write(info->regmap, LTC4162L_ARM_SHIP_MODE, regval); +} + /* Custom properties */ static const char * const ltc4162l_charge_status_name[] =3D { "ilim_reg_active", /* 32 */ @@ -890,15 +925,15 @@ static ssize_t arm_ship_mode_show(struct device *dev, { struct power_supply *psy =3D to_power_supply(dev); struct ltc4162l_info *info =3D power_supply_get_drvdata(psy); - unsigned int regval; + union power_supply_propval val; int ret; =20 - ret =3D regmap_read(info->regmap, LTC4162L_ARM_SHIP_MODE, ®val); - if (ret) + ret =3D ltc4162l_get_ship_mode(info, &val); + if (ret < 0) return ret; =20 return sysfs_emit(buf, "%u\n", - regval =3D=3D LTC4162L_ARM_SHIP_MODE_MAGIC ? 1 : 0); + val.intval =3D=3D POWER_SUPPLY_LOAD_SWITCH_SHIP ? 1 : 0); } =20 static ssize_t arm_ship_mode_store(struct device *dev, @@ -915,8 +950,9 @@ static ssize_t arm_ship_mode_store(struct device *dev, if (ret < 0) return ret; =20 - ret =3D regmap_write(info->regmap, LTC4162L_ARM_SHIP_MODE, - value ? LTC4162L_ARM_SHIP_MODE_MAGIC : 0); + ret =3D ltc4162l_set_ship_mode(info, + value ? POWER_SUPPLY_LOAD_SWITCH_SHIP : + POWER_SUPPLY_LOAD_SWITCH_ON); if (ret < 0) return ret; =20 @@ -981,6 +1017,8 @@ static int ltc4162l_get_property(struct power_supply *= psy, return chip_info->get_die_temp(info, val); case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: return ltc4162l_get_term_current(info, val); + case POWER_SUPPLY_PROP_LOAD_SWITCH: + return ltc4162l_get_ship_mode(info, val); default: return -EINVAL; } @@ -1003,6 +1041,8 @@ static int ltc4162l_set_property(struct power_supply = *psy, return ltc4162l_set_iin_limit(info, val->intval); case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: return ltc4162l_set_term_current(info, val->intval); + case POWER_SUPPLY_PROP_LOAD_SWITCH: + return ltc4162l_set_ship_mode(info, val->intval); default: return -EINVAL; } @@ -1016,6 +1056,7 @@ static int ltc4162l_property_is_writeable(struct powe= r_supply *psy, case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX: case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: + case POWER_SUPPLY_PROP_LOAD_SWITCH: return 1; default: return 0; @@ -1037,10 +1078,13 @@ static enum power_supply_property ltc4162l_properti= es[] =3D { POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, POWER_SUPPLY_PROP_TEMP, POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT, + POWER_SUPPLY_PROP_LOAD_SWITCH, }; =20 static const struct power_supply_desc ltc4162l_desc =3D { .type =3D POWER_SUPPLY_TYPE_MAINS, + .load_switches =3D BIT(POWER_SUPPLY_LOAD_SWITCH_ON) | + BIT(POWER_SUPPLY_LOAD_SWITCH_SHIP), .properties =3D ltc4162l_properties, .num_properties =3D ARRAY_SIZE(ltc4162l_properties), .get_property =3D ltc4162l_get_property, --=20 2.43.0 From nobody Sat Sep 26 11:46:39 2026 Received: from OSPPR02CU001.outbound.protection.outlook.com (mail-norwayeastazon11013002.outbound.protection.outlook.com [40.107.159.2]) (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 7E4543AE6FC; Tue, 1 Sep 2026 19:35:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.159.2 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291319; cv=fail; b=F4VxgQeDJPDqGaTdTk8S9YvZajDfBnkQrt3ysoF0OD7Gkz+jf1+1iGHCOUe3PMNVl7KtlP1i52gkMMPawwcdAeziBg5/YQYOC0NaQfDBy1RngTXyaW/Es6IQpMu4wbHADEmzObulbDmQwd+leZfdkLw4uarggEf7VOyeFKlPQTM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291319; c=relaxed/simple; bh=FzNIehgfoBKpg+Fnn5gqeBX+pVVkdG+wkQgyCYHzwy0=; h=From:To:CC:Subject:In-Reply-To:References:Message-ID:Date: MIME-Version:Content-Type; b=Qtzz7iLTxr5fcFdaJwqpRVjitst2ocAL3m++Tpz4wWwo0PAKdsTKwl9Bgwr4U46N1+OIrYphA1ey2rRg3/AsCsD26JiDurKDd22W6nbL2N5GBpB9sfRllPklZQo7MxHMkaVoSVXQp9n6bmMuMt3n6nDaGzwPqpJaiiduAlFL64U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=n2CvcZRC; arc=fail smtp.client-ip=40.107.159.2 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="n2CvcZRC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=brXhBnhH0Jl0+TqVa07INPCNPj++OV6F4LA7h7hnkFLX96XWo289U+/u2OoAE8kefNaXwlXhG5lsr0AHGOkpZapTAYoIHgH6QQz8Ro8tzqUmEVRtaLF2/xNFfLXPVg/qHwwuukyEA2ASII9hG9xVfnuM3BVJjq5npY7dDLgwa5Sn6jm0b77h3dsX8fl/kS2GqctjpSXjxf6M7jIpl8tfFsYFRJqL+a8+7r7p8LoHvxBwDJAJBOxQ9jFZ9JS1QnrqDiwZE6dx76I2X6RUb4M3mXI3Bhp8xVOOuVt1dSMcm0/PQRLE42W3FCNeO3eWj9sr5/8gBAVjtBOQLFsltkeYVA== 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=K+2ty1SQpH0wAVzV/rsGR53VXBNQrr+lGHbTdnlljIM=; b=qgbZfsId2C+78fnzV2LJyhNx/k+ELdflGnWZn+uh+r6G4SKPofPFKbTBk//RlA+VH2z8wfFRp9WLuL7NBkbgMxyEiJQSI0Q7K1maAKdzZ8n1WChVIUBaWKVnn0R116eLLr8bTSBTuomRSkrNLDaPM8myHb0kuiyNbVcU0D8uGBOlDVJsvQcWDxOyWLPkf6YRLcae+IuU/iwRB6299R/b/fY8JLVtoX+F9sETKG7m2HNTseoon10ZTDuYvPzvz3TuWDxxAxovRsx41hG+FTSEFppyh3HSbqdxtXx4tpMi87SblSO7wQ8/KKTGHNgPQmu8wrT+gXV3O0F9YsgeYs0/Ew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K+2ty1SQpH0wAVzV/rsGR53VXBNQrr+lGHbTdnlljIM=; b=n2CvcZRCGJuHIHklB/wonIPDaIFMfBgM11+VYAGg4cwMDAcrduJ63+9UyEJIkfKRD7cgOXtF0SIP6o5SjTCuVgXvj2a4URwaxnrDG3yVn03Ej/dZiBZtDjKIMYUinIgpENwzP3LWVk1y3b533mqACXKVQbnjmjQcaoXpIQYlHm0= Received: from AM0P309CA0008.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::8) by DU2PR02MB10282.eurprd02.prod.outlook.com (2603:10a6:10:49a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 19:35:12 +0000 Received: from AMS0EPF00000198.eurprd05.prod.outlook.com (2603:10a6:20b:28f:cafe::9b) by AM0P309CA0008.outlook.office365.com (2603:10a6:20b:28f::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 19:35:12 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:35:12 +0000 Received: from pc67007-2609 (10.4.0.13) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 21:35:09 +0200 From: Waqar Hameed To: Sebastian Reichel CC: , , Subject: [PATCH v2 4/8] power: supply: rt9471: Use POWER_SUPPLY_PROP_LOAD_SWITCH In-Reply-To: References: User-Agent: a.out Message-ID: Date: Tue, 1 Sep 2026 21:35:09 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail10w.axis.com (10.20.40.10) To se-mail10w.axis.com (10.20.40.10) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF00000198:EE_|DU2PR02MB10282:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c442a9c-8c21-4c83-2a1b-08df0860241d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|18002099003|22082099003|11063799006|6133799003|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: xqtL/Kvw9PCRJbg7F4qYA1CvKRCLJy6aUXVG+tmI6UGnSfVVv7NusptSECu2ORdYXTx0uyQamEnzKdMxhCUTMIuf1oAPO8fyqB4AfKcuyI/dOEKVa9qSiGOt1/0Rc+aSmB767NJcvESyWYjMliJwFD3ETA9MHdnEUZ+wb/gPc/A/QysaKKqLDuGRRLzxkmmPOgIApXDG9zo++rfKCVNxQyv0bEqHzv80GtKfMMhahBAM4AudzuCiuyRNbomwVSRIbiNTYioAmWWAyUcO1NTz1/LC9zbF+E8QrT0/WhCZBWaX/22+82vr8i7J+ETJCnAI7OJ3R68HHl8H/BP4Dink/dfg4gtbP/ZXBHcUBBcXWR8FseOl09t1fmMk9B73iEBj42IQgcwAqgP2HDiai+lMn/cERvXcIi5ZxjzwAy/LGWcylCVdop9LttjBkUi2ProG97Kq4PmPtmG/kqSI/hNUIiD9XjyqayOZDwXBLrP5Mdy2ouI4HX/GEWKrOsa+IVbC0Jyz86vSi2EqQOisyIDdVlJA81eINHD/CmD8paiq+/2aQNfF9reqdBh0lpvxIUPLhMKX5Ri2xLaZvhnFg2VnWO28DElGHb5w9bB7ROJcGgGJHnUKaiACzeM/jYvEbBUpH3OSC5nqE8eyhuOp1ozL7r+8F1F8fZslPw07V52IMfLedIyhsP6L2w8wsgOqcM2P X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(376014)(23010399003)(1800799024)(18002099003)(22082099003)(11063799006)(6133799003)(10067099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: P1odPFfUoRU6uuN7tlSo5b9Os6X8EG6jGeWpyZUgYy8SFZrnc3bwtEJ+MOVPvDFxz8mYKI3OuSZaaGDhThJg0c6M/Uubd7g3FN6gwlZzNoxZBTDWn2yHvQ8bCb5+EIxbTn6D6E0TO+4bvE8l0EoztTux6wwRgbNQ2L4mpoWIYP12fzjicn9Zy4hfTDAd0q9szlRgMN3etMXZxF++TOP1liEzYjGG3MGB4MiYQreR8lNJkO2FYBFUwGVyzVanMdO4AYfOyTYkaj29WR2jZG4HtSUuOrpjWkKixBVmEhofYDc/EAPZ0/jNXjTOUgPT3CfZkEdkqgFMj4eWe8QElx2862EDdmfm6qadIM7xK0fhWzpV70O6t18WB9AYWSAB7ErmvMLGwcJeTSvV+sIxdoWA4ceK8tY/p4Q1BHFtSawtRo6yRGgcjWMcMrWLsxAtzXvV X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:35:12.5285 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2c442a9c-8c21-4c83-2a1b-08df0860241d X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000198.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR02MB10282 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The framework supports controlling system load with `POWER_SUPPLY_PROP_LOAD_SWITCH`. Use this to control the BATFET, but keep old custom `sysfs` ABI for backward compatibility. However, add a note in ABI documentation that one should prefer the property `load_switch` instead. Signed-off-by: Waqar Hameed --- .../ABI/testing/sysfs-class-power-rt9471 | 2 + drivers/power/supply/rt9471.c | 54 ++++++++++++++++--- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-class-power-rt9471 b/Documenta= tion/ABI/testing/sysfs-class-power-rt9471 index 0a390ee5ac21c..90cf94c1cbf6b 100644 --- a/Documentation/ABI/testing/sysfs-class-power-rt9471 +++ b/Documentation/ABI/testing/sysfs-class-power-rt9471 @@ -11,6 +11,8 @@ Description: mode. 'Disable' also can help to leave it, but it's more like to abort the action before the device really enter shipping mode. =20 + Note: use /sys/class/power_supply/rt9471-*/load_switch instead. + Access: Read, Write Valid values: - 1: enabled diff --git a/drivers/power/supply/rt9471.c b/drivers/power/supply/rt9471.c index b67f5abaa9938..b16d39a774dd4 100644 --- a/drivers/power/supply/rt9471.c +++ b/drivers/power/supply/rt9471.c @@ -265,6 +265,39 @@ static int rt9471_get_ieoc(struct rt9471_chip *chip, i= nt *microamp) return rt9471_get_value_by_field_range(chip, F_IEOC_CHG, RT9471_RANGE_IEO= C, microamp); } =20 +static int rt9471_set_batfet(struct rt9471_chip *chip, int val) +{ + unsigned int regval; + + switch (val) { + case POWER_SUPPLY_LOAD_SWITCH_ON: + regval =3D 0; + break; + case POWER_SUPPLY_LOAD_SWITCH_OFF: + regval =3D 1; + break; + default: + return -EINVAL; + } + + return regmap_field_write(chip->rm_fields[F_BATFET_DIS], regval); +} + +static int rt9471_get_batfet(struct rt9471_chip *chip, int *val) +{ + unsigned int regval; + int ret; + + ret =3D regmap_field_read(chip->rm_fields[F_BATFET_DIS], ®val); + if (ret < 0) + return ret; + + *val =3D regval ? POWER_SUPPLY_LOAD_SWITCH_OFF : + POWER_SUPPLY_LOAD_SWITCH_ON; + + return 0; +} + static int rt9471_get_status(struct rt9471_chip *chip, int *status) { unsigned int ic_stat; @@ -342,6 +375,7 @@ static enum power_supply_property rt9471_charger_proper= ties[] =3D { POWER_SUPPLY_PROP_USB_TYPE, POWER_SUPPLY_PROP_PRECHARGE_CURRENT, POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT, + POWER_SUPPLY_PROP_LOAD_SWITCH, POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, }; @@ -358,6 +392,7 @@ static int rt9471_charger_property_is_writeable(struct = power_supply *psy, case POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT: case POWER_SUPPLY_PROP_PRECHARGE_CURRENT: case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: + case POWER_SUPPLY_PROP_LOAD_SWITCH: return 1; default: return 0; @@ -393,6 +428,8 @@ static int rt9471_charger_set_property(struct power_sup= ply *psy, chip, F_IPRE_CHG, RT9471_RANGE_IPRE, val->intval); case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: return rt9471_set_ieoc(chip, val->intval); + case POWER_SUPPLY_PROP_LOAD_SWITCH: + return rt9471_set_batfet(chip, val->intval); default: return -EINVAL; } @@ -439,6 +476,8 @@ static int rt9471_charger_get_property(struct power_sup= ply *psy, chip, F_IPRE_CHG, RT9471_RANGE_IPRE, &val->intval); case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: return rt9471_get_ieoc(chip, &val->intval); + case POWER_SUPPLY_PROP_LOAD_SWITCH: + return rt9471_get_batfet(chip, &val->intval); case POWER_SUPPLY_PROP_MODEL_NAME: val->strval =3D rt9471_model; return 0; @@ -649,14 +688,14 @@ static ssize_t sysoff_enable_show(struct device *dev, struct device_attribute *attr, char *buf) { struct rt9471_chip *chip =3D psy_device_to_chip(dev); - unsigned int sysoff_enable; + unsigned int val; int ret; =20 - ret =3D regmap_field_read(chip->rm_fields[F_BATFET_DIS], &sysoff_enable); - if (ret) + ret =3D rt9471_get_batfet(chip, &val); + if (ret < 0) return ret; =20 - return sysfs_emit(buf, "%d\n", sysoff_enable); + return sysfs_emit(buf, "%d\n", val =3D=3D POWER_SUPPLY_LOAD_SWITCH_OFF); } =20 static ssize_t sysoff_enable_store(struct device *dev, @@ -671,8 +710,9 @@ static ssize_t sysoff_enable_store(struct device *dev, if (ret) return ret; =20 - ret =3D regmap_field_write(chip->rm_fields[F_BATFET_DIS], !!tmp); - if (ret) + ret =3D rt9471_set_batfet(chip, tmp ? POWER_SUPPLY_LOAD_SWITCH_OFF : + POWER_SUPPLY_LOAD_SWITCH_ON); + if (ret < 0) return ret; =20 return count; @@ -744,6 +784,8 @@ static int rt9471_register_psy(struct rt9471_chip *chip) BIT(POWER_SUPPLY_USB_TYPE_DCP) | BIT(POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID) | BIT(POWER_SUPPLY_USB_TYPE_UNKNOWN); + desc->load_switches =3D BIT(POWER_SUPPLY_LOAD_SWITCH_ON) | + BIT(POWER_SUPPLY_LOAD_SWITCH_OFF); desc->properties =3D rt9471_charger_properties; desc->num_properties =3D ARRAY_SIZE(rt9471_charger_properties); desc->get_property =3D rt9471_charger_get_property; --=20 2.43.0 From nobody Sat Sep 26 11:46:39 2026 Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11013003.outbound.protection.outlook.com [40.107.162.3]) (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 C7F7E3B14C3; Tue, 1 Sep 2026 19:35:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.162.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291321; cv=fail; b=tpqBODoz05PmXD10ApXzbp1ZDiHLtYZeO5Xm7a7pXwPRHsGilgNmKoWgffvyykhtZ7OZNJxW19sFYbUKxWE88qbCddovq6mTYnZ7zF402try1NrFckxLih3lipL+IgwVKdwVkZQ0Dc9NqKX4naJDfiTQ9XUmNQuZWKt7pc6g6bE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291321; c=relaxed/simple; bh=d8UtFGhCKlrndjnEqLVIopAvyFoYXujS3Zju61xMwbY=; h=From:To:CC:Subject:In-Reply-To:References:Message-ID:Date: MIME-Version:Content-Type; b=N/2aYoO5vXfM4VJnV65Wu7y56lK/W3CSlwuy5wzx0F8nedz8Fx75kLE1YKZ4/QgknHE8LPl1zNDSVNaGhh65S/IggorIVSzMGXFJzI1WhKZEPbrRcSFOUrNBnKA/8/nOtQLVOVYAJEV3E/RitXJ//rwJb/9IrpYSAO3AVsznu9c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=lndLRqb6; arc=fail smtp.client-ip=40.107.162.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="lndLRqb6" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z26xtEUpyzWT1Rhrpl8UsJBQ5BXawOqU0rHchpwAeAfE9+mKEpIX7XfrE/5RD3PCNaL1budEz5B5RZbpORys0jbPw7XYrGMtYXys+DXx3nqHoNlm8kfAFO57ZcECFJdjw66ksAmLwvjzTBw23zly2/Qtih5Mi/JoBEp5vbekoAdKubPxATZ3cPtRR9hLz2UJG6eMpB7gGhxAAIkEiHuhnpPs0kgWEaaZB1UYny117olLe2PQrQbhJEgR0Fd0OMTUjJcE9DkV5J72lgbqtVGxCRow7QDdd0dyxWx4dBe9e7KtQlX+VG90G5eR+E8GC8WvB4Dpl2Z8S7UnK4mTKA+TAw== 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=jzTUb9p1hZCrUESSAaiQiN8kC9H0miHDys9hPRIFl18=; b=dWsW4jxOSrjuHn94iLkWftJLn3KTc5NIk9zHoIMem7c57WDcCu2gIYKQwCVoWhpH45mtfADN97PmLN4kCGe+lBN5HHySD9c5tQid3CefFbt1FAB6562/wJuI3E8CcxQZKAwajqZ0IKncTYGn3MEQ+Scc0RsZXmJZTrZ3LpoTTfq36Awb59SF7tsrIbmIo9GxIo8AWxEqko2QkkvR6jCMCJE9w/SwPsSW9VR8AM6vCVxgjbsWywErZbtZXGUWbJai4n9H76m7NL63Bc1GQYZtPtwbvf1NKkLqqVqllcJBJujmpKO5LHTzvwIapV9uvb2Xw6fEcq+GQ2k9uTk1En3RSg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jzTUb9p1hZCrUESSAaiQiN8kC9H0miHDys9hPRIFl18=; b=lndLRqb6bj83LaLjVN1wPejxygfg9ONVbtbUhD+USWG8X2mMFgWOCj6Hlwbc4UuSNfMJGFgzEFmDJBYEVZXRQ3jahdqQ0biaQjtCSRM6pX3+Uj3mfEy0+b5wL37UI5KhV8M+xlcoeUsZ5k4Zma2MU+WbdM55Yckq/BymXN1Pyx0= Received: from AM0P309CA0010.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::17) by VI2PR02MB10950.eurprd02.prod.outlook.com (2603:10a6:800:27d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 19:35:13 +0000 Received: from AMS0EPF00000198.eurprd05.prod.outlook.com (2603:10a6:20b:28f:cafe::81) by AM0P309CA0010.outlook.office365.com (2603:10a6:20b:28f::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 19:35:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:35:13 +0000 Received: from pc67007-2609 (10.4.0.13) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 21:35:09 +0200 From: Waqar Hameed To: Sebastian Reichel CC: , , Subject: [PATCH v2 5/8] power: supply: rt9467: Use POWER_SUPPLY_PROP_LOAD_SWITCH In-Reply-To: References: User-Agent: a.out Message-ID: <11d5d3f03f34cdc47a9ec9f1ebec9e1d9457414f.1788290289.git.waqar.hameed@axis.com> Date: Tue, 1 Sep 2026 21:35:09 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail11w.axis.com (10.20.40.11) To se-mail10w.axis.com (10.20.40.10) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF00000198:EE_|VI2PR02MB10950:EE_ X-MS-Office365-Filtering-Correlation-Id: 7d8fd11d-fa45-4077-9684-08df086024df X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|23010399003|82310400026|376014|1800799024|6133799003|18002099003|22082099003|56012099006|11063799006|10067099003; X-Microsoft-Antispam-Message-Info: P6N8HnjZWRoej5PcpUHmpo5uD5ymDlYyVbEL6IuVkXlBhUjBvmhXdoGHrhDooHAmHmYhwqGLkEqlfFjS0eS/wt36cGy3fvhQ6a1MKuNzhRWc3dggxjfPzQKft0/xHbgkB5w37GKQfhHFENktF6f81uZoxX55MN3GSJCf18DvWEGmOkcd3ZAIGNnX1GO5Of40+kcRNAu5wejeVp1yMjyqR8sWYPmN3LFvb/hrG9vLWxJAE55oUa1l4bE8Op0U6QUnIstbv47eAerlB1Md2sbDv6TjpgyV2IPMywYoWH9r58RJ1sRfo8oDqmKAmNrquON+FfSCaNdF8wdj7Mwn/B6sA3qhlvLJGgWZFhqfK9g81ZomYl070RLQJpThGM0g1irQBocN3Vv2xlPkmfR03Xic+50cVvwdcBm+kSGi56LFlWt7a96oqfgQ4hrkayAHDhYt19WOeX0AAiS3XO+lBrHZvq6EvalZ4yx40njAV8QXARFaXRUP3T0EgYDQ5r0mPESOlp0R0jHgOch2QZG/V4B8T1BSdX/YfGl0h3edRND4Q3AUjKnZCniUiInNrETsbqTR6kYbnlUptdfBdZb8pOSCxPJS/gBjGlXZP5HiJVBG7YVfC960lnMpYqyg7mM5RXfGcx2EtOi302vXkkANTb79M/AUL7oqLAXM5yU+HFJjH0qSmR+iTys4nBzXnQEMeAau X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(23010399003)(82310400026)(376014)(1800799024)(6133799003)(18002099003)(22082099003)(56012099006)(11063799006)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gqCHwcGYpkKhqxbOTyO2G6xWCB2YGL+E56IloqrMz1iW15hxfGvgSydUplm4zYeezC+Kg5LPGFnUc8t+kjaf150/zroK6q2qV6q5ylL3MQzyx0USLQ3L64oriv3CCEwa1O7bQfqC4te21mnxjSRClg2MNmHp9PsA3bdgf8dCj5WE1v6NRis2wfWBZ6E4r7oNbCRKVQcJtnvU+PU/zIrEJBtFzMS2vJqyHolAip+UBai6tUHeeII/+J1haWoaMKQUqZf8wDkxY2byjX7kpQ9oBJM9XBjzBOgehSOHvS/IKb+V2USELoMVaqD0nu1XrJiuk3klGNhNisEMxKQ6ziQ0Zlqep7NhyeNTrFn2EoCRWz2uNWELTdcXtag01cAorDGV74LU0b/VyOxwOhr2Mp6w/wiJ0hzAHdfDW8uyFpfoIcPVL0IYTM9bY1s0ttK/oYfZ X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:35:13.8034 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7d8fd11d-fa45-4077-9684-08df086024df X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000198.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR02MB10950 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The framework supports controlling system load with `POWER_SUPPLY_PROP_LOAD_SWITCH`. Use this to control the BATFET, but keep old custom `sysfs` ABI for backward compatibility. However, add a note in ABI documentation that one should prefer the property `load_switch` instead. Signed-off-by: Waqar Hameed --- .../ABI/testing/sysfs-class-power-rt9467 | 2 + drivers/power/supply/rt9467-charger.c | 54 ++++++++++++++++--- 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-class-power-rt9467 b/Documenta= tion/ABI/testing/sysfs-class-power-rt9467 index 619b7c45d145d..bfbfd78ec1c19 100644 --- a/Documentation/ABI/testing/sysfs-class-power-rt9467 +++ b/Documentation/ABI/testing/sysfs-class-power-rt9467 @@ -13,6 +13,8 @@ Description: 'Disable' also can help to leave it, but it's more like to abort the action before the device really enter shipping mode. =20 + Note: use /sys/class/power_supply/rt9467-*/load_switch instead. + Access: Read, Write Valid values: - 1: enabled diff --git a/drivers/power/supply/rt9467-charger.c b/drivers/power/supply/r= t9467-charger.c index a9a83b263e187..f0d10f44b1090 100644 --- a/drivers/power/supply/rt9467-charger.c +++ b/drivers/power/supply/rt9467-charger.c @@ -633,6 +633,39 @@ static int rt9467_psy_set_ieoc(struct rt9467_chg_data = *data, int microamp) return ret; } =20 +static int rt9467_set_batfet(struct rt9467_chg_data *data, int val) +{ + unsigned int regval; + + switch (val) { + case POWER_SUPPLY_LOAD_SWITCH_ON: + regval =3D 0; + break; + case POWER_SUPPLY_LOAD_SWITCH_OFF: + regval =3D 1; + break; + default: + return -EINVAL; + } + + return regmap_field_write(data->rm_field[F_SHIP_MODE], regval); +} + +static int rt9467_get_batfet(struct rt9467_chg_data *data, int *val) +{ + unsigned int regval; + int ret; + + ret =3D regmap_field_read(data->rm_field[F_SHIP_MODE], ®val); + if (ret < 0) + return ret; + + *val =3D regval ? POWER_SUPPLY_LOAD_SWITCH_OFF : + POWER_SUPPLY_LOAD_SWITCH_ON; + + return 0; +} + static const enum power_supply_property rt9467_chg_properties[] =3D { POWER_SUPPLY_PROP_STATUS, POWER_SUPPLY_PROP_ONLINE, @@ -648,6 +681,7 @@ static const enum power_supply_property rt9467_chg_prop= erties[] =3D { POWER_SUPPLY_PROP_USB_TYPE, POWER_SUPPLY_PROP_PRECHARGE_CURRENT, POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT, + POWER_SUPPLY_PROP_LOAD_SWITCH, }; =20 static int rt9467_psy_get_property(struct power_supply *psy, @@ -711,6 +745,8 @@ static int rt9467_psy_get_property(struct power_supply = *psy, val->intval =3D data->ieoc_ua; mutex_unlock(&data->ichg_ieoc_lock); return 0; + case POWER_SUPPLY_PROP_LOAD_SWITCH: + return rt9467_get_batfet(data, &val->intval); default: return -ENODATA; } @@ -747,6 +783,8 @@ static int rt9467_psy_set_property(struct power_supply = *psy, RT9467_RANGE_IPREC, val->intval); case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: return rt9467_psy_set_ieoc(data, val->intval); + case POWER_SUPPLY_PROP_LOAD_SWITCH: + return rt9467_set_batfet(data, val->intval); default: return -EINVAL; } @@ -764,6 +802,7 @@ static int rt9467_chg_prop_is_writeable(struct power_su= pply *psy, case POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT: case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: case POWER_SUPPLY_PROP_PRECHARGE_CURRENT: + case POWER_SUPPLY_PROP_LOAD_SWITCH: return 1; default: return 0; @@ -777,6 +816,8 @@ static const struct power_supply_desc rt9467_chg_psy_de= sc =3D { BIT(POWER_SUPPLY_USB_TYPE_CDP) | BIT(POWER_SUPPLY_USB_TYPE_DCP) | BIT(POWER_SUPPLY_USB_TYPE_UNKNOWN), + .load_switches =3D BIT(POWER_SUPPLY_LOAD_SWITCH_ON) | + BIT(POWER_SUPPLY_LOAD_SWITCH_OFF), .properties =3D rt9467_chg_properties, .num_properties =3D ARRAY_SIZE(rt9467_chg_properties), .property_is_writeable =3D rt9467_chg_prop_is_writeable, @@ -793,14 +834,14 @@ static ssize_t sysoff_enable_show(struct device *dev, struct device_attribute *attr, char *buf) { struct rt9467_chg_data *data =3D psy_device_to_chip(dev); - unsigned int sysoff_enable; + int val; int ret; =20 - ret =3D regmap_field_read(data->rm_field[F_SHIP_MODE], &sysoff_enable); - if (ret) + ret =3D rt9467_get_batfet(data, &val); + if (ret < 0) return ret; =20 - return sysfs_emit(buf, "%d\n", sysoff_enable); + return sysfs_emit(buf, "%d\n", val =3D=3D POWER_SUPPLY_LOAD_SWITCH_OFF); } =20 static ssize_t sysoff_enable_store(struct device *dev, @@ -815,8 +856,9 @@ static ssize_t sysoff_enable_store(struct device *dev, if (ret) return ret; =20 - ret =3D regmap_field_write(data->rm_field[F_SHIP_MODE], !!tmp); - if (ret) + ret =3D rt9467_set_batfet(data, tmp ? POWER_SUPPLY_LOAD_SWITCH_OFF : + POWER_SUPPLY_LOAD_SWITCH_ON); + if (ret < 0) return ret; =20 return count; --=20 2.43.0 From nobody Sat Sep 26 11:46:39 2026 Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011045.outbound.protection.outlook.com [52.101.65.45]) (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 6B7B13AFD16; Tue, 1 Sep 2026 19:35:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.65.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291321; cv=fail; b=A+aXXxxERO9AcnfCRDAOH8lwwog1dDfSXZphyqrR4F30km1z88Dmko1Zqrmk6BXq9bmgB/I7ahaK9dwTx9F/5tv7Fv4Mltr173O24h4dEwCEDvfegWy+tzR884CCbI/9nU9oNgAhgi9vmnwMtix7D8g5IH/s/6ard3fu54b949w= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291321; c=relaxed/simple; bh=LFEcsVevcumHWk22N8Qyb0dvidpuh4hJZ5ITKK0ahPM=; h=From:To:CC:Subject:In-Reply-To:References:Message-ID:Date: MIME-Version:Content-Type; b=ikbp1fte5mBSuZRzvclxsdVQVjgbbQ0QeKCacsm/v8wjPxSFjZb+2aiDhX0mzzLkvNKGrLIjC2pqle5CWGguq8ldjmE8jTYuxzGeecaUrtpVxXfy5FRA6ZtUdAL5AA0hx7yVzd3uUfri5NxH023HMA0zx4xDshXbLCEMLRah7O8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=XMvQpM7K; arc=fail smtp.client-ip=52.101.65.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="XMvQpM7K" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=uRZ2D+fk04LprlcuqtQTEod81ANGbXbroBKZfLaEPi3ZplomD6sPtQnumWkApjziP90urq+ENEVxWa+1FLZBhCuuMLekbZ/E77Hus0M6QJg6Q/P0yPZs+uggJWjHNPPDn76+cPTzdlKo8Un6AC77KmzhNovyd0Onrmq/GTWE4FtZMCVOOX3/BiVzR9x5iwWTaOSHTfFE4O7M2Ud8ZS/GxjeYcJ3UaJC4DYRCfxZsMh9B/ypTenC2KSsgVmYWxR1Y+g9SFhexOI93inBvZSh/Q6UR+vovFiL/nqkQatnK93mckEE6WF9kXOe0wogopGU2DufMrMjM6C46uccELklXdw== 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=b/JfYOisfFptAVgcujF7dTg3r84jl/fiddgslNwhY0Q=; b=vHSoCC1jeYLNOuEfbhF+bzIpgyA/66e6n1eyB02D5ISPU4ikNIC6xEgjSeB1WGuQeWzACsgqofzB8yRQ6wn2qoNZWV+DCbBBysBD0fS2AuHK8mBlLKOgfp+irEVYIvcm5TWqbyXMPWPBXR13uuytuWHXEPeOd1FnthMGj2ue36q2DamT5HTYMXiRIW8kB07HHssCHrXhTO34y4mjUn0OQSxG0/cDm7UE3GwwCDnwTlrxetpiAmbKeXTrZcoXdrldFE+dvPObkBZE3BhJa3kwYsxm7O0qJtlRFtu+nNv+IVwVLnYXteqiK6Ct8dE1pBtku1Sqkv+f2eFtm1IH36A1ow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b/JfYOisfFptAVgcujF7dTg3r84jl/fiddgslNwhY0Q=; b=XMvQpM7K++1Hdc654BWXvZjDm8c/b+1bXJorG5bg/sgW1P0ADTZjYfXnGV2Irb7CA1iM8166V3wAQJkf7zk8cYDM6zkQ/BneH/cexEZn3qO36OaELhHIixDaT+R/naAuhzO4GYfEMVRtVTpJArT0TR43ytj0GeRO30EOl8zaSjM= Received: from AM0P309CA0027.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::16) by AMBPR02MB11561.eurprd02.prod.outlook.com (2603:10a6:20b:736::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.11; Tue, 1 Sep 2026 19:35:14 +0000 Received: from AMS0EPF00000198.eurprd05.prod.outlook.com (2603:10a6:20b:28f:cafe::78) by AM0P309CA0027.outlook.office365.com (2603:10a6:20b:28f::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 19:35:14 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:35:14 +0000 Received: from pc67007-2609 (10.4.0.13) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 21:35:09 +0200 From: Waqar Hameed To: Sebastian Reichel CC: , , Subject: [PATCH v2 6/8] power: supply: bq24257: Use POWER_SUPPLY_PROP_LOAD_SWITCH In-Reply-To: References: User-Agent: a.out Message-ID: Date: Tue, 1 Sep 2026 21:35:09 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail10w.axis.com (10.20.40.10) To se-mail10w.axis.com (10.20.40.10) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF00000198:EE_|AMBPR02MB11561:EE_ X-MS-Office365-Filtering-Correlation-Id: 7c00fe8d-cadc-42d6-efa7-08df0860253f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|82310400026|36860700016|23010399003|1800799024|10067099003|11063799006|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 6msvd986vxIRMVINVUilY01aEFl+42LIqmGR0SE3Gslpmft0loShwcU/D3NYOrRNLiaY2T/PlxtX4TiRz8+FdFSdv3fJk3v4xlGfjNJEyaZRHf92WSugG6G2yl46roNdJ9vbIClpcPdiYd+MYE1y3MrNaZe8+229VFv4VEfjehqsZqLiR8dxQ+zNZUO1AiLu2HBAwekzqOyeOePyR2DI3c/YPCf8AN6r9I1VUqsc1pKQoNGyzOAnGOazWGv6jzM7SqOyZvnfANUcn6dTr79NTh2RP/Mag30E8YnjBn3cbsVxQbkINJiz4g1ALWe0+KsCs1DmAxiK0NCZWSxsoEajpWpuo37X8aMN4PyiMmMIOQ0G2/yjLA1wyVUvq2r7NsoUqqSpa8ln6k0004igUsqctBRe75E1FQ77tulJzOiTvdic6qrUfnRWLy98SPYd+GpYYZIwbB5pmH3KbMob7hlf/t9O3e+zco0KNErui/zz0mmHwkyrfciBE+OpytUhLXb2fRlfQteVSrk6/Z2ckWNEHNiLXLzPHpYFt0G6BkZtz4FMNmL3KHvJtpaGKmRraxpINP/D3gUiL0219cXGru6XL7GtTZrBqM3hk+KOlOddvLfywIubxoIKz0WQSD+RnKtTY/eaBrTPktAtyl9oRc5udfrZnLz5BUZGvcV0JaW9eBUHjjBn100Ecr5+wDz8ob1BcPMXrtUIt0ZDhsGvqdvZGQ== X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(82310400026)(36860700016)(23010399003)(1800799024)(10067099003)(11063799006)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IHMpr06H1WXJAHy7DBLjyRaxxYTCdoDRpg/DtJ6FG/huIxT6sxS2mKqr9rW1iXiaVQwnalQgYGYCjCtG3I4qz8gnQfIa/qrs+cA8hqDv4wQJU/ca1UqnGXQpDGXZZcTfRvGZyRcAGWUMfemscW0KVO55G02j3cpE+ZcZ88EM74EtNlXreR1CuZZ/wWIRstlfCjBW9NfqUq5hgOMMwc0243++Ynfar8QtDmdWZeY1bgDH0TmS3lwQg+kOdshNhLFdzGSDF/O7bohL05fBpFTDmrnJQmECk6/lWdQdhp+kToG9o2lpOBUsgVSQhREONPsPVCYazpz/TBuCQzBeVz8OYoVT/aVLsKwDC9T/cIrChRVIYEl69pG7HvPH9Nua6f6WODgL+jiHwNMV4p14JLKhSmcKWeQiLSNmDp6p+M68+yN3fFfOwrT5PpD0BR+xVX4k X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:35:14.4352 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7c00fe8d-cadc-42d6-efa7-08df0860253f X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000198.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMBPR02MB11561 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The framework supports controlling system load with `POWER_SUPPLY_PROP_LOAD_SWITCH`. Use this to control `SYSOFF`, but keep old custom `sysfs` ABI for backward compatibility. Signed-off-by: Waqar Hameed --- drivers/power/supply/bq24257_charger.c | 43 +++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/drivers/power/supply/bq24257_charger.c b/drivers/power/supply/= bq24257_charger.c index 944a7aa6f187d..8eea7d0395ce0 100644 --- a/drivers/power/supply/bq24257_charger.c +++ b/drivers/power/supply/bq24257_charger.c @@ -295,6 +295,40 @@ static int bq24257_set_input_current_limit(struct bq24= 257_device *bq, BQ24257_IILIMIT_MAP_SIZE)); } =20 +static int bq24257_get_sys_switch(struct bq24257_device *bq, + union power_supply_propval *val) +{ + int ret; + + ret =3D bq24257_field_read(bq, F_SYSOFF); + if (ret < 0) + return ret; + + val->intval =3D ret ? POWER_SUPPLY_LOAD_SWITCH_OFF : + POWER_SUPPLY_LOAD_SWITCH_ON; + + return 0; +} + +static int bq24257_set_sys_switch(struct bq24257_device *bq, + const union power_supply_propval *val) +{ + u8 regval; + + switch (val->intval) { + case POWER_SUPPLY_LOAD_SWITCH_ON: + regval =3D 0; + break; + case POWER_SUPPLY_LOAD_SWITCH_OFF: + regval =3D 1; + break; + default: + return -EINVAL; + } + + return bq24257_field_write(bq, F_SYSOFF, regval); +} + static int bq24257_power_supply_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propval *val) @@ -381,7 +415,8 @@ static int bq24257_power_supply_get_property(struct pow= er_supply *psy, =20 case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: return bq24257_get_input_current_limit(bq, val); - + case POWER_SUPPLY_PROP_LOAD_SWITCH: + return bq24257_get_sys_switch(bq, val); default: return -EINVAL; } @@ -398,6 +433,8 @@ static int bq24257_power_supply_set_property(struct pow= er_supply *psy, switch (prop) { case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: return bq24257_set_input_current_limit(bq, val); + case POWER_SUPPLY_PROP_LOAD_SWITCH: + return bq24257_set_sys_switch(bq, val); default: return -EINVAL; } @@ -408,6 +445,7 @@ static int bq24257_power_supply_property_is_writeable(s= truct power_supply *psy, { switch (psp) { case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: + case POWER_SUPPLY_PROP_LOAD_SWITCH: return true; default: return false; @@ -740,6 +778,7 @@ static enum power_supply_property bq24257_power_supply_= props[] =3D { POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX, POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT, POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, + POWER_SUPPLY_PROP_LOAD_SWITCH, }; =20 static char *bq24257_charger_supplied_to[] =3D { @@ -749,6 +788,8 @@ static char *bq24257_charger_supplied_to[] =3D { static const struct power_supply_desc bq24257_power_supply_desc =3D { .name =3D "bq24257-charger", .type =3D POWER_SUPPLY_TYPE_USB, + .load_switches =3D BIT(POWER_SUPPLY_LOAD_SWITCH_ON) | + BIT(POWER_SUPPLY_LOAD_SWITCH_OFF), .properties =3D bq24257_power_supply_props, .num_properties =3D ARRAY_SIZE(bq24257_power_supply_props), .get_property =3D bq24257_power_supply_get_property, --=20 2.43.0 From nobody Sat Sep 26 11:46:39 2026 Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11010055.outbound.protection.outlook.com [52.101.84.55]) (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 F3D2B3BAD93; Tue, 1 Sep 2026 19:35:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.84.55 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291322; cv=fail; b=UHDpVeE9HBO0DB28F0PxIgYpI3q/8BdwYOEnuUNH2Pp6fGHsM0CwUhHjR97BEq597ccXGDC+rrUQTMUm9SQeq+7Ob5eF+t92hhUAiCKeOsTqYlCA8JXRnQhV1vml9RpQXJeuTENZ6lU4nMSqlXbiUma3VoX/ATC0PkPBPLrioWo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291322; c=relaxed/simple; bh=6MVF0f+1FHPa5F7U4kW5QTIA8tYSuj/mGN6Mt8ccexw=; h=From:To:CC:Subject:In-Reply-To:References:Message-ID:Date: MIME-Version:Content-Type; b=fXmf+AwSlg60y/+7TeH4Vfd0WLTwBPhJJAWIk2eUUgipp8fXfvMrFONzrcd3AJ0WPRSDO2RIx3K1zp22sUKxhjwZ7p2dxJ5XY4/B+i3IGHrlPMMCZNILf56VbGHMjcLCBPiR3raNcABpNZQJ60XZZlAEJRdytFnEQNGfDxcHavA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=DaO/ZQdO; arc=fail smtp.client-ip=52.101.84.55 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="DaO/ZQdO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cynkDZwUau1cOMANlVzu9x/nmK69Fu87drJGCSCzYyLzcLX6ipl8QqG6iZN6l7/jd3Iki0e53yrBXowK+oHE/WjNOxHXgeoGvstKO0in5/RWwQ20j1XT/yONrK9zt3Lp6WKMOQJDV8JRYBlgEPlT2HaxI4YmMTTeS5KipYQOsIHYyU7NIpxdRcuXSTK5K1rEsdkHjPYsZUcn8LRIG+/R0KmK9qtvfQ0gp3+2hPPaa5ZK7RzYE2gn3Ki2of21b3j4egv3NywZtoB7LQMzRZ3R564M94FCwtqTp/z398fe0ymEPoMo/oWmBuTAtXBiw3UP8EntRjBtQEYiv+Qywh9EuA== 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=2C+XE3+qadrmpj2B/fnprpwPK1fOBtC/NyBYVWoJDvc=; b=YNqG6nifkFilFQ22t1XimKXm85wVzbB+ESQFaXCIoq5gDhT1evQWzJoFbdi89MuPg1ulDxiylJ9pUzKXtXhjYb7woYXiE/qh+dt7rpYxUs+Cs37qRTbfBhoI47gMUqEaQ8EuJVX964g9NMa8hWuHsAfGvWK34oeVNFE6vXqW9AhytrYdXm3omoGSQb1xdVa53e/DycO8S9aGF5JYzf6lrqGyUZZfpC0ltJEjjrEvmwzpzIheNx1sHOW4R4DMAvgixZcMU6u7k/lpFdBnul4QQMp/orzHlY0FEhqjupSG5t0K4ZfjO80hkV+Stq+JTMyyZFoBECammt50PLNA2MubAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2C+XE3+qadrmpj2B/fnprpwPK1fOBtC/NyBYVWoJDvc=; b=DaO/ZQdOvcW17Y+fHIdppfxSMgZlUHgHDzPrhwSG7pfmZ/8zQYzcg9+mMyxCxK61R5aQIaSGoRZ2btEMpJp07rtaX2E8mt5oZxKlc5eBkIxDWyVHD/WC3yawY1ySQwc4zus8is/JwHqR9vwHLV1sFi05mD4U4sI74l8H+Rfd+B0= Received: from AM0P309CA0012.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::19) by DU0PR02MB8387.eurprd02.prod.outlook.com (2603:10a6:10:3b5::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 19:35:15 +0000 Received: from AMS0EPF00000198.eurprd05.prod.outlook.com (2603:10a6:20b:28f:cafe::26) by AM0P309CA0012.outlook.office365.com (2603:10a6:20b:28f::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.406.1 via Frontend Transport; Tue, 1 Sep 2026 19:35:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:35:15 +0000 Received: from pc67007-2609 (10.4.0.13) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 21:35:10 +0200 From: Waqar Hameed To: Sebastian Reichel CC: , , Subject: [PATCH v2 7/8] power: supply: bq24190: Use POWER_SUPPLY_PROP_LOAD_SWITCH In-Reply-To: References: User-Agent: a.out Message-ID: <44792a20fb581cfd3587fd71147f29e22c7f3749.1788290289.git.waqar.hameed@axis.com> Date: Tue, 1 Sep 2026 21:35:10 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail11w.axis.com (10.20.40.11) To se-mail10w.axis.com (10.20.40.10) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF00000198:EE_|DU0PR02MB8387:EE_ X-MS-Office365-Filtering-Correlation-Id: fced1f80-931d-406f-cc55-08df086025a2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|23010399003|376014|36860700016|1800799024|6133799003|22082099003|18002099003|11063799006|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: AvLOwjVZWdw2qSBiy9SFvz8baqATBZvedGQ4nkyppV4XTpZ4a1WBN159SWhEHE1UE1SQn9TR8MQg811hVBUEbRq1k9/D0Iojzva4M6/H0LPL3n1zrN61xBevMS9P5rQqqWUoaZDLAfdLGWJ1C/Zmo0LZI1/FxpYP0lTqJWQsD1MONDNd5Ne+QXnLwpT8B8FCsfIBhsNJ/uav3anHq2MJ96K/iyzZ7PSVfVaQ1Rmbu8snMpjhyhPyO47Q2voPEZbgKmNSkDl0vQNb1OwIolhDOKdvwf5LRzVfsYHO0GCRAf/aid3qhSR5eP3gP/HQAX7zKTf/23JnGAUWuo/RUjDtLHj5eUXsYt49maqsv+r4S/IKNtuz5DKeevbOT0OVswjY4zIAvW61Mv+GrpM5xSNgg9EJEEkS33FyjhkPCJg3UPfHHgvlRnuBlyMnoWoKjSvXnaA/C9DmRylMuKV0IQLeaP+Pv+XpSIbdPFXr1J9GdyXclaQiOwgrkC6FExCXt5fygyL/azROyBpV/mIKzcGDDtTqt7mtrl40CXvIUQFhZpUGDGrwin2ybGSQu4G1+8yBVJ6ZGQak80NukO/Jm9U/C6wh6W10GFRWHjL3S+bgSSxEy7xL8o24MlZt4iR+E4/ksplNI2pbFoTd1kXtaxuVoJnQvfJ5351UTDM9m5Xkyn/kvksus1hlA6L+tmuXiJzBOqXqiinfelnsq9rafPqtBA== X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(23010399003)(376014)(36860700016)(1800799024)(6133799003)(22082099003)(18002099003)(11063799006)(56012099006)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lufrKYicvkUYYdNKJ3h/1VGfq0CxNUjt5gEYBIHB04epGhf2NG+cV7IDiykh19DBXF1erWHxpTtgxanOtE+J0y1IsNYbtCXGUsw4YHRFQH46JJWL+xB1CD9zyk/bGIpr7nbeuA2w0sUO8PT5rCKB1rMavka2GfKZ+FUtbhZWIi/uwIy3az/iqyATkGwumN2NJOrMFrCbqbvopEnhOOi6hCzOUT3d3QWJM5kP96mJpFkBBmH7QX0G/0jgyQEdoQZxDNYQCCtzeWddIIJyV2L6dFkzfqe8BLykYt0nj1bRzLcogggUeQk+DYyGeR+FPNtW0xNdvHdcSMJ2AggSbWuMNO8uVeYZZKpq/+UUVPbzPvzUWXEsUbKPmcXjRcjfh9k8OTzNVyYtD+88QFnNuJNl0Fzwy/WzTvdRlCE01dcKMoCqUwubdRF6KjLI33u39hok X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:35:15.0828 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fced1f80-931d-406f-cc55-08df086025a2 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000198.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR02MB8387 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The `online`-property has historically been (ab)used for controlling the BATFET in this driver. The framework supports controlling system load with `POWER_SUPPLY_PROP_LOAD_SWITCH`. Use this to control the BATFET, but keep the support for `online` in order to have ABI backward compatibility. Moreover, don't bother with converting the `online`-functions to use the new `charger_get/set_batfet_ctrl()` to keep the code more readable. It's already quite messy, e.g. `charge_set_online()` calls `battery_set_online()`. Signed-off-by: Waqar Hameed --- drivers/power/supply/bq24190_charger.c | 62 ++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/drivers/power/supply/bq24190_charger.c b/drivers/power/supply/= bq24190_charger.c index 4bea6fd83c36f..d67bf25ec6ec1 100644 --- a/drivers/power/supply/bq24190_charger.c +++ b/drivers/power/supply/bq24190_charger.c @@ -1294,6 +1294,58 @@ static int bq24190_charger_set_iinlimit(struct bq241= 90_dev_info *bdi, ARRAY_SIZE(bq24190_isc_iinlim_values), val->intval); } =20 +static int bq24190_charger_get_batfet_ctrl(struct bq24190_dev_info *bdi, + union power_supply_propval *val) +{ + u8 regval; + int ret; + + ret =3D bq24190_read_mask(bdi, BQ24190_REG_MOC, + BQ24190_REG_MOC_BATFET_DISABLE_MASK, + BQ24190_REG_MOC_BATFET_DISABLE_SHIFT, + ®val); + if (ret < 0) + return ret; + + /* + * Datasheet defines shipping mode as BATFET off _and_ the watchdog + * disabled. Since the watchdog is disabled during the whole lifetime + * (from probe), shipping mode is the only "off" state that can be + * achievable. + */ + val->intval =3D regval ? POWER_SUPPLY_LOAD_SWITCH_SHIP : + POWER_SUPPLY_LOAD_SWITCH_ON; + return 0; +} + +static int +bq24190_charger_set_batfet_ctrl(struct bq24190_dev_info *bdi, + const union power_supply_propval *val) +{ + u8 regval; + + /* + * Datasheet defines shipping mode as BATFET off _and_ the watchdog + * disabled. Since the watchdog is disabled during the whole lifetime + * (from probe), shipping mode is the only "off" state that can be + * achievable. + */ + switch (val->intval) { + case POWER_SUPPLY_LOAD_SWITCH_ON: + regval =3D 0; + break; + case POWER_SUPPLY_LOAD_SWITCH_SHIP: + regval =3D 1; + break; + default: + return -EINVAL; + } + + return bq24190_write_mask(bdi, BQ24190_REG_MOC, + BQ24190_REG_MOC_BATFET_DISABLE_MASK, + BQ24190_REG_MOC_BATFET_DISABLE_SHIFT, regval); +} + static int bq24190_charger_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propval *val) { @@ -1350,6 +1402,9 @@ static int bq24190_charger_get_property(struct power_= supply *psy, val->intval =3D POWER_SUPPLY_SCOPE_SYSTEM; ret =3D 0; break; + case POWER_SUPPLY_PROP_LOAD_SWITCH: + ret =3D bq24190_charger_get_batfet_ctrl(bdi, val); + break; case POWER_SUPPLY_PROP_MODEL_NAME: val->strval =3D bdi->model_name; ret =3D 0; @@ -1400,6 +1455,9 @@ static int bq24190_charger_set_property(struct power_= supply *psy, case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: ret =3D bq24190_charger_set_iinlimit(bdi, val); break; + case POWER_SUPPLY_PROP_LOAD_SWITCH: + ret =3D bq24190_charger_set_batfet_ctrl(bdi, val); + break; default: ret =3D -EINVAL; } @@ -1420,6 +1478,7 @@ static int bq24190_charger_property_is_writeable(stru= ct power_supply *psy, case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE: case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: + case POWER_SUPPLY_PROP_LOAD_SWITCH: return 1; default: return 0; @@ -1480,6 +1539,7 @@ static enum power_supply_property bq24190_charger_pro= perties[] =3D { POWER_SUPPLY_PROP_SCOPE, POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, + POWER_SUPPLY_PROP_LOAD_SWITCH, }; =20 static char *bq24190_charger_supplied_to[] =3D { @@ -1498,6 +1558,8 @@ static const struct power_supply_desc bq24190_charger= _desc =3D { .charge_types =3D BIT(POWER_SUPPLY_CHARGE_TYPE_NONE) | BIT(POWER_SUPPLY_CHARGE_TYPE_TRICKLE) | BIT(POWER_SUPPLY_CHARGE_TYPE_FAST), + .load_switches =3D BIT(POWER_SUPPLY_LOAD_SWITCH_ON) | + BIT(POWER_SUPPLY_LOAD_SWITCH_SHIP), }; =20 /* Battery power supply property routines */ --=20 2.43.0 From nobody Sat Sep 26 11:46:39 2026 Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11011060.outbound.protection.outlook.com [52.101.70.60]) (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 1B2103C3C02; Tue, 1 Sep 2026 19:35:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.70.60 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291323; cv=fail; b=cehNGVI9PLFYdK3xPsdP11EJN9mK5wokhiJOfmCT7KBmggXgBd1GLMk3rT7aTOT68yYw4p66vQIy3nA/bc6e1/69onLCqgApYLa5Zlu08AjaDmu84RimDCC669Bw5vbTxG8yf/tBovIhADip1RMrE+38PhPeY5nN+EqL2YzYGrc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788291323; c=relaxed/simple; bh=5lAqrg+1ETVJqHLWk/f6LkFUX3Vi4boHjEU5HGl7xn0=; h=From:To:CC:Subject:In-Reply-To:References:Message-ID:Date: MIME-Version:Content-Type; b=DYdsPrkhonlYtMgvv3c2MQJnmNbIgO66AMtsfKpKgC62PS8EM2g/x2SMHAXiRL4ut7OWoWjZqki0MJ1IKblWLFjmh4MWVe8Z3+M/Lo1wq9Ant9psLkZXewIfUuIXDU4qlTaX372aYzHuUxWozKi2OM/afquWPhqiDwQoCTqq3+M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com; spf=pass smtp.mailfrom=axis.com; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b=AtNVcvS3; arc=fail smtp.client-ip=52.101.70.60 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=axis.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=axis.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=axis.com header.i=@axis.com header.b="AtNVcvS3" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lu/5vcFFkJ/jF1aNyvvPK6ZqFWZPQjGjRyOxRNtd5aUEaBIWURNNis9ZZ/Ql3ieiel5B/pep4nvNGedzJSt/q6xdiUuM/10qgQX8hdACNzpAbfYRePedGyaRXIi+fcka9ItwXUVxsv9hffFlY79wlv12RMXEuigHdvjbPjlO/jllJpMQR70XWuQ0jkrS0BowgVP2gV/fOXp19jVgaUnE5igTZ1zVuFdZ32e+0lPnhmvU4pCYcCeg5gdTMDrn0JNzjD2h3unFDywUaKFyLH697hEl0ITE/kW9BoflR5rPSWJFvthilWjp7Tu9n0OsFVUBO1EYZx62F9R170828zqldQ== 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=ZqvxhNpYK4poyd0c4aa0/j6jLcA/VVWzma+DLfmVVt4=; b=Ksgek3gm6cyGSqai32EH8xviGN6qfLKjPMBbS0l/BQpPl6/ILXslDypJnvGH+TPU0vRlJz5+x5P1ro77B93FsgTQtqP1O6xw15gcguuQRdJ/YWkFg4IsytdVhcz5JWPfLxzfHBpYi1Acz1t19QXX88xTM3BHFoDE7atPdcg7emV4zMAXtnEbKsYMNBG3yHqwGpWE7yHgowx9I49mTOI4efomBBuRMA6U1L2oxD3ZUzjojkagjxh4TSBV7Pyt5u64RoyWuXucEoqVGiFIeKePq8usiHWLTK1H2KXID+af8zQYP/3PwaaAmmPc4zztQK1cJv2zWQ+cSleilggQXQEQaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 195.60.68.100) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=axis.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=axis.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axis.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZqvxhNpYK4poyd0c4aa0/j6jLcA/VVWzma+DLfmVVt4=; b=AtNVcvS3fz3dW9Tp4Z2RoB+eMZ9bta23oVxTeKqvgjNjtxmpbIu0HgJovtHVPEBTx3zJobXHADQWYVxizi8Rx71y4kgQpcRAAeToKZ4doZ/1rF9DpNbExd27KHQDMauERpQ6S8WCsj1UiVGQSqd0450lmE+PEk0FiG//EtEmoHs= Received: from AM0P309CA0028.EURP309.PROD.OUTLOOK.COM (2603:10a6:20b:28f::6) by GV1PR02MB8684.eurprd02.prod.outlook.com (2603:10a6:150:90::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Tue, 1 Sep 2026 19:35:15 +0000 Received: from AMS0EPF00000198.eurprd05.prod.outlook.com (2603:10a6:20b:28f:cafe::69) by AM0P309CA0028.outlook.office365.com (2603:10a6:20b:28f::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.10 via Frontend Transport; Tue, 1 Sep 2026 19:35:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 195.60.68.100) smtp.mailfrom=axis.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=axis.com; Received-SPF: Pass (protection.outlook.com: domain of axis.com designates 195.60.68.100 as permitted sender) receiver=protection.outlook.com; client-ip=195.60.68.100; helo=mail.axis.com; pr=C Received: from mail.axis.com (195.60.68.100) by AMS0EPF00000198.mail.protection.outlook.com (10.167.16.244) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Tue, 1 Sep 2026 19:35:15 +0000 Received: from pc67007-2609 (10.4.0.13) by se-mail10w.axis.com (10.20.40.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.39; Tue, 1 Sep 2026 21:35:10 +0200 From: Waqar Hameed To: Sebastian Reichel CC: , , Subject: [PATCH v2 8/8] power: supply: bq25630: Add support for BATFET control In-Reply-To: References: User-Agent: a.out Message-ID: Date: Tue, 1 Sep 2026 21:35:10 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ClientProxiedBy: se-mail10w.axis.com (10.20.40.10) To se-mail10w.axis.com (10.20.40.10) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AMS0EPF00000198:EE_|GV1PR02MB8684:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b62aa6f-2c29-47fb-6b97-08df08602607 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|23010399003|36860700016|82310400026|1800799024|10067099003|11063799006|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: de29ir+lh963ivs60MSdt07GibTtnIvSg6iJIXoMWw9+2buasES6MgFupOc8ZzCPn717NTvihrYyqJapc6JjjZB23QoJJLNwOMm6Yh9IaD892Qwnp3iI78Gb9osLM0H7lAQJxSm8NPdtpl4VN5Vy3uIUZat5YMblaH6t49GXyVxhxiVyEhS+IXyewrWQ7D7oC7BjYCFDIuCfGEGG8rvRcW6g6z1uGY58TUVqit9F+fs689H184/5lkodMIiO7eOUTl10Dtku9twPSsiHxgK9sFCHh3OJZI8HFayYbHIAhSVPJDolA7ZsU4PA0zb29aRlRMK6yhZXvmcn1bpl8eAu6sLsHYUimNRrhJ0BEjRlsd+9t6Q9RrIXXLhZf8Z5nrPmPC1CMOcHi3EQK5QIRSXlhcTPD1M3U+xZRObOI7V9Gt7TGo2gNHh8ilAGRD7S4c3va60A1qFIwG9kA1mU6A4dftLros6w0KcAwRydiYv+W8pc9plE7IoTjWk+or1ouMcZGzNt5Y/9mEg8vzdPXZ6vyMWfvkZgveNOz7bVb4kRT+28Hh+Kw1jCM9gDRUAljLGTuSZBJLmoM0078sKQztk0cbQwa8KU4QWWitTmwaOAWmYmUpJ1L1tGhmDEjHs7NkbfCmzQSC0HrrRpv4I8Oh5b/h4vefyROD24RXNTFt9+hs+5p2of7aNabR5FNbmW9gTh X-Forefront-Antispam-Report: CIP:195.60.68.100;CTRY:SE;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail.axis.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(376014)(23010399003)(36860700016)(82310400026)(1800799024)(10067099003)(11063799006)(22082099003)(18002099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MfM7dA/A96D6yhwnR3gwYl5FidUToKSb2o0Qxh8wAOwEUaXgqk+I9VZMkabOO1lztfBUROJF0UHUjQSi6BeCT3Ofvg6JF6BKNZq/lIcNw4N3LjL3CyXSMwZI/rREizW5KamOiZ2dsWAETD1haWaCh07GX2DIbl9bcti0aD7XKHtP89eF1cOOko17yPItZmT+8w3ZNU7qbk29aSQFHfxLZ7voHNf51sftzEAh/awic8WYGBj+mDvcrJtFG+gBIdOhpVWESFrylAGirYwDmvKtU++CP9y+D9Fx0sf40mKHJch8qYnEKg0+pDPyWEpJJV1PHO+C+hi9HktMsQWYOyiVaKOBYwfJFvFAi2bqTEnwUiU5E8x+d7zMcybrql0SMrKCWy28kadIUuxPr3Pbg0iY6PzBlucJD/InNC5Dk88RAqg2zbCR5NQ9jOVPvcz3KlzE X-OriginatorOrg: axis.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 19:35:15.7411 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3b62aa6f-2c29-47fb-6b97-08df08602607 X-MS-Exchange-CrossTenant-Id: 78703d3c-b907-432f-b066-88f7af9ca3af X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=78703d3c-b907-432f-b066-88f7af9ca3af;Ip=[195.60.68.100];Helo=[mail.axis.com] X-MS-Exchange-CrossTenant-AuthSource: AMS0EPF00000198.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR02MB8684 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The framework supports controlling system load with `POWER_SUPPLY_PROP_LOAD_SWITCH`. Use this to select between the different supported BATFET control modes. Signed-off-by: Waqar Hameed --- drivers/power/supply/bq25630_charger.c | 84 ++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/drivers/power/supply/bq25630_charger.c b/drivers/power/supply/= bq25630_charger.c index 200f74f8eab61..bf54ff557a40f 100644 --- a/drivers/power/supply/bq25630_charger.c +++ b/drivers/power/supply/bq25630_charger.c @@ -112,6 +112,12 @@ #define BQ25630_ITERM_MAX 1000000 #define BQ25630_ITERM_STEP 10000 =20 +/* BATFET control modes. */ +#define BQ25630_BATFET_CTRL_IDLE 0x00 +#define BQ25630_BATFET_CTRL_SHUTDOWN 0x01 +#define BQ25630_BATFET_CTRL_SHIP 0x02 +#define BQ25630_BATFET_CTRL_STANDBY 0x03 + /* Charge types. */ #define BQ25630_CHG_STAT_NOT_CHARGING 0x00 #define BQ25630_CHG_STAT_TRICKLE_CHARGE 0x01 @@ -587,6 +593,71 @@ static int bq25630_read_vbus(struct bq25630_data *data= , int *val) return 0; } =20 +static int bq25630_read_batfet_ctrl(struct bq25630_data *data, int *val) +{ + unsigned int regval; + int ret; + + ret =3D regmap_field_read(data->regfields[BQ25630_REGF_BATFET_CTRL], + ®val); + if (ret) { + dev_err(data->dev, "Could not read BATFET control (%d)\n", ret); + return ret; + } + + switch (regval) { + case BQ25630_BATFET_CTRL_IDLE: + *val =3D POWER_SUPPLY_LOAD_SWITCH_ON; + break; + case BQ25630_BATFET_CTRL_SHUTDOWN: + *val =3D POWER_SUPPLY_LOAD_SWITCH_OFF; + break; + case BQ25630_BATFET_CTRL_SHIP: + *val =3D POWER_SUPPLY_LOAD_SWITCH_SHIP; + break; + case BQ25630_BATFET_CTRL_STANDBY: + *val =3D POWER_SUPPLY_LOAD_SWITCH_STANDBY; + break; + default: + *val =3D POWER_SUPPLY_LOAD_SWITCH_UNKNOWN; + } + + return 0; +} + +static int bq25630_write_batfet_ctrl(struct bq25630_data *data, int val) +{ + unsigned int regval; + int ret; + + switch (val) { + case POWER_SUPPLY_LOAD_SWITCH_ON: + regval =3D BQ25630_BATFET_CTRL_IDLE; + break; + case POWER_SUPPLY_LOAD_SWITCH_OFF: + regval =3D BQ25630_BATFET_CTRL_SHUTDOWN; + break; + case POWER_SUPPLY_LOAD_SWITCH_SHIP: + regval =3D BQ25630_BATFET_CTRL_SHIP; + break; + case POWER_SUPPLY_LOAD_SWITCH_STANDBY: + regval =3D BQ25630_BATFET_CTRL_STANDBY; + break; + default: + return -EINVAL; + } + + ret =3D regmap_field_write(data->regfields[BQ25630_REGF_BATFET_CTRL], + regval); + if (ret) { + dev_err(data->dev, "Could not write BATFET control (%d)\n", + ret); + return ret; + } + + return 0; +} + static int bq25630_get_status(struct bq25630_data *data, int *val) { unsigned int regval; @@ -845,6 +916,9 @@ static int bq25630_charger_get_property(struct power_su= pply *psy, BQ25630_ITERM_MIN_REGVAL, &val->intval); break; + case POWER_SUPPLY_PROP_LOAD_SWITCH: + ret =3D bq25630_read_batfet_ctrl(data, &val->intval); + break; case POWER_SUPPLY_PROP_MODEL_NAME: val->strval =3D "BQ25630"; break; @@ -913,6 +987,9 @@ static int bq25630_charger_set_property(struct power_su= pply *psy, BQ25630_ITERM_MIN_REGVAL, val->intval); break; + case POWER_SUPPLY_PROP_LOAD_SWITCH: + ret =3D bq25630_write_batfet_ctrl(data, val->intval); + break; default: return -EINVAL; } @@ -932,6 +1009,7 @@ static int bq25630_charger_property_is_writeable(struc= t power_supply *psy, case POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT: case POWER_SUPPLY_PROP_PRECHARGE_CURRENT: case POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT: + case POWER_SUPPLY_PROP_LOAD_SWITCH: return true; default: return false; @@ -954,6 +1032,7 @@ static const enum power_supply_property bq25630_charge= r_properties[] =3D { POWER_SUPPLY_PROP_USB_TYPE, POWER_SUPPLY_PROP_PRECHARGE_CURRENT, POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT, + POWER_SUPPLY_PROP_LOAD_SWITCH, POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, }; @@ -972,6 +1051,11 @@ static const struct power_supply_desc bq25630_charger= _psy_desc =3D { BIT(POWER_SUPPLY_USB_TYPE_DCP) | BIT(POWER_SUPPLY_USB_TYPE_CDP) | BIT(POWER_SUPPLY_USB_TYPE_C), + .load_switches =3D BIT(POWER_SUPPLY_LOAD_SWITCH_UNKNOWN) | + BIT(POWER_SUPPLY_LOAD_SWITCH_ON) | + BIT(POWER_SUPPLY_LOAD_SWITCH_OFF) | + BIT(POWER_SUPPLY_LOAD_SWITCH_STANDBY) | + BIT(POWER_SUPPLY_LOAD_SWITCH_SHIP), .properties =3D bq25630_charger_properties, .num_properties =3D ARRAY_SIZE(bq25630_charger_properties), .get_property =3D bq25630_charger_get_property, --=20 2.43.0