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

Commit 57bf6aef authored by Lv Zheng's avatar Lv Zheng Committed by Rafael J. Wysocki
Browse files

ACPICA: Enhance the ACPI_GETx and ACPI_SETx macros.



Improve the implementation of the macros.  Change the SETx macros
to the style of (destination, source).  Also add ACPI_CASTx
companion macros.  Lv Zheng.

Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 2f3faaba
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -49,14 +49,18 @@
 * get into potential aligment issues -- see the STORE macros below.
 * Use with care.
 */
#define ACPI_GET8(ptr)                  *ACPI_CAST_PTR (u8, ptr)
#define ACPI_GET16(ptr)                 *ACPI_CAST_PTR (u16, ptr)
#define ACPI_GET32(ptr)                 *ACPI_CAST_PTR (u32, ptr)
#define ACPI_GET64(ptr)                 *ACPI_CAST_PTR (u64, ptr)
#define ACPI_SET8(ptr)                  *ACPI_CAST_PTR (u8, ptr)
#define ACPI_SET16(ptr)                 *ACPI_CAST_PTR (u16, ptr)
#define ACPI_SET32(ptr)                 *ACPI_CAST_PTR (u32, ptr)
#define ACPI_SET64(ptr)                 *ACPI_CAST_PTR (u64, ptr)
#define ACPI_CAST8(ptr)                 ACPI_CAST_PTR (u8, (ptr))
#define ACPI_CAST16(ptr)                ACPI_CAST_PTR (u16, (ptr))
#define ACPI_CAST32(ptr)                ACPI_CAST_PTR (u32, (ptr))
#define ACPI_CAST64(ptr)                ACPI_CAST_PTR (u64, (ptr))
#define ACPI_GET8(ptr)                  (*ACPI_CAST8 (ptr))
#define ACPI_GET16(ptr)                 (*ACPI_CAST16 (ptr))
#define ACPI_GET32(ptr)                 (*ACPI_CAST32 (ptr))
#define ACPI_GET64(ptr)                 (*ACPI_CAST64 (ptr))
#define ACPI_SET8(ptr, val)             (*ACPI_CAST8 (ptr) = (u8) (val))
#define ACPI_SET16(ptr, val)            (*ACPI_CAST16 (ptr) = (u16) (val))
#define ACPI_SET32(ptr, val)            (*ACPI_CAST32 (ptr) = (u32) (val))
#define ACPI_SET64(ptr, val)            (*ACPI_CAST64 (ptr) = (u64) (val))

/*
 * printf() format helpers
+4 −4
Original line number Diff line number Diff line
@@ -239,19 +239,19 @@ acpi_ex_system_memory_space_handler(u32 function,

		switch (bit_width) {
		case 8:
			ACPI_SET8(logical_addr_ptr) = (u8)*value;
			ACPI_SET8(logical_addr_ptr, *value);
			break;

		case 16:
			ACPI_SET16(logical_addr_ptr) = (u16)*value;
			ACPI_SET16(logical_addr_ptr, *value);
			break;

		case 32:
			ACPI_SET32(logical_addr_ptr) = (u32)*value;
			ACPI_SET32(logical_addr_ptr, *value);
			break;

		case 64:
			ACPI_SET64(logical_addr_ptr) = (u64)*value;
			ACPI_SET64(logical_addr_ptr, *value);
			break;

		default:
+38 −33
Original line number Diff line number Diff line
@@ -136,30 +136,30 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,
			/*
			 * Mask and shift the flag bit
			 */
			ACPI_SET8(destination) = (u8)
			    ((ACPI_GET8(source) >> info->value) & 0x01);
			ACPI_SET8(destination,
				  ((ACPI_GET8(source) >> info->value) & 0x01));
			break;

		case ACPI_RSC_2BITFLAG:
			/*
			 * Mask and shift the flag bits
			 */
			ACPI_SET8(destination) = (u8)
			    ((ACPI_GET8(source) >> info->value) & 0x03);
			ACPI_SET8(destination,
				  ((ACPI_GET8(source) >> info->value) & 0x03));
			break;

		case ACPI_RSC_3BITFLAG:
			/*
			 * Mask and shift the flag bits
			 */
			ACPI_SET8(destination) = (u8)
			    ((ACPI_GET8(source) >> info->value) & 0x07);
			ACPI_SET8(destination,
				  ((ACPI_GET8(source) >> info->value) & 0x07));
			break;

		case ACPI_RSC_COUNT:

			item_count = ACPI_GET8(source);
			ACPI_SET8(destination) = (u8)item_count;
			ACPI_SET8(destination, item_count);

			resource->length = resource->length +
			    (info->value * (item_count - 1));
@@ -168,7 +168,7 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,
		case ACPI_RSC_COUNT16:

			item_count = aml_resource_length;
			ACPI_SET16(destination) = item_count;
			ACPI_SET16(destination, item_count);

			resource->length = resource->length +
			    (info->value * (item_count - 1));
@@ -181,13 +181,13 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,

			resource->length = resource->length + item_count;
			item_count = item_count / 2;
			ACPI_SET16(destination) = item_count;
			ACPI_SET16(destination, item_count);
			break;

		case ACPI_RSC_COUNT_GPIO_VEN:

			item_count = ACPI_GET8(source);
			ACPI_SET8(destination) = (u8)item_count;
			ACPI_SET8(destination, item_count);

			resource->length = resource->length +
			    (info->value * item_count);
