1b9370dceSRafael J. Wysocki /* SPDX-License-Identifier: GPL-2.0-only */ 2b9370dceSRafael J. Wysocki 3b9370dceSRafael J. Wysocki /* 4b9370dceSRafael J. Wysocki * ACPI fan device IDs are shared between the fan driver and the device power 5b9370dceSRafael J. Wysocki * management code. 6b9370dceSRafael J. Wysocki * 7b9370dceSRafael J. Wysocki * Add new device IDs before the generic ACPI fan one. 8b9370dceSRafael J. Wysocki */ 900ae053aSSrinivas Pandruvada 1000ae053aSSrinivas Pandruvada #ifndef _ACPI_FAN_H_ 1100ae053aSSrinivas Pandruvada #define _ACPI_FAN_H_ 1200ae053aSSrinivas Pandruvada 13b9370dceSRafael J. Wysocki #define ACPI_FAN_DEVICE_IDS \ 14b9370dceSRafael J. Wysocki {"INT3404", }, /* Fan */ \ 15b9370dceSRafael J. Wysocki {"INTC1044", }, /* Fan for Tiger Lake generation */ \ 16b9370dceSRafael J. Wysocki {"INTC1048", }, /* Fan for Alder Lake generation */ \ 17*657b95d3SSumeet Pawnikar {"INTC1063", }, /* Fan for Meteor Lake generation */ \ 18a510c78eSSrinivas Pandruvada {"INTC10A2", }, /* Fan for Raptor Lake generation */ \ 19b9370dceSRafael J. Wysocki {"PNP0C0B", } /* Generic ACPI fan */ 2000ae053aSSrinivas Pandruvada 2100ae053aSSrinivas Pandruvada #define ACPI_FPS_NAME_LEN 20 2200ae053aSSrinivas Pandruvada 2300ae053aSSrinivas Pandruvada struct acpi_fan_fps { 2400ae053aSSrinivas Pandruvada u64 control; 2500ae053aSSrinivas Pandruvada u64 trip_point; 2600ae053aSSrinivas Pandruvada u64 speed; 2700ae053aSSrinivas Pandruvada u64 noise_level; 2800ae053aSSrinivas Pandruvada u64 power; 2900ae053aSSrinivas Pandruvada char name[ACPI_FPS_NAME_LEN]; 3000ae053aSSrinivas Pandruvada struct device_attribute dev_attr; 3100ae053aSSrinivas Pandruvada }; 3200ae053aSSrinivas Pandruvada 3300ae053aSSrinivas Pandruvada struct acpi_fan_fif { 34d445571fSSrinivas Pandruvada u8 revision; 35d445571fSSrinivas Pandruvada u8 fine_grain_ctrl; 36d445571fSSrinivas Pandruvada u8 step_size; 37d445571fSSrinivas Pandruvada u8 low_speed_notification; 3800ae053aSSrinivas Pandruvada }; 3900ae053aSSrinivas Pandruvada 40bea2d986SSrinivas Pandruvada struct acpi_fan_fst { 41bea2d986SSrinivas Pandruvada u64 revision; 42bea2d986SSrinivas Pandruvada u64 control; 43bea2d986SSrinivas Pandruvada u64 speed; 44bea2d986SSrinivas Pandruvada }; 45bea2d986SSrinivas Pandruvada 4600ae053aSSrinivas Pandruvada struct acpi_fan { 4700ae053aSSrinivas Pandruvada bool acpi4; 4800ae053aSSrinivas Pandruvada struct acpi_fan_fif fif; 4900ae053aSSrinivas Pandruvada struct acpi_fan_fps *fps; 5000ae053aSSrinivas Pandruvada int fps_count; 5100ae053aSSrinivas Pandruvada struct thermal_cooling_device *cdev; 52f1197343SSrinivas Pandruvada struct device_attribute fst_speed; 53f1197343SSrinivas Pandruvada struct device_attribute fine_grain_control; 5400ae053aSSrinivas Pandruvada }; 5500ae053aSSrinivas Pandruvada 56f1197343SSrinivas Pandruvada int acpi_fan_get_fst(struct acpi_device *device, struct acpi_fan_fst *fst); 5700ae053aSSrinivas Pandruvada int acpi_fan_create_attributes(struct acpi_device *device); 5800ae053aSSrinivas Pandruvada void acpi_fan_delete_attributes(struct acpi_device *device); 5900ae053aSSrinivas Pandruvada #endif 60