/* SPDX-License-Identifier: GPL-2.0 */ /* * Wifi Band Exclusion Interface (AMD ACPI Implementation) * Copyright (C) 2023 Advanced Micro Devices */ #ifndef _ACPI_AMD_WBRF_H #define _ACPI_AMD_WBRF_H #include #include /* The maximum number of frequency band ranges */ #define MAX_NUM_OF_WBRF_RANGES 11 /* Record actions */ #define WBRF_RECORD_ADD 0x0 #define WBRF_RECORD_REMOVE 0x1 /** * struct freq_band_range - Wifi frequency band range definition * @start: start frequency point (in Hz) * @end: end frequency point (in Hz) */ struct freq_band_range { u64 start; u64 end; }; /** * struct wbrf_ranges_in_out - wbrf ranges info * @num_of_ranges: total number of band ranges in this struct * @band_list: array of Wifi band ranges */ struct wbrf_ranges_in_out { u64 num_of_ranges; struct freq_band_range band_list[MAX_NUM_OF_WBRF_RANGES]; }; /** * enum wbrf_notifier_actions - wbrf notifier actions index * @WBRF_CHANGED: there was some frequency band updates. The consumers * should retrieve the latest active frequency bands. */ enum wbrf_notifier_actions { WBRF_CHANGED, }; #if IS_ENABLED(CONFIG_AMD_WBRF) bool acpi_amd_wbrf_supported_producer(struct device *dev); int acpi_amd_wbrf_add_remove(struct device *dev, uint8_t action, struct wbrf_ranges_in_out *in); bool acpi_amd_wbrf_supported_consumer(struct device *dev); int amd_wbrf_retrieve_freq_band(struct device *dev, struct wbrf_ranges_in_out *out); int amd_wbrf_register_notifier(struct notifier_block *nb); int amd_wbrf_unregister_notifier(struct notifier_block *nb); #else static inline bool acpi_amd_wbrf_supported_consumer(struct device *dev) { return false; } static inline int acpi_amd_wbrf_add_remove(struct device *dev, uint8_t action, struct wbrf_ranges_in_out *in) { return -ENODEV; } static inline bool acpi_amd_wbrf_supported_producer(struct device *dev) { return false; } static inline int amd_wbrf_retrieve_freq_band(struct device *dev, struct wbrf_ranges_in_out *out) { return -ENODEV; } static inline int amd_wbrf_register_notifier(struct notifier_block *nb) { return -ENODEV; } static inline int amd_wbrf_unregister_notifier(struct notifier_block *nb) { return -ENODEV; } #endif /* CONFIG_AMD_WBRF */ #endif /* _ACPI_AMD_WBRF_H */