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

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

ACPI / EC: Add detailed fields debugging support of EC_SC(R).



Developers really don't need to translate EC_SC(R) in mind as long as the
field details are decoded in the debugging message.

Tested-by: default avatarGareth Williams <gareth@garethwilliams.me.uk>
Tested-by: default avatarSteffen Weber <steffen.weber@gmail.com>
Tested-by: default avatarHans de Goede <jwrdegoede@fedoraproject.org>
Tested-by: default avatarArthur Chen <axchen@nvidia.com>
Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 4a3f6b5b
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@
/* EC status register */
#define ACPI_EC_FLAG_OBF	0x01	/* Output buffer full */
#define ACPI_EC_FLAG_IBF	0x02	/* Input buffer full */
#define ACPI_EC_FLAG_CMD	0x08	/* Input buffer contains a command */
#define ACPI_EC_FLAG_BURST	0x10	/* burst mode */
#define ACPI_EC_FLAG_SCI	0x20	/* EC-SCI occurred */

@@ -133,26 +134,33 @@ static int EC_FLAGS_CLEAR_ON_RESUME; /* Needs acpi_ec_clear() on boot/resume */
static inline u8 acpi_ec_read_status(struct acpi_ec *ec)
{
	u8 x = inb(ec->command_addr);
	pr_debug("---> status = 0x%2.2x\n", x);
	pr_debug("EC_SC(R) = 0x%2.2x "
		 "SCI_EVT=%d BURST=%d CMD=%d IBF=%d OBF=%d\n",
		 x,
		 !!(x & ACPI_EC_FLAG_SCI),
		 !!(x & ACPI_EC_FLAG_BURST),
		 !!(x & ACPI_EC_FLAG_CMD),
		 !!(x & ACPI_EC_FLAG_IBF),
		 !!(x & ACPI_EC_FLAG_OBF));
	return x;
}

static inline u8 acpi_ec_read_data(struct acpi_ec *ec)
{
	u8 x = inb(ec->data_addr);
	pr_debug("---> data = 0x%2.2x\n", x);
	pr_debug("EC_DATA(R) = 0x%2.2x\n", x);
	return x;
}

static inline void acpi_ec_write_cmd(struct acpi_ec *ec, u8 command)
{
	pr_debug("<--- command = 0x%2.2x\n", command);
	pr_debug("EC_SC(W) = 0x%2.2x\n", command);
	outb(command, ec->command_addr);
}

static inline void acpi_ec_write_data(struct acpi_ec *ec, u8 data)
{
	pr_debug("<--- data = 0x%2.2x\n", data);
	pr_debug("EC_DATA(W) = 0x%2.2x\n", data);
	outb(data, ec->data_addr);
}