Commit 3be324a9 authored by Corentin Chary's avatar Corentin Chary Committed by Matthew Garrett

samsung-laptop: make the dmi check less strict

This enable the driver for everything that look like
a laptop and is from vendor "SAMSUNG ELECTRONICS CO., LTD.".
Note that laptop supported by samsung-q10 seem to have a different
vendor strict.

Also remove every log output until we know that we have a SABI interface
(except if the driver is forced to load, or debug is enabled).

Keeping a whitelist of laptop with a model granularity is something that can't
work without close vendor cooperation (and we don't have that).
Signed-off-by: default avatarCorentin Chary <corentincj@iksaif.net>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
parent 84d482f2
...@@ -1270,6 +1270,7 @@ static int __init samsung_sabi_init(struct samsung_laptop *samsung) ...@@ -1270,6 +1270,7 @@ static int __init samsung_sabi_init(struct samsung_laptop *samsung)
samsung->f0000_segment = ioremap_nocache(0xf0000, 0xffff); samsung->f0000_segment = ioremap_nocache(0xf0000, 0xffff);
if (!samsung->f0000_segment) { if (!samsung->f0000_segment) {
if (debug || force)
pr_err("Can't map the segment at 0xf0000\n"); pr_err("Can't map the segment at 0xf0000\n");
ret = -EINVAL; ret = -EINVAL;
goto exit; goto exit;
...@@ -1285,6 +1286,7 @@ static int __init samsung_sabi_init(struct samsung_laptop *samsung) ...@@ -1285,6 +1286,7 @@ static int __init samsung_sabi_init(struct samsung_laptop *samsung)
} }
if (loca == 0xffff) { if (loca == 0xffff) {
if (debug || force)
pr_err("This computer does not support SABI\n"); pr_err("This computer does not support SABI\n");
ret = -ENODEV; ret = -ENODEV;
goto exit; goto exit;
...@@ -1354,244 +1356,34 @@ static int __init samsung_platform_init(struct samsung_laptop *samsung) ...@@ -1354,244 +1356,34 @@ static int __init samsung_platform_init(struct samsung_laptop *samsung)
return 0; return 0;
} }
static int __init dmi_check_cb(const struct dmi_system_id *id)
{
pr_info("found laptop model '%s'\n", id->ident);
return 1;
}
static struct dmi_system_id __initdata samsung_dmi_table[] = { static struct dmi_system_id __initdata samsung_dmi_table[] = {
{ {
.ident = "N128",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "N128"),
DMI_MATCH(DMI_BOARD_NAME, "N128"),
},
.callback = dmi_check_cb,
},
{
.ident = "N130",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "N130"),
DMI_MATCH(DMI_BOARD_NAME, "N130"),
},
.callback = dmi_check_cb,
},
{
.ident = "N510",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "N510"),
DMI_MATCH(DMI_BOARD_NAME, "N510"),
},
.callback = dmi_check_cb,
},
{
.ident = "X125",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "X125"),
DMI_MATCH(DMI_BOARD_NAME, "X125"),
},
.callback = dmi_check_cb,
},
{
.ident = "X120/X170",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "X120/X170"),
DMI_MATCH(DMI_BOARD_NAME, "X120/X170"),
},
.callback = dmi_check_cb,
},
{
.ident = "NC10",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "NC10"),
DMI_MATCH(DMI_BOARD_NAME, "NC10"),
},
.callback = dmi_check_cb,
},
{
.ident = "NP-Q45",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "SQ45S70S"),
DMI_MATCH(DMI_BOARD_NAME, "SQ45S70S"),
},
.callback = dmi_check_cb,
},
{
.ident = "X360",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "X360"),
DMI_MATCH(DMI_BOARD_NAME, "X360"),
},
.callback = dmi_check_cb,
},
{
.ident = "R410 Plus",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "R410P"),
DMI_MATCH(DMI_BOARD_NAME, "R460"),
},
.callback = dmi_check_cb,
},
{
.ident = "R518",
.matches = { .matches = {
DMI_MATCH(DMI_SYS_VENDOR, DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."), "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "R518"), DMI_MATCH(DMI_CHASSIS_TYPE, "8"), /* Portable */
DMI_MATCH(DMI_BOARD_NAME, "R518"),
}, },
.callback = dmi_check_cb,
}, },
{ {
.ident = "R519/R719",
.matches = { .matches = {
DMI_MATCH(DMI_SYS_VENDOR, DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."), "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "R519/R719"), DMI_MATCH(DMI_CHASSIS_TYPE, "9"), /* Laptop */
DMI_MATCH(DMI_BOARD_NAME, "R519/R719"),
}, },
.callback = dmi_check_cb,
}, },
{ {
.ident = "N150/N210/N220",
.matches = { .matches = {
DMI_MATCH(DMI_SYS_VENDOR, DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."), "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220"), DMI_MATCH(DMI_CHASSIS_TYPE, "10"), /* Notebook */
DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220"),
}, },
.callback = dmi_check_cb,
}, },
{ {
.ident = "N220",
.matches = { .matches = {
DMI_MATCH(DMI_SYS_VENDOR, DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."), "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "N220"), DMI_MATCH(DMI_CHASSIS_TYPE, "14"), /* Sub-Notebook */
DMI_MATCH(DMI_BOARD_NAME, "N220"),
}, },
.callback = dmi_check_cb,
},
{
.ident = "N150/N210/N220/N230",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "N150/N210/N220/N230"),
DMI_MATCH(DMI_BOARD_NAME, "N150/N210/N220/N230"),
},
.callback = dmi_check_cb,
},
{
.ident = "N150P/N210P/N220P",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "N150P/N210P/N220P"),
DMI_MATCH(DMI_BOARD_NAME, "N150P/N210P/N220P"),
},
.callback = dmi_check_cb,
},
{
.ident = "R700",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "SR700"),
DMI_MATCH(DMI_BOARD_NAME, "SR700"),
},
.callback = dmi_check_cb,
},
{
.ident = "R530/R730",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "R530/R730"),
DMI_MATCH(DMI_BOARD_NAME, "R530/R730"),
},
.callback = dmi_check_cb,
},
{
.ident = "NF110/NF210/NF310",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "NF110/NF210/NF310"),
DMI_MATCH(DMI_BOARD_NAME, "NF110/NF210/NF310"),
},
.callback = dmi_check_cb,
},
{
.ident = "N145P/N250P/N260P",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "N145P/N250P/N260P"),
DMI_MATCH(DMI_BOARD_NAME, "N145P/N250P/N260P"),
},
.callback = dmi_check_cb,
},
{
.ident = "R70/R71",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
"SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "R70/R71"),
DMI_MATCH(DMI_BOARD_NAME, "R70/R71"),
},
.callback = dmi_check_cb,
},
{
.ident = "P460",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "P460"),
DMI_MATCH(DMI_BOARD_NAME, "P460"),
},
.callback = dmi_check_cb,
},
{
.ident = "R528/R728",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "R528/R728"),
DMI_MATCH(DMI_BOARD_NAME, "R528/R728"),
},
.callback = dmi_check_cb,
},
{
.ident = "NC210/NC110",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "NC210/NC110"),
DMI_MATCH(DMI_BOARD_NAME, "NC210/NC110"),
},
.callback = dmi_check_cb,
},
{
.ident = "X520",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
DMI_MATCH(DMI_PRODUCT_NAME, "X520"),
DMI_MATCH(DMI_BOARD_NAME, "X520"),
},
.callback = dmi_check_cb,
}, },
{ }, { },
}; };
...@@ -1616,12 +1408,9 @@ static int __init samsung_init(void) ...@@ -1616,12 +1408,9 @@ static int __init samsung_init(void)
#ifdef CONFIG_ACPI #ifdef CONFIG_ACPI
/* Don't handle backlight here if the acpi video already handle it */ /* Don't handle backlight here if the acpi video already handle it */
if (acpi_video_backlight_support()) { if (acpi_video_backlight_support())
pr_info("Backlight controlled by ACPI video driver\n");
samsung->handle_backlight = false; samsung->handle_backlight = false;
}
#endif #endif
ret = samsung_platform_init(samsung); ret = samsung_platform_init(samsung);
if (ret) if (ret)
goto error_platform; goto error_platform;
...@@ -1630,6 +1419,12 @@ static int __init samsung_init(void) ...@@ -1630,6 +1419,12 @@ static int __init samsung_init(void)
if (ret) if (ret)
goto error_sabi; goto error_sabi;
#ifdef CONFIG_ACPI
/* Only log that if we are really on a sabi platform */
if (acpi_video_backlight_support())
pr_info("Backlight controlled by ACPI video driver\n");
#endif
ret = samsung_sysfs_init(samsung); ret = samsung_sysfs_init(samsung);
if (ret) if (ret)
goto error_sysfs; goto error_sysfs;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment