diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c index b41c7b4f9c7177e0335cb3e5c938aee7e632ed2c..5047642d166261c7e14db6c9b2039e1d4a0995b8 100644 --- a/drivers/platform/x86/samsung-laptop.c +++ b/drivers/platform/x86/samsung-laptop.c @@ -366,10 +366,11 @@ static int sabi_command(struct samsung_laptop *samsung, u16 command, if (debug) { if (in) - pr_info("SABI 0x%04x {0x%08x, 0x%08x, 0x%04x, 0x%02x}", + pr_info("SABI command:0x%04x " + "data:{0x%08x, 0x%08x, 0x%04x, 0x%02x}", command, in->d0, in->d1, in->d2, in->d3); else - pr_info("SABI 0x%04x", command); + pr_info("SABI command:0x%04x", command); } /* enable memory to be able to write to it */ @@ -393,10 +394,17 @@ static int sabi_command(struct samsung_laptop *samsung, u16 command, /* see if the command actually succeeded */ complete = readb(samsung->sabi_iface + SABI_IFACE_COMPLETE); iface_data = readb(samsung->sabi_iface + SABI_IFACE_DATA); - if (complete != 0xaa || iface_data == 0xff) { + + /* iface_data = 0xFF happens when a command is not known + * so we only add a warning in debug mode since we will + * probably issue some unknown command at startup to find + * out which features are supported */ + if (complete != 0xaa || (iface_data == 0xff && debug)) pr_warn("SABI command 0x%04x failed with" " completion flag 0x%02x and interface data 0x%02x", command, complete, iface_data); + + if (complete != 0xaa || iface_data == 0xff) { ret = -EINVAL; goto exit; } @@ -409,7 +417,7 @@ static int sabi_command(struct samsung_laptop *samsung, u16 command, } if (debug && out) { - pr_info("SABI {0x%08x, 0x%08x, 0x%04x, 0x%02x}", + pr_info("SABI return data:{0x%08x, 0x%08x, 0x%04x, 0x%02x}", out->d0, out->d1, out->d2, out->d3); } @@ -1370,6 +1378,9 @@ static int __init samsung_sabi_init(struct samsung_laptop *samsung) if (samsung->handle_backlight) check_for_stepping_quirk(samsung); + pr_info("detected SABI interface: %s\n", + samsung->config->test_string); + exit: if (ret) samsung_sabi_exit(samsung);