From 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Fri, 10 May 2024 07:44:59 +0000 Subject: [PATCH] gmac get mac form eeprom --- kernel/include/linux/thermal.h | 286 ++++++++++++-------------------------------------------- 1 files changed, 64 insertions(+), 222 deletions(-) diff --git a/kernel/include/linux/thermal.h b/kernel/include/linux/thermal.h index bb022cf..a8b81be 100644 --- a/kernel/include/linux/thermal.h +++ b/kernel/include/linux/thermal.h @@ -15,6 +15,7 @@ #include <linux/device.h> #include <linux/sysfs.h> #include <linux/workqueue.h> +#include <linux/android_kabi.h> #include <uapi/linux/thermal.h> #define THERMAL_TRIPS_NONE -1 @@ -29,58 +30,13 @@ /* Default weight of a bound cooling device */ #define THERMAL_WEIGHT_DEFAULT 0 -/* Max sensors that can be used for a single virtual thermalzone */ -#define THERMAL_MAX_VIRT_SENSORS 10 - /* use value, which < 0K, to indicate an invalid/uninitialized temperature */ #define THERMAL_TEMP_INVALID -274000 - -/* - * use a high value for low temp tracking zone, - * to indicate an invalid/uninitialized temperature - */ -#define THERMAL_TEMP_INVALID_LOW 274000 - -/* Unit conversion macros */ -#define DECI_KELVIN_TO_CELSIUS(t) ({ \ - long _t = (t); \ - ((_t-2732 >= 0) ? (_t-2732+5)/10 : (_t-2732-5)/10); \ -}) -#define CELSIUS_TO_DECI_KELVIN(t) ((t)*10+2732) -#define DECI_KELVIN_TO_MILLICELSIUS_WITH_OFFSET(t, off) (((t) - (off)) * 100) -#define DECI_KELVIN_TO_MILLICELSIUS(t) DECI_KELVIN_TO_MILLICELSIUS_WITH_OFFSET(t, 2732) -#define MILLICELSIUS_TO_DECI_KELVIN_WITH_OFFSET(t, off) (((t) / 100) + (off)) -#define MILLICELSIUS_TO_DECI_KELVIN(t) MILLICELSIUS_TO_DECI_KELVIN_WITH_OFFSET(t, 2732) - -/* Default Thermal Governor */ -#if defined(CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE) -#define DEFAULT_THERMAL_GOVERNOR "step_wise" -#elif defined(CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE) -#define DEFAULT_THERMAL_GOVERNOR "fair_share" -#elif defined(CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE) -#define DEFAULT_THERMAL_GOVERNOR "user_space" -#elif defined(CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR) -#define DEFAULT_THERMAL_GOVERNOR "power_allocator" -#endif struct thermal_zone_device; struct thermal_cooling_device; struct thermal_instance; - -enum thermal_device_mode { - THERMAL_DEVICE_DISABLED = 0, - THERMAL_DEVICE_ENABLED, -}; - -enum thermal_trip_type { - THERMAL_TRIP_ACTIVE = 0, - THERMAL_TRIP_PASSIVE, - THERMAL_TRIP_HOT, - THERMAL_TRIP_CRITICAL, - THERMAL_TRIP_CONFIGURABLE_HI, - THERMAL_TRIP_CONFIGURABLE_LOW, - THERMAL_TRIP_CRITICAL_LOW, -}; +struct thermal_attr; enum thermal_trend { THERMAL_TREND_STABLE, /* temperature is stable */ @@ -100,6 +56,7 @@ THERMAL_DEVICE_UP, /* Thermal device is up after a down event */ THERMAL_DEVICE_POWER_CAPABILITY_CHANGED, /* power capability changed */ THERMAL_TABLE_CHANGED, /* Thermal table(s) changed */ + THERMAL_EVENT_KEEP_ALIVE, /* Request for user space handler to respond */ }; struct thermal_zone_device_ops { @@ -109,9 +66,7 @@ struct thermal_cooling_device *); int (*get_temp) (struct thermal_zone_device *, int *); int (*set_trips) (struct thermal_zone_device *, int, int); - int (*get_mode) (struct thermal_zone_device *, - enum thermal_device_mode *); - int (*set_mode) (struct thermal_zone_device *, + int (*change_mode) (struct thermal_zone_device *, enum thermal_device_mode); int (*get_trip_type) (struct thermal_zone_device *, int, enum thermal_trip_type *); @@ -125,25 +80,18 @@ enum thermal_trend *); int (*notify) (struct thermal_zone_device *, int, enum thermal_trip_type); - bool (*is_wakeable)(struct thermal_zone_device *); - int (*set_polling_delay)(struct thermal_zone_device *, int); - int (*set_passive_delay)(struct thermal_zone_device *, int); + ANDROID_KABI_RESERVE(1); }; struct thermal_cooling_device_ops { int (*get_max_state) (struct thermal_cooling_device *, unsigned long *); int (*get_cur_state) (struct thermal_cooling_device *, unsigned long *); int (*set_cur_state) (struct thermal_cooling_device *, unsigned long); - int (*set_min_state)(struct thermal_cooling_device *cdev, - unsigned long target); - int (*get_min_state)(struct thermal_cooling_device *cdev, - unsigned long *target); - int (*get_requested_power)(struct thermal_cooling_device *, - struct thermal_zone_device *, u32 *); - int (*state2power)(struct thermal_cooling_device *, - struct thermal_zone_device *, unsigned long, u32 *); - int (*power2state)(struct thermal_cooling_device *, - struct thermal_zone_device *, u32, unsigned long *); + int (*get_requested_power)(struct thermal_cooling_device *, u32 *); + int (*state2power)(struct thermal_cooling_device *, unsigned long, u32 *); + int (*power2state)(struct thermal_cooling_device *, u32, unsigned long *); + + ANDROID_KABI_RESERVE(1); }; struct thermal_cooling_device { @@ -158,13 +106,8 @@ struct mutex lock; /* protect thermal_instances list */ struct list_head thermal_instances; struct list_head node; - unsigned long sysfs_cur_state_req; - unsigned long sysfs_min_state_req; -}; -struct thermal_attr { - struct device_attribute attr; - char name[THERMAL_NAME_LENGTH]; + ANDROID_KABI_RESERVE(1); }; /** @@ -175,6 +118,7 @@ * @trip_temp_attrs: attributes for trip points for sysfs: trip temperature * @trip_type_attrs: attributes for trip points for sysfs: trip type * @trip_hyst_attrs: attributes for trip points for sysfs: trip hysteresis + * @mode: current mode of this thermal zone * @devdata: private pointer for device private data * @trips: number of trip points the thermal zone supports * @trips_disabled; bitmap for disabled trips @@ -217,6 +161,7 @@ struct thermal_attr *trip_temp_attrs; struct thermal_attr *trip_type_attrs; struct thermal_attr *trip_hyst_attrs; + enum thermal_device_mode mode; void *devdata; int trips; unsigned long trips_disabled; /* bitmap for disabled trips */ @@ -240,6 +185,8 @@ struct list_head node; struct delayed_work poll_queue; enum thermal_notify_event notify_event; + + ANDROID_KABI_RESERVE(1); }; /** @@ -260,7 +207,8 @@ void (*unbind_from_tz)(struct thermal_zone_device *tz); int (*throttle)(struct thermal_zone_device *tz, int trip); struct list_head governor_list; - int min_state_throttle; + + ANDROID_KABI_RESERVE(1); }; /* Structure that holds binding parameters for a zone */ @@ -273,7 +221,7 @@ * platform characterization. This value is relative to the * rest of the weights so a cooling device whose weight is * double that of another cooling device is twice as - * effective. See Documentation/thermal/sysfs-api.txt for more + * effective. See Documentation/driver-api/thermal/sysfs-api.rst for more * information. */ int weight; @@ -281,7 +229,7 @@ /* * This is a bit mask that gives the binding relation between this * thermal zone and cdev, for a particular trip point. - * See Documentation/thermal/sysfs-api.txt for more information. + * See Documentation/driver-api/thermal/sysfs-api.rst for more information. */ int trip_mask; @@ -296,6 +244,8 @@ unsigned long *binding_limits; int (*match) (struct thermal_zone_device *tz, struct thermal_cooling_device *cdev); + + ANDROID_KABI_RESERVE(1); }; /* Structure to define Thermal Zone parameters */ @@ -324,20 +274,14 @@ */ s32 k_po; - bool is_k_po_available; - /* * Proportional parameter of the PID controller when * undershooting */ s32 k_pu; - bool is_k_pu_available; - /* Integral parameter of the PID controller */ s32 k_i; - - bool is_k_i_available; /* Derivative parameter of the PID controller */ s32 k_d; @@ -356,16 +300,7 @@ */ int offset; - /* - * @tracks_low: Indicates that the thermal zone params are for - * temperatures falling below the thresholds. - */ - bool tracks_low; -}; - -struct thermal_genl_event { - u32 orig; - enum events event; + ANDROID_KABI_RESERVE(1); }; /** @@ -383,8 +318,6 @@ * temperature. * @set_trip_temp: a pointer to a function that sets the trip temperature on * hardware. - * @get_trip_temp: a pointer to a function that gets the trip temperature on - * hardware. */ struct thermal_zone_of_device_ops { int (*get_temp)(void *, int *); @@ -392,60 +325,15 @@ int (*set_trips)(void *, int, int); int (*set_emul_temp)(void *, int); int (*set_trip_temp)(void *, int, int); - int (*get_trip_temp)(void *, int, int *); -}; -/** - * struct thermal_trip - representation of a point in temperature domain - * @np: pointer to struct device_node that this trip point was created from - * @temperature: temperature value in miliCelsius - * @hysteresis: relative hysteresis in miliCelsius - * @type: trip point type - */ - -struct thermal_trip { - struct device_node *np; - int temperature; - int hysteresis; - enum thermal_trip_type type; -}; - -/* Different aggregation logic supported for virtual sensors */ -enum aggregation_logic { - VIRT_WEIGHTED_AVG, - VIRT_MAXIMUM, - VIRT_MINIMUM, - VIRT_COUNT_THRESHOLD, - VIRT_AGGREGATION_NR, -}; - -/* - * struct virtual_sensor_data - Data structure used to provide - * information about the virtual zone. - * @virt_zone_name - Virtual thermal zone name - * @num_sensors - Number of sensors this virtual zone uses to compute - * temperature - * @sensor_names - Array of sensor names - * @logic - Temperature aggregation logic to be used - * @coefficients - Coefficients to be used for weighted average logic - * @coefficient_ct - number of coefficients provided as input - * @avg_offset - offset value to be used for the weighted aggregation logic - * @avg_denominator - denominator value to be used for the weighted aggregation - * logic - */ -struct virtual_sensor_data { - int num_sensors; - char virt_zone_name[THERMAL_NAME_LENGTH]; - char *sensor_names[THERMAL_MAX_VIRT_SENSORS]; - enum aggregation_logic logic; - int coefficients[THERMAL_MAX_VIRT_SENSORS]; - int coefficient_ct; - int avg_offset; - int avg_denominator; + ANDROID_KABI_RESERVE(1); }; /* Function declarations */ #ifdef CONFIG_THERMAL_OF +int thermal_zone_of_get_sensor_id(struct device_node *tz_np, + struct device_node *sensor_np, + u32 *id); struct thermal_zone_device * thermal_zone_of_sensor_register(struct device *dev, int id, void *data, const struct thermal_zone_of_device_ops *ops); @@ -456,10 +344,14 @@ const struct thermal_zone_of_device_ops *ops); void devm_thermal_zone_of_sensor_unregister(struct device *dev, struct thermal_zone_device *tz); -struct thermal_zone_device *devm_thermal_of_virtual_sensor_register( - struct device *dev, - const struct virtual_sensor_data *sensor_data); #else + +static inline int thermal_zone_of_get_sensor_id(struct device_node *tz_np, + struct device_node *sensor_np, + u32 *id) +{ + return -ENOENT; +} static inline struct thermal_zone_device * thermal_zone_of_sensor_register(struct device *dev, int id, void *data, const struct thermal_zone_of_device_ops *ops) @@ -486,29 +378,9 @@ { } -static inline -struct thermal_zone_device *devm_thermal_of_virtual_sensor_register( - struct device *dev, - const struct virtual_sensor_data *sensor_data) -{ - return ERR_PTR(-ENODEV); -} - #endif -#if IS_ENABLED(CONFIG_THERMAL) -static inline bool cdev_is_power_actor(struct thermal_cooling_device *cdev) -{ - return cdev->ops->get_requested_power && cdev->ops->state2power && - cdev->ops->power2state; -} - -int power_actor_get_max_power(struct thermal_cooling_device *, - struct thermal_zone_device *tz, u32 *max_power); -int power_actor_get_min_power(struct thermal_cooling_device *, - struct thermal_zone_device *tz, u32 *min_power); -int power_actor_set_power(struct thermal_cooling_device *, - struct thermal_instance *, u32); +#ifdef CONFIG_THERMAL struct thermal_zone_device *thermal_zone_device_register(const char *, int, int, void *, struct thermal_zone_device_ops *, struct thermal_zone_params *, int, int); @@ -522,40 +394,29 @@ struct thermal_cooling_device *); void thermal_zone_device_update(struct thermal_zone_device *, enum thermal_notify_event); -void thermal_zone_device_update_temp(struct thermal_zone_device *tz, - enum thermal_notify_event event, int temp); -void thermal_zone_set_trips(struct thermal_zone_device *); struct thermal_cooling_device *thermal_cooling_device_register(const char *, void *, const struct thermal_cooling_device_ops *); struct thermal_cooling_device * thermal_of_cooling_device_register(struct device_node *np, const char *, void *, const struct thermal_cooling_device_ops *); +struct thermal_cooling_device * +devm_thermal_of_cooling_device_register(struct device *dev, + struct device_node *np, + char *type, void *devdata, + const struct thermal_cooling_device_ops *ops); void thermal_cooling_device_unregister(struct thermal_cooling_device *); struct thermal_zone_device *thermal_zone_get_zone_by_name(const char *name); -struct thermal_cooling_device *thermal_zone_get_cdev_by_name(const char *name); int thermal_zone_get_temp(struct thermal_zone_device *tz, int *temp); int thermal_zone_get_slope(struct thermal_zone_device *tz); int thermal_zone_get_offset(struct thermal_zone_device *tz); -int get_tz_trend(struct thermal_zone_device *, int); -struct thermal_instance *get_thermal_instance(struct thermal_zone_device *, - struct thermal_cooling_device *, int); void thermal_cdev_update(struct thermal_cooling_device *); void thermal_notify_framework(struct thermal_zone_device *, int); +int thermal_zone_device_enable(struct thermal_zone_device *tz); +int thermal_zone_device_disable(struct thermal_zone_device *tz); +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); #else -static inline bool cdev_is_power_actor(struct thermal_cooling_device *cdev) -{ return false; } -static inline int power_actor_get_max_power(struct thermal_cooling_device *cdev, - struct thermal_zone_device *tz, u32 *max_power) -{ return 0; } -static inline int power_actor_get_min_power(struct thermal_cooling_device *cdev, - struct thermal_zone_device *tz, - u32 *min_power) -{ return -ENODEV; } -static inline int power_actor_set_power(struct thermal_cooling_device *cdev, - struct thermal_instance *tz, u32 power) -{ return 0; } static inline struct thermal_zone_device *thermal_zone_device_register( const char *type, int trips, int mask, void *devdata, struct thermal_zone_device_ops *ops, @@ -565,40 +426,27 @@ static inline void thermal_zone_device_unregister( struct thermal_zone_device *tz) { } -static inline int thermal_zone_bind_cooling_device( - struct thermal_zone_device *tz, int trip, - struct thermal_cooling_device *cdev, - unsigned long upper, unsigned long lower, - unsigned int weight) -{ return -ENODEV; } -static inline int thermal_zone_unbind_cooling_device( - struct thermal_zone_device *tz, int trip, - struct thermal_cooling_device *cdev) -{ return -ENODEV; } -static inline void thermal_zone_device_update(struct thermal_zone_device *tz, - enum thermal_notify_event event) -{ } -static inline void thermal_zone_device_update_temp( - struct thermal_zone_device *tz, enum thermal_notify_event event, - int temp) -{ } -static inline void thermal_zone_set_trips(struct thermal_zone_device *tz) -{ } static inline struct thermal_cooling_device * -thermal_cooling_device_register(char *type, void *devdata, +thermal_cooling_device_register(const char *type, void *devdata, const struct thermal_cooling_device_ops *ops) { return ERR_PTR(-ENODEV); } static inline struct thermal_cooling_device * thermal_of_cooling_device_register(struct device_node *np, - char *type, void *devdata, const struct thermal_cooling_device_ops *ops) + const char *type, void *devdata, + const struct thermal_cooling_device_ops *ops) { return ERR_PTR(-ENODEV); } +static inline struct thermal_cooling_device * +devm_thermal_of_cooling_device_register(struct device *dev, + struct device_node *np, + char *type, void *devdata, + const struct thermal_cooling_device_ops *ops) +{ + return ERR_PTR(-ENODEV); +} static inline void thermal_cooling_device_unregister( struct thermal_cooling_device *cdev) { } static inline struct thermal_zone_device *thermal_zone_get_zone_by_name( - const char *name) -{ return ERR_PTR(-ENODEV); } -static inline struct thermal_cooling_device *thermal_zone_get_cdev_by_name( const char *name) { return ERR_PTR(-ENODEV); } static inline int thermal_zone_get_temp( @@ -610,28 +458,22 @@ static inline int thermal_zone_get_offset( struct thermal_zone_device *tz) { return -ENODEV; } -static inline int get_tz_trend(struct thermal_zone_device *tz, int trip) -{ return -ENODEV; } -static inline struct thermal_instance * -get_thermal_instance(struct thermal_zone_device *tz, - struct thermal_cooling_device *cdev, int trip) -{ return ERR_PTR(-ENODEV); } + static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) { } static inline void thermal_notify_framework(struct thermal_zone_device *tz, int trip) { } -#endif /* CONFIG_THERMAL */ -#if defined(CONFIG_NET) && IS_ENABLED(CONFIG_THERMAL) -extern int thermal_generate_netlink_event(struct thermal_zone_device *tz, - enum events event); -#else -static inline int thermal_generate_netlink_event(struct thermal_zone_device *tz, - enum events event) -{ - return 0; -} -#endif +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) +{ return -ENODEV; } + +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) +{ return -ENODEV; } + +static inline int +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) +{ return -ENODEV; } +#endif /* CONFIG_THERMAL */ #endif /* __THERMAL_H__ */ -- Gitblit v1.6.2