diff options
author | hiren <hiren@FreeBSD.org> | 2013-05-10 22:43:27 +0000 |
---|---|---|
committer | hiren <hiren@FreeBSD.org> | 2013-05-10 22:43:27 +0000 |
commit | cd6fbb1d3e7e98a991262e2d8acbdac1a9409726 (patch) | |
tree | 1c79166704089de39f22cb3d2ca39b530dbdc663 /sys/x86/cpufreq | |
parent | a31899fbcdb47fdbe455a80ea6e1f861eff0d766 (diff) | |
download | FreeBSD-src-cd6fbb1d3e7e98a991262e2d8acbdac1a9409726.zip FreeBSD-src-cd6fbb1d3e7e98a991262e2d8acbdac1a9409726.tar.gz |
Adding a detach method to p4tcc driver.
PR: 118739
Submitted by: Dan Lukes <dan@obluda.cz> (earlier version)
Reviewed by: jhb
Approved by: sbruno (mentor)
MFC after: 1 week
Diffstat (limited to 'sys/x86/cpufreq')
-rw-r--r-- | sys/x86/cpufreq/p4tcc.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/x86/cpufreq/p4tcc.c b/sys/x86/cpufreq/p4tcc.c index e11b4a8..d438f69 100644 --- a/sys/x86/cpufreq/p4tcc.c +++ b/sys/x86/cpufreq/p4tcc.c @@ -73,6 +73,7 @@ static int p4tcc_features(driver_t *driver, u_int *features); static void p4tcc_identify(driver_t *driver, device_t parent); static int p4tcc_probe(device_t dev); static int p4tcc_attach(device_t dev); +static int p4tcc_detach(device_t dev); static int p4tcc_settings(device_t dev, struct cf_setting *sets, int *count); static int p4tcc_set(device_t dev, const struct cf_setting *set); @@ -84,6 +85,7 @@ static device_method_t p4tcc_methods[] = { DEVMETHOD(device_identify, p4tcc_identify), DEVMETHOD(device_probe, p4tcc_probe), DEVMETHOD(device_attach, p4tcc_attach), + DEVMETHOD(device_detach, p4tcc_detach), /* cpufreq interface */ DEVMETHOD(cpufreq_drv_set, p4tcc_set), @@ -213,6 +215,24 @@ p4tcc_attach(device_t dev) } static int +p4tcc_detach(device_t dev) +{ + struct cf_setting set; + int error; + + error = cpufreq_unregister(dev); + if (error) + return (error); + + /* + * Before we finish detach, switch to Automatic mode. + */ + set.freq = 10000; + p4tcc_set(dev, &set); + return(0); +} + +static int p4tcc_settings(device_t dev, struct cf_setting *sets, int *count) { struct p4tcc_softc *sc; |