コード例 #1
0
ファイル: smihandler.c プロジェクト: AdriDlu/coreboot
static void mainboard_smi_handle_ec_sci(void)
{
	u8 status = inb(EC_SC);
	u8 event;

	if (!(status & EC_SCI_EVT))
		return;

	event = ec_query();
	printk(BIOS_DEBUG, "EC event %02x\n", event);
}
コード例 #2
0
static void mainboard_smi_handle_ec_sci(void)
{
	u8 status = inb(EC_SC);
	u8 event;

	if (!(status & EC_SCI_EVT))
		return;

	event = ec_query();
	printk(BIOS_DEBUG, "EC event %02x\n", event);

	switch (event) {
		/* brightness up */
		case 0x14:
			mainboard_smi_brightness_up();
			mainboard_smi_save_cmos();
			break;
		/* brightness down */
		case 0x15:
			mainboard_smi_brightness_down();
			mainboard_smi_save_cmos();
			break;
			/* Fn-F9 key */
		case 0x18:
			/* Power loss */
		case 0x27:
			/* Undock Key */
		case 0x50:
			mainboard_io_trap_handler(SMI_DOCK_DISCONNECT);
			break;
			/* Dock Event */
		case 0x37:
		case 0x58:
			mainboard_io_trap_handler(SMI_DOCK_CONNECT);
			break;
		default:
			break;
	}
}
コード例 #3
0
ファイル: smihandler.c プロジェクト: tidatida/coreboot
static void mainboard_smi_handle_ec_sci(void)
{
	u8 status = inb(EC_SC);
	u8 event;

	if (!(status & EC_SCI_EVT))
		return;

	event = ec_query();
	printk(BIOS_DEBUG, "EC event %02x\n", event);

	switch (event) {
	case 0x14:
		/* brightness up */
		mainboard_smi_brightness_up();
		break;
	case 0x15:
		/* brightness down */
		mainboard_smi_brightness_down();
		break;
	default:
		break;
	}
}
コード例 #4
0
ファイル: ectool.c プロジェクト: RafaelRMachado/Coreboot
int main(int argc, char *argv[])
{
	int i, opt, option_index = 0;
	long write_data = -1;
	long write_addr = -1;

	static struct option long_options[] = {
		{"version", 0, 0, 'v'},
		{"help", 0, 0, 'h'},
		{"verbose", 0, 0, 'V'},
		{"idx", 0, 0, 'i'},
		{"query", 0, 0, 'q'},
		{0, 0, 0, 0}
	};

	while ((opt = getopt_long(argc, argv, "vh?Vidqw:z:",
				  long_options, &option_index)) != EOF) {
		switch (opt) {
		case 'v':
			print_version();
			exit(0);
			break;
		case 'V':
			verbose = 1;
			break;
		case 'i':
			dump_idx = 1;
			dump_ram = 1;
			break;
		case 'w':
			write_addr = strtol(optarg , NULL, 16);
			break;
		case 'z':
			write_data = strtol(optarg , NULL, 16);
			break;
		case 'd':
			dump_ram = 1;
			break;
		case 'q':
			dump_query = 1;
			break;
		case 'h':
		case '?':
		default:
			print_usage(argv[0]);
			exit(0);
			break;
		}
	}

	if (iopl(3)) {
		printf("You need to be root.\n");
		exit(1);
	}
	if (write_addr >= 0 && write_data >= 0) {
		write_addr &= 0xff;
		write_data &= 0xff;
		printf("\nWriting ec %02lx = %02lx\n", write_addr & 0xff, write_data & 0xff);
		ec_write(write_addr & 0xff, write_data & 0xff);
	}

	/* preserve default - dump_ram if nothing selected */
	if (!dump_ram && !dump_idx && !dump_query && !write_addr) {
		dump_ram = 1;
	}

	if (dump_ram) {
		printf("EC RAM:\n");
		for (i = 0; i < 0x100; i++) {
			if ((i % 0x10) == 0)
				printf("\n%02x: ", i);
			printf("%02x ", ec_read(i));
		}
		printf("\n\n");
	}

	if (dump_query) {
		printf("EC QUERY %02x\n", ec_query());
	}

	if (dump_idx) {
		printf("EC IDX RAM:\n");
		for (i = 0; i < 0x10000; i++) {
			if ((i % 0x10) == 0)
				printf("\n%04x: ", i);
			printf("%02x ", ec_idx_read(i));
		}
		printf("\n\n");
	}

	return 0;
}