The AppleSMC contains two char[32] keys, OSK0 and OSK1, which are not reported in the key count and index by default. These keys are used by the OS X boot sequence, and normally don't matter when running Linux. This patch creates a sysfs entry which reports the value of these keys as an ASCII string, to help emulators (such as QEMU) load OS X when running on genuine Apple hardware. Signed-off-by: Gabriel L. Somlo <somlo@xxxxxxx> --- For extra context: To boot OS X as a guest, QEMU must (among others) emulate the AppleSMC. To boot successfully, OS X insists on querying the (emulated) SMC for the value of OSK0 and OSK1. Currently, these values must be supplied on the QEMU command line as -device applesmc,osk="...concatenated values of OSK0 and OSK1..." With the availability of /sys/devices/platform/applesmc.768/osk, the emulated QEMU AppleSMC could acquire this string directly from the (Apple-manufactured) host machine. Thanks, Gabriel drivers/hwmon/applesmc.c | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c index b41baff..0c7cc71 100644 --- a/drivers/hwmon/applesmc.c +++ b/drivers/hwmon/applesmc.c @@ -1013,6 +1013,23 @@ static ssize_t applesmc_key_at_index_store(struct device *dev, return count; } +static ssize_t applesmc_osk_show(struct device *dev, + struct device_attribute *attr, char *sysfsbuf) +{ + int fail; + + mutex_lock(&smcreg.mutex); + fail = read_smc(APPLESMC_READ_CMD, "OSK0", sysfsbuf, 32) || + read_smc(APPLESMC_READ_CMD, "OSK1", sysfsbuf + 32, 32); + mutex_unlock(&smcreg.mutex); + if (fail) + return -1; + + sysfsbuf[64] = '\n'; + sysfsbuf[65] = '\0'; + return 65; +} + static struct led_classdev applesmc_backlight = { .name = "smc::kbd_backlight", .default_trigger = "nand-disk", @@ -1027,6 +1044,7 @@ static struct applesmc_node_group info_group[] = { { "key_at_index_type", applesmc_key_at_index_type_show }, { "key_at_index_data_length", applesmc_key_at_index_data_length_show }, { "key_at_index_data", applesmc_key_at_index_read_show }, + { "osk", applesmc_osk_show }, { } }; -- 1.7.7.6 _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors