Page MenuHomeFreeBSD

D55395.id172301.diff
No OneTemporary

D55395.id172301.diff

diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c
--- a/sys/dev/asmc/asmc.c
+++ b/sys/dev/asmc/asmc.c
@@ -175,6 +175,11 @@
.smc_light_right = NULL, \
.smc_light_control = NULL
+#define ASMC_TEMPS_FUNCS_DISABLED \
+ .smc_temps = {}, \
+ .smc_tempnames = {}, \
+ .smc_tempdescs = {} \
+
static const struct asmc_model asmc_models[] = {
{
"MacBook1,1", "Apple SMC MacBook Core Duo",
@@ -516,8 +521,42 @@
ASMC_FAN_FUNCS2,
ASMC_LIGHT_FUNCS,
ASMC_MBA7_TEMPS, ASMC_MBA7_TEMPNAMES, ASMC_MBA7_TEMPDESCS
+ }
+};
+
+static const struct asmc_model asmc_generic_models[] = {
+ {
+ .smc_model = "MacBookAir",
+ .smc_desc = NULL,
+ ASMC_SMS_FUNCS_DISABLED,
+ ASMC_FAN_FUNCS2,
+ ASMC_LIGHT_FUNCS,
+ ASMC_TEMPS_FUNCS_DISABLED
},
- { NULL, NULL }
+ {
+ .smc_model = "MacBookPro",
+ .smc_desc = NULL,
+ ASMC_SMS_FUNCS_DISABLED,
+ ASMC_FAN_FUNCS2,
+ ASMC_LIGHT_FUNCS,
+ ASMC_TEMPS_FUNCS_DISABLED
+ },
+ {
+ .smc_model = "MacPro",
+ .smc_desc = NULL,
+ ASMC_SMS_FUNCS_DISABLED,
+ ASMC_FAN_FUNCS2,
+ ASMC_LIGHT_FUNCS_DISABLED,
+ ASMC_TEMPS_FUNCS_DISABLED
+ },
+ {
+ .smc_model = "Macmini",
+ .smc_desc = NULL,
+ ASMC_SMS_FUNCS_DISABLED,
+ ASMC_FAN_FUNCS2,
+ ASMC_LIGHT_FUNCS_DISABLED,
+ ASMC_TEMPS_FUNCS_DISABLED
+ }
};
#undef ASMC_SMS_FUNCS
@@ -572,12 +611,24 @@
if (model == NULL)
return (NULL);
- for (i = 0; asmc_models[i].smc_model; i++) {
- if (!strncmp(model, asmc_models[i].smc_model, strlen(model))) {
+ for (i = 0; i < nitems(asmc_models); i++) {
+ if (strncmp(model, asmc_models[i].smc_model, strlen(model)) == 0) {
freeenv(model);
return (&asmc_models[i]);
}
}
+ for (i = 0; i < nitems(asmc_generic_models); i++) {
+ const char *generic_smc_model = asmc_generic_models[i].smc_model;
+ if (strncmp(model, generic_smc_model, strlen(generic_smc_model))
+ == 0) {
+ device_printf(dev,
+ "generic model found for: %s; please submit output "
+ "from `sysctl dev.asmc.0` to bugs.FreeBSD.org\n",
+ model);
+ freeenv(model);
+ return (&asmc_generic_models[i]);
+ }
+ }
freeenv(model);
return (NULL);
@@ -587,6 +638,7 @@
asmc_probe(device_t dev)
{
const struct asmc_model *model;
+ const char *device_desc;
int rv;
if (resource_disabled("asmc", 0))
@@ -596,11 +648,13 @@
return (rv);
model = asmc_match(dev);
- if (!model) {
+ if (model == NULL) {
device_printf(dev, "model not recognized\n");
return (ENXIO);
}
- device_set_desc(dev, model->smc_desc);
+ device_desc = model->smc_desc == NULL ?
+ model->smc_model : model->smc_desc;
+ device_set_desc(dev, device_desc);
return (rv);
}
@@ -706,7 +760,7 @@
SYSCTL_CHILDREN(sysctlnode), OID_AUTO, "temp",
CTLFLAG_RD | CTLFLAG_MPSAFE, 0, "Temperature sensors");
- for (i = 0; model->smc_temps[i]; i++) {
+ for (i = 0; nitems(model->smc_temps); i++) {
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_temp_tree),
OID_AUTO, model->smc_tempnames[i],

File Metadata

Mime Type
text/plain
Expires
Sat, Feb 28, 2:15 AM (18 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28913123
Default Alt Text
D55395.id172301.diff (2 KB)

Event Timeline