@@ -216,7 +216,7 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,
			}

			resource->length = resource->length + item_count;
			ACPI_SET16(destination) = item_count;
			ACPI_SET16(destination, item_count);
			break;

		case ACPI_RSC_COUNT_SERIAL_VEN:
@@ -224,7 +224,7 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,
			item_count = ACPI_GET16(source) - info->value;

			resource->length = resource->length + item_count;
			ACPI_SET16(destination) = item_count;
			ACPI_SET16(destination, item_count);
			break;

		case ACPI_RSC_COUNT_SERIAL_RES:
@@ -234,7 +234,7 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,
			    - ACPI_GET16(source) - info->value;

			resource->length = resource->length + item_count;
			ACPI_SET16(destination) = item_count;
			ACPI_SET16(destination, item_count);
			break;

		case ACPI_RSC_LENGTH:
@@ -385,7 +385,7 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,
			}

			target = ACPI_ADD_PTR(char, resource, info->value);
			ACPI_SET8(target) = (u8)item_count;
			ACPI_SET8(target, item_count);
			break;

		case ACPI_RSC_BITMASK16:
@@ -401,7 +401,7 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource,
			}

			target = ACPI_ADD_PTR(char, resource, info->value);
			ACPI_SET8(target) = (u8)item_count;
			ACPI_SET8(target, item_count);
			break;

		case ACPI_RSC_EXIT_NE:
@@ -514,37 +514,40 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource,
			/*
			 * Clear the flag byte
			 */
			ACPI_SET8(destination) = 0;
			ACPI_SET8(destination, 0);
			break;

		case ACPI_RSC_1BITFLAG:
			/*
			 * Mask and shift the flag bit
			 */
			ACPI_SET8(destination) |= (u8)
			    ((ACPI_GET8(source) & 0x01) << info->value);
			ACPI_SET_BIT(*ACPI_CAST8(destination), (u8)
				     ((ACPI_GET8(source) & 0x01) << info->
				      value));
			break;

		case ACPI_RSC_2BITFLAG:
			/*
			 * Mask and shift the flag bits
			 */
			ACPI_SET8(destination) |= (u8)
			    ((ACPI_GET8(source) & 0x03) << info->value);
			ACPI_SET_BIT(*ACPI_CAST8(destination), (u8)
				     ((ACPI_GET8(source) & 0x03) << info->
				      value));
			break;

		case ACPI_RSC_3BITFLAG:
			/*
			 * Mask and shift the flag bits
			 */
			ACPI_SET8(destination) |= (u8)
			    ((ACPI_GET8(source) & 0x07) << info->value);
			ACPI_SET_BIT(*ACPI_CAST8(destination), (u8)
				     ((ACPI_GET8(source) & 0x07) << info->
				      value));
			break;

		case ACPI_RSC_COUNT:

			item_count = ACPI_GET8(source);
			ACPI_SET8(destination) = (u8)item_count;
			ACPI_SET8(destination, item_count);

			aml_length =
			    (u16) (aml_length +
@@ -561,18 +564,18 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource,
		case ACPI_RSC_COUNT_GPIO_PIN:

			item_count = ACPI_GET16(source);
			ACPI_SET16(destination) = (u16)aml_length;
			ACPI_SET16(destination, aml_length);

			aml_length = (u16)(aml_length + item_count * 2);
			target = ACPI_ADD_PTR(void, aml, info->value);
			ACPI_SET16(target) = (u16)aml_length;
			ACPI_SET16(target, aml_length);
			acpi_rs_set_resource_length(aml_length, aml);
			break;

		case ACPI_RSC_COUNT_GPIO_VEN:

			item_count = ACPI_GET16(source);
			ACPI_SET16(destination) = (u16)item_count;
			ACPI_SET16(destination, item_count);

			aml_length =
			    (u16)(aml_length + (info->value * item_count));
@@ -584,7 +587,7 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource,
			/* Set resource source string length */

			item_count = ACPI_GET16(source);
			ACPI_SET16(destination) = (u16)aml_length;
			ACPI_SET16(destination, aml_length);

			/* Compute offset for the Vendor Data */

@@ -594,7 +597,7 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource,
			/* Set vendor offset only if there is vendor data */

			if (resource->data.gpio.vendor_length) {
				ACPI_SET16(target) = (u16)aml_length;
				ACPI_SET16(target, aml_length);
			}

			acpi_rs_set_resource_length(aml_length, aml);
@@ -603,7 +606,7 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource,
		case ACPI_RSC_COUNT_SERIAL_VEN:

			item_count = ACPI_GET16(source);
			ACPI_SET16(destination) = item_count + info->value;
			ACPI_SET16(destination, item_count + info->value);
			aml_length = (u16)(aml_length + item_count);
			acpi_rs_set_resource_length(aml_length, aml);
			break;
@@ -707,10 +710,12 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource,
			/*
			 * 8-bit encoded bitmask (DMA macro)
			 */
			ACPI_SET8(destination) = (u8)
			ACPI_SET8(destination,
				  acpi_rs_encode_bitmask(source,
						   *ACPI_ADD_PTR(u8, resource,
								 info->value));
							 *ACPI_ADD_PTR(u8,
								       resource,
								       info->
								       value)));
			break;

		case ACPI_RSC_BITMASK16: