Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7a3b8d8 authored by Luca Coelho's avatar Luca Coelho
Browse files

iwlwifi: acpi: move ACPI-related definitions to acpi.h



The ACPI table size definitions were spread around the different files
that used them.  Move them all to a common place.

Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
parent 1c73acf5
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -63,8 +63,6 @@

#include <linux/acpi.h>

#ifdef CONFIG_ACPI

#define ACPI_WRDS_METHOD	"WRDS"
#define ACPI_EWRD_METHOD	"EWRD"
#define ACPI_WGDS_METHOD	"WGDS"
@@ -73,13 +71,25 @@

#define ACPI_WIFI_DOMAIN	(0x07)

#define ACPI_WRDS_WIFI_DATA_SIZE	(IWL_MVM_SAR_TABLE_SIZE + 2)
#define ACPI_EWRD_WIFI_DATA_SIZE	((IWL_MVM_SAR_PROFILE_NUM - 1) * \
					 IWL_MVM_SAR_TABLE_SIZE + 3)
#define ACPI_SAR_TABLE_SIZE		10
#define ACPI_SAR_PROFILE_NUM		4

#define ACPI_GEO_TABLE_SIZE		6
#define ACPI_NUM_GEO_PROFILES		3
#define ACPI_GEO_PER_CHAIN_SIZE		3

#define ACPI_SAR_NUM_CHAIN_LIMITS	2
#define ACPI_SAR_NUM_SUB_BANDS		5

#define ACPI_WRDS_WIFI_DATA_SIZE	(ACPI_SAR_TABLE_SIZE + 2)
#define ACPI_EWRD_WIFI_DATA_SIZE	((ACPI_SAR_PROFILE_NUM - 1) * \
					 ACPI_SAR_TABLE_SIZE + 3)
#define ACPI_WGDS_WIFI_DATA_SIZE	18
#define ACPI_WGDS_NUM_BANDS		2
#define ACPI_WGDS_TABLE_SIZE		3

#ifdef CONFIG_ACPI

void *iwl_acpi_get_object(struct device *dev, acpi_string method);

#else /* CONFIG_ACPI */
+1 −2
Original line number Diff line number Diff line
@@ -358,7 +358,6 @@ struct iwl_dev_tx_power_cmd {
} __packed; /* TX_REDUCED_POWER_API_S_VER_4 */

#define IWL_NUM_GEO_PROFILES   3
#define IWL_GEO_PER_CHAIN_SIZE	3

/**
 * enum iwl_geo_per_chain_offset_operation - type of operation
+19 −17
Original line number Diff line number Diff line
@@ -588,7 +588,7 @@ static int iwl_mvm_sar_set_profile(struct iwl_mvm *mvm,

	profile->enabled = enabled;

	for (i = 0; i < IWL_MVM_SAR_TABLE_SIZE; i++) {
	for (i = 0; i < ACPI_SAR_TABLE_SIZE; i++) {
		if ((table[i].type != ACPI_TYPE_INTEGER) ||
		    (table[i].integer.value > U8_MAX))
			return -EINVAL;
@@ -732,7 +732,7 @@ static int iwl_mvm_sar_get_ewrd_table(struct iwl_mvm *mvm)
			break;

		/* go to the next table */
		pos += IWL_MVM_SAR_TABLE_SIZE;
		pos += ACPI_SAR_TABLE_SIZE;
	}

out_free:
@@ -757,8 +757,8 @@ static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm)
		goto out_free;
	}

	for (i = 0; i < IWL_NUM_GEO_PROFILES; i++) {
		for (j = 0; j < IWL_MVM_GEO_TABLE_SIZE; j++) {
	for (i = 0; i < ACPI_NUM_GEO_PROFILES; i++) {
		for (j = 0; j < ACPI_GEO_TABLE_SIZE; j++) {
			union acpi_object *entry;

			entry = &wifi_pkg->package.elements[idx++];
@@ -783,25 +783,25 @@ int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b)
		.v3.set_mode = cpu_to_le32(IWL_TX_POWER_MODE_SET_CHAINS),
	};
	int i, j, idx;
	int profs[IWL_NUM_CHAIN_LIMITS] = { prof_a, prof_b };
	int profs[ACPI_SAR_NUM_CHAIN_LIMITS] = { prof_a, prof_b };
	int len = sizeof(cmd);

	BUILD_BUG_ON(IWL_NUM_CHAIN_LIMITS < 2);
	BUILD_BUG_ON(IWL_NUM_CHAIN_LIMITS * IWL_NUM_SUB_BANDS !=
		     IWL_MVM_SAR_TABLE_SIZE);
	BUILD_BUG_ON(ACPI_SAR_NUM_CHAIN_LIMITS < 2);
	BUILD_BUG_ON(ACPI_SAR_NUM_CHAIN_LIMITS * ACPI_SAR_NUM_SUB_BANDS !=
		     ACPI_SAR_TABLE_SIZE);

	if (!fw_has_capa(&mvm->fw->ucode_capa, IWL_UCODE_TLV_CAPA_TX_POWER_ACK))
		len = sizeof(cmd.v3);

	for (i = 0; i < IWL_NUM_CHAIN_LIMITS; i++) {
	for (i = 0; i < ACPI_SAR_NUM_CHAIN_LIMITS; i++) {
		struct iwl_mvm_sar_profile *prof;

		/* don't allow SAR to be disabled (profile 0 means disable) */
		if (profs[i] == 0)
			return -EPERM;

		/* we are off by one, so allow up to IWL_MVM_SAR_PROFILE_NUM */
		if (profs[i] > IWL_MVM_SAR_PROFILE_NUM)
		/* we are off by one, so allow up to ACPI_SAR_PROFILE_NUM */
		if (profs[i] > ACPI_SAR_PROFILE_NUM)
			return -EINVAL;

		/* profiles go from 1 to 4, so decrement to access the array */
@@ -816,8 +816,8 @@ int iwl_mvm_sar_select_profile(struct iwl_mvm *mvm, int prof_a, int prof_b)
		}

		IWL_DEBUG_RADIO(mvm, "  Chain[%d]:\n", i);
		for (j = 0; j < IWL_NUM_SUB_BANDS; j++) {
			idx = (i * IWL_NUM_SUB_BANDS) + j;
		for (j = 0; j < ACPI_SAR_NUM_SUB_BANDS; j++) {
			idx = (i * ACPI_SAR_NUM_SUB_BANDS) + j;
			cmd.v3.per_chain_restriction[i][j] =
				cpu_to_le16(prof->table[idx]);
			IWL_DEBUG_RADIO(mvm, "    Band[%d] = %d * .125dBm\n",
@@ -853,7 +853,7 @@ int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm)

	resp = (void *)cmd.resp_pkt->data;
	ret = le32_to_cpu(resp->profile_idx);
	if (WARN_ON(ret > IWL_NUM_GEO_PROFILES)) {
	if (WARN_ON(ret > ACPI_NUM_GEO_PROFILES)) {
		ret = -EIO;
		IWL_WARN(mvm, "Invalid geographic profile idx (%d)\n", ret);
	}
@@ -881,10 +881,12 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)

	IWL_DEBUG_RADIO(mvm, "Sending GEO_TX_POWER_LIMIT\n");

	BUILD_BUG_ON(IWL_NUM_GEO_PROFILES * ACPI_WGDS_NUM_BANDS *
	BUILD_BUG_ON(ACPI_NUM_GEO_PROFILES * ACPI_WGDS_NUM_BANDS *
		     ACPI_WGDS_TABLE_SIZE !=  ACPI_WGDS_WIFI_DATA_SIZE);

	for (i = 0; i < IWL_NUM_GEO_PROFILES; i++) {
	BUILD_BUG_ON(ACPI_NUM_GEO_PROFILES > IWL_NUM_GEO_PROFILES);

	for (i = 0; i < ACPI_NUM_GEO_PROFILES; i++) {
		struct iwl_per_chain_offset *chain =
			(struct iwl_per_chain_offset *)&cmd.table[i];

@@ -892,7 +894,7 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
			u8 *value;

			value = &mvm->geo_profiles[i].values[j *
				IWL_GEO_PER_CHAIN_SIZE];
				ACPI_GEO_PER_CHAIN_SIZE];
			chain[j].max_tx_power = cpu_to_le16(value[0]);
			chain[j].chain_a = value[1];
			chain[j].chain_b = value[2];
+5 −8
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@
#include "tof.h"
#include "fw/runtime.h"
#include "fw/dbg.h"
#include "fw/acpi.h"

#define IWL_MVM_MAX_ADDRESSES		5
/* RSSI offset for WkP */
@@ -684,17 +685,13 @@ enum iwl_mvm_queue_status {
#define IWL_MVM_NUM_CIPHERS             10

#ifdef CONFIG_ACPI
#define IWL_MVM_SAR_TABLE_SIZE		10
#define IWL_MVM_SAR_PROFILE_NUM		4
#define IWL_MVM_GEO_TABLE_SIZE		6

struct iwl_mvm_sar_profile {
	bool enabled;
	u8 table[IWL_MVM_SAR_TABLE_SIZE];
	u8 table[ACPI_SAR_TABLE_SIZE];
};

struct iwl_mvm_geo_profile {
	u8 values[IWL_MVM_GEO_TABLE_SIZE];
	u8 values[ACPI_GEO_TABLE_SIZE];
};
#endif

@@ -1014,8 +1011,8 @@ struct iwl_mvm {

	struct delayed_work cs_tx_unblock_dwork;
#ifdef CONFIG_ACPI
	struct iwl_mvm_sar_profile sar_profiles[IWL_MVM_SAR_PROFILE_NUM];
	struct iwl_mvm_geo_profile geo_profiles[IWL_NUM_GEO_PROFILES];
	struct iwl_mvm_sar_profile sar_profiles[ACPI_SAR_PROFILE_NUM];
	struct iwl_mvm_geo_profile geo_profiles[ACPI_NUM_GEO_PROFILES];
#endif
};