87 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0-only */
 | 
						|
/*
 | 
						|
 * Copyright (c) 2021, Intel Corporation.
 | 
						|
 */
 | 
						|
#ifndef INTEL_SAR_H
 | 
						|
#define INTEL_SAR_H
 | 
						|
 | 
						|
#define COMMAND_ID_DEV_MODE 1
 | 
						|
#define COMMAND_ID_CONFIG_TABLE 2
 | 
						|
#define DRVNAME "intc_sar"
 | 
						|
#define MAX_DEV_MODES 50
 | 
						|
#define MAX_REGULATORY 3
 | 
						|
#define SAR_DSM_UUID "82737E72-3A33-4C45-A9C7-57C0411A5F13"
 | 
						|
#define SAR_EVENT 0x80
 | 
						|
#define SYSFS_DATANAME "intc_data"
 | 
						|
#define TOTAL_DATA 4
 | 
						|
 | 
						|
/**
 | 
						|
 * Structure wwan_device_mode_info - device mode information
 | 
						|
 * Holds the data that needs to be passed to userspace.
 | 
						|
 * The data is updated from the BIOS sensor information.
 | 
						|
 * @device_mode: Specific mode of the device
 | 
						|
 * @bandtable_index: Index of RF band
 | 
						|
 * @antennatable_index: Index of antenna
 | 
						|
 * @sartable_index: Index of SAR
 | 
						|
 */
 | 
						|
struct wwan_device_mode_info {
 | 
						|
	int device_mode;
 | 
						|
	int bandtable_index;
 | 
						|
	int antennatable_index;
 | 
						|
	int sartable_index;
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * Structure wwan_device_mode_configuration - device configuration
 | 
						|
 * Holds the data that is configured and obtained on probe event.
 | 
						|
 * The data is updated from the BIOS sensor information.
 | 
						|
 * @version: Mode configuration version
 | 
						|
 * @total_dev_mode: Total number of device modes
 | 
						|
 * @device_mode_info: pointer to structure wwan_device_mode_info
 | 
						|
 */
 | 
						|
struct wwan_device_mode_configuration {
 | 
						|
	int version;
 | 
						|
	int total_dev_mode;
 | 
						|
	struct wwan_device_mode_info *device_mode_info;
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * Structure wwan_supported_info - userspace datastore
 | 
						|
 * Holds the data that is obtained from userspace
 | 
						|
 * The data is updated from the userspace and send value back in the
 | 
						|
 * structure format that is mentioned here.
 | 
						|
 * @reg_mode_needed: regulatory mode set by user for tests
 | 
						|
 * @bios_table_revision: Version of SAR table
 | 
						|
 * @num_supported_modes: Total supported modes based on reg_mode
 | 
						|
 */
 | 
						|
struct wwan_supported_info {
 | 
						|
	int reg_mode_needed;
 | 
						|
	int bios_table_revision;
 | 
						|
	int num_supported_modes;
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
 * Structure wwan_sar_context - context of SAR
 | 
						|
 * Holds the complete context as long as the driver is in existence
 | 
						|
 * The context holds instance of the data used for different cases.
 | 
						|
 * @guid: Group id
 | 
						|
 * @handle: store acpi handle
 | 
						|
 * @reg_value: regulatory value
 | 
						|
 * Regulatory 0: FCC, 1: CE, 2: ISED
 | 
						|
 * @sar_device: platform_device type
 | 
						|
 * @sar_kobject: kobject for sysfs
 | 
						|
 * @supported_data: wwan_supported_info struct
 | 
						|
 * @sar_data: wwan_device_mode_info struct
 | 
						|
 * @config_data: wwan_device_mode_configuration array struct
 | 
						|
 */
 | 
						|
struct wwan_sar_context {
 | 
						|
	guid_t guid;
 | 
						|
	acpi_handle handle;
 | 
						|
	int reg_value;
 | 
						|
	struct platform_device *sar_device;
 | 
						|
	struct wwan_supported_info supported_data;
 | 
						|
	struct wwan_device_mode_info sar_data;
 | 
						|
	struct wwan_device_mode_configuration config_data[MAX_REGULATORY];
 | 
						|
};
 | 
						|
#endif /* INTEL_SAR_H */
 |