Backport the Microchip EMC2305 driver changes up to current linux-next. These are required in order to actually be able to use the driver with DTS support to drive fans as cooling devices. Replace the bcm27xx RPi patch with the one from RPi kernel 7.0 that was already adapted to all of these backports. Link: https://github.com/openwrt/openwrt/pull/22942 Signed-off-by: Robert Marko <robimarko@gmail.com>
67 lines
2.2 KiB
Diff
67 lines
2.2 KiB
Diff
From 7114b74d99a3cd588da4ecb6011858c06f8408a1 Mon Sep 17 00:00:00 2001
|
|
From: Florin Leotescu <florin.leotescu@nxp.com>
|
|
Date: Tue, 3 Jun 2025 14:31:22 +0300
|
|
Subject: [PATCH 1/3] hwmon: (emc2305) Add support for PWM frequency, polarity
|
|
and output
|
|
|
|
Add three new attributes to the driver data structures to support
|
|
configuration of PWM frequency, PWM polarity and PWM output config.
|
|
|
|
Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
|
|
Link: https://lore.kernel.org/r/20250603113125.3175103-2-florin.leotescu@oss.nxp.com
|
|
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
|
|
---
|
|
drivers/hwmon/emc2305.c | 6 ++++++
|
|
include/linux/platform_data/emc2305.h | 6 ++++++
|
|
2 files changed, 12 insertions(+)
|
|
|
|
--- a/drivers/hwmon/emc2305.c
|
|
+++ b/drivers/hwmon/emc2305.c
|
|
@@ -89,8 +89,11 @@ struct emc2305_cdev_data {
|
|
* @hwmon_dev: hwmon device
|
|
* @max_state: maximum cooling state of the cooling device
|
|
* @pwm_num: number of PWM channels
|
|
+ * @pwm_output_mask: PWM output mask
|
|
+ * @pwm_polarity_mask: PWM polarity mask
|
|
* @pwm_separate: separate PWM settings for every channel
|
|
* @pwm_min: array of minimum PWM per channel
|
|
+ * @pwm_freq: array of PWM frequency per channel
|
|
* @cdev_data: array of cooling devices data
|
|
*/
|
|
struct emc2305_data {
|
|
@@ -98,8 +101,11 @@ struct emc2305_data {
|
|
struct device *hwmon_dev;
|
|
u8 max_state;
|
|
u8 pwm_num;
|
|
+ u8 pwm_output_mask;
|
|
+ u8 pwm_polarity_mask;
|
|
bool pwm_separate;
|
|
u8 pwm_min[EMC2305_PWM_MAX];
|
|
+ u16 pwm_freq[EMC2305_PWM_MAX];
|
|
struct emc2305_cdev_data cdev_data[EMC2305_PWM_MAX];
|
|
};
|
|
|
|
--- a/include/linux/platform_data/emc2305.h
|
|
+++ b/include/linux/platform_data/emc2305.h
|
|
@@ -9,14 +9,20 @@
|
|
* struct emc2305_platform_data - EMC2305 driver platform data
|
|
* @max_state: maximum cooling state of the cooling device;
|
|
* @pwm_num: number of active channels;
|
|
+ * @pwm_output_mask: PWM output mask
|
|
+ * @pwm_polarity_mask: PWM polarity mask
|
|
* @pwm_separate: separate PWM settings for every channel;
|
|
* @pwm_min: array of minimum PWM per channel;
|
|
+ * @pwm_freq: array of PWM frequency per channel
|
|
*/
|
|
struct emc2305_platform_data {
|
|
u8 max_state;
|
|
u8 pwm_num;
|
|
+ u8 pwm_output_mask;
|
|
+ u8 pwm_polarity_mask;
|
|
bool pwm_separate;
|
|
u8 pwm_min[EMC2305_PWM_MAX];
|
|
+ u16 pwm_freq[EMC2305_PWM_MAX];
|
|
};
|
|
|
|
#endif
|