aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/platform
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'acpica' of ↵Linus Torvalds2010-03-012-4/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 * 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: ACPI: replace acpi_integer by u64 ACPICA: Update version to 20100121. ACPICA: Remove unused uint32_struct type ACPICA: Disassembler: Remove obsolete "Integer64" field in parse object ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type ACPICA: Predefined name repair: fix NULL package elements ACPICA: AcpiGetDevices: Eliminate unnecessary _STA calls ACPICA: Update all ACPICA copyrights and signons to 2010 ACPICA: Update for new gcc-4 warning options
| * ACPI: replace acpi_integer by u64Lin Ming2010-01-282-4/+4
| | | | | | | | | | | | | | | | acpi_integer is now obsolete and removed from the ACPICA code base, replaced by u64. Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
* | toshiba_acpi: Add full hotkey supportMatthew Garrett2010-02-251-7/+199
| | | | | | | | | | | | | | | | | | | | Calling the ENAB method on Toshiba laptops results in notifications being sent when laptop hotkeys are pressed. This patch simply calls that method and sets up an input device if it's successful. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
* | hp-wmi: Add support for tablet rotation keyMatthew Garrett2010-02-251-0/+1
| | | | | | | | | | | | | | The HP touchsmart tablet has a key for rotating the UI from landscape to portrait. Add support for it. Signed-off-by: Matthew Garrett <mjg@redhat.com>
* | dell-laptop: Add another Dell laptop to the DMI whitelistErik Andren2010-02-251-0/+8
| | | | | | | | | | | | | | | | The Latitude C640 has another variation of dell in its DMI vendor entry. Add it to the whitelist in order to enjoy the sweet fruits of software backlight toggling. Signed-off-by: Erik Andren <erik.andren@gmail.com>
* | classmate-laptop: use a single MODULE_DEVICE_TABLE to get correct aliasesThadeu Lima de Souza Cascardo2010-02-251-10/+21
| | | | | | | | | | | | | | | | | | | | | | | | Instead of a MODULE_DEVICE_TABLE for every acpi_driver ids table, we create a table containing all ids to export to get a module alias for each one. This will fix automatic loading of the driver when one of the ACPI devices is not present (like the accelerometer, which is not present in some models). Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
* | dell-laptop: Pay attention to which devices the hardware switch controlsMatthew Garrett2010-02-251-2/+29
| | | | | | | | | | | | | | | | | | | | Right now, we assume that the hardware rfkill switch on Dells toggles all radio devices. In fact, this can be configured in the BIOS and so right now we may mark a device as hardware killed even when it isn't. Add code to query the devices controlled by the switch, and use this when determining the hardware kill state of a radio. Signed-off-by: Matthew Garrett <mjg@redhat.com>
* | dell-laptop: Use buffer with 32-bit physical addressStuart Hayes2010-02-251-39/+83
| | | | | | | | | | | | | | | | | | | | | | Calls to communicate with system firmware via a SMI (using dcdbas) need to use a buffer that has a physical address of 4GB or less. Currently the dell-laptop driver does not guarantee this, and when the buffer address is higher than 4GB, the address is truncated to 32 bits and the SMI handler writes to the wrong memory address. Signed-off-by: Stuart Hayes <stuart_hayes@dell.com> Acked-by: Matthew Garrett <mjg@redhat.com>
* | dell-laptop: Blacklist machines not supporting dell-laptopMario Limonciello2010-02-251-0/+46
| | | | | | | | | | | | | | The Mini family doesn't support smbios 17,11 although it reports it does. Signed-off-by: Mario Limonciello <superm1@ubuntu.com> Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
* | dell-laptop: Block software state changes when rfkill hard blockedMario Limonciello2010-02-251-0/+4
| | | | | | | | | | | | | | | | | | | | | | The "hardware" switch is tied directly to a BIOS interface that will connect and disconnect the hardware from the bus. If you use the software interface to request the BIOS to make these changes, the HW switch will be in an inconsistent state and LEDs may not reflect the state of the HW. Signed-off-by: Mario Limonciello <Mario_Limonciello@Dell.com>
* | dell-laptop: Fix small memory leakMatthew Garrett2010-02-251-0/+1
| | | | | | | | | | | | da_tokens was not being freed by dell-laptop on unload. Fix that. Signed-off-by: Matthew Garrett <mjg@redhat.com>
* | dell-laptop: Fix platform device unregistrationMatthew Garrett2010-02-251-0/+4
| | | | | | | | | | | | | | dell-laptop currently fails to clean up its platform device correctly. Make sure that it's unregistered. Signed-off-by: Matthew Garrett <mjg@redhat.com>
* | dell-laptop: Update rfkill state on kill switchMatthew Garrett2010-02-252-0/+49
| | | | | | | | | | | | | | | | The rfkill interface on Dells only sends a notification that the switch has been changed via the keyboard controller. Add a filter so we can pick these notifications up and update the rfkill state appropriately. Signed-off-by: Matthew Garrett <mjg@redhat.com>
* | compal-laptop: Replace sysfs support with rfkill supportMario Limonciello2010-02-251-138/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This drops the support for manually groking the files in sysfs to turn on and off the WLAN and BT for Compal laptops in favor of platform rfkill support. It has been combined into a single patch to not introduce regressions in the process of simply adding rfkill support Signed-off-by: Mario Limonciello <Mario_Limonciello@Dell.com> Signed-off-by: Tim Gardner <tim.gardner@canonical.com> Signed-off-by: Matthew Garrett <mjg@redhat.com> Cc: Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
* | compal-laptop: Add support for known Compal made Dell laptopsMario Limonciello2010-02-251-0/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following Dell laptops are known to have been manufacturer by Compal and are supported by the compal-laptop platform driver - Mini 9 - Mini 10 - Mini 12 - Mini 10v - Inspiron 11z Signed-off-by: Mario Limonciello <Mario_Limonciello@Dell.com> Signed-off-by: Tim Gardner <tim.gardner@canonical.com> Signed-off-by: Matthew Garrett <mjg@redhat.com> Cc: Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
* | acer-wmi: Respect current backlight level when loadingCarlos Corbacho2010-02-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | Set the backlight to use the current brightness when loaded, rather than always resetting the backlight to maximum brightness. Fixes kernel bugzilla #14207 Signed-off-by: Carlos Corbacho <carlos@strangeworlds.co.uk> Reported-by: Denis Mukhin <denis_mukhin@yahoo.com> Signed-off-by: Len Brown <len.brown@intel.com>
* | thinkpad-acpi: wrong thermal attribute_group removed in thermal_exit()Roel Kluin2010-02-161-1/+1
|/ | | | | | | | | | sysfs_remove_group() removed the wrong attribute_group for thermal_read_mode TPEC_8, ACPI_TMP07 and ACPI_UPDT Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Acked-by: Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
* Merge branch 'misc' into releaseLen Brown2010-01-201-3/+6
|\
| * sony-laptop - fix using of uninitialized variableDmitry Torokhov2010-01-161-3/+6
| | | | | | | | | | | | | | | | | | | | CC [M] drivers/platform/x86/sony-laptop.o drivers/platform/x86/sony-laptop.c: In function 'sony_nc_rfkill_setup': drivers/platform/x86/sony-laptop.c:1162: warning: 'i' may be used uninitialized in this function Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Acked-by: Mattia Dongili <malattia@linux.it> Signed-off-by: Len Brown <len.brown@intel.com>
* | eeepc-laptop: disable wireless hotplug for 1201NCorentin Chary2010-01-161-1/+1
| | | | | | | | | | Signed-off-by: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Len Brown <len.brown@intel.com>
* | eeepc-laptop: add hotplug_disable parameterCorentin Chary2010-01-161-0/+10
| | | | | | | | | | | | | | | | | | | | Some new models need to disable wireless hotplug. For the moment, we don't know excactly what models need that, except 1005HA. Users will be able to use that param as a workaround. Signed-off-by: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Len Brown <len.brown@intel.com>
* | eeepc-laptop: switch to using sparse keymap libraryDmitry Torokhov2010-01-162-135/+52
| | | | | | | | | | | | | | Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Tested-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk> Acked-by: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Len Brown <len.brown@intel.com>
* | eeepc-laptop: dmi blacklist to disable pci hotplug codeCorentin Chary2010-01-161-5/+20
| | | | | | | | | | | | | | | | | | This is a short term workaround for Eeepc 1005HA. refs: <http://bugzilla.kernel.org/show_bug.cgi?id=14570> Signed-off-by: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Len Brown <len.brown@intel.com>
* | eeepc-laptop: disable cpu speed control on EeePC 701Alan Jenkins2010-01-161-0/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The EeePC 4G ("701") implements CFVS, but it is not supported by the pre-installed OS, and the original option to change it in the BIOS setup screen was removed in later versions. Judging by the lack of "Super Hybrid Engine" on Asus product pages, this applies to all "701" models (4G/4G Surf/2G Surf). So Asus made a deliberate decision not to support it on this model. We have several reports that using it can cause the system to hang [1]. That said, it does not happen all the time. Some users do not experience it at all (and apparently wish to continue "right-clocking"). Check for the EeePC 701 using DMI. If met, then disable writes to the "cpufv" sysfs attribute and log an explanatory message. Add a "cpufv_disabled" attribute which allow users to override this policy. Writing to this attribute will log a second message. The sysfs attribute is more useful than a module option, because it makes it easier for userspace scripts to provide consistent behaviour (according to user configuration), regardless of whether the kernel includes this change. [1] <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=559578> Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk> Signed-off-by: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Len Brown <len.brown@intel.com>
* | hp-wmi: remove double free caused by merge conflictAnisse Astier2010-01-011-2/+0
|/ | | | | | | | | | | | | | | | Commit 3e9b988e4edf065d39c1343937f717319b1c1065 "wmi: Free the allocated acpi objects through wmi_get_event_data" had the same purpose as commit 44ef00e6482e755f36629773abc2aee83a6f53e3 "hp-wmi: Fix two memleaks" This should solve this regression: http://bugzilla.kernel.org/show_bug.cgi?id=14890 Signed-off-by: Anisse Astier <anisse@astier.eu> Reported-by: Sedat Dilek <sedat.dilek@googlemail.com> Signed-off-by: Len Brown <len.brown@intel.com>
* Merge branch 'thinkpad' into releaseLen Brown2009-12-302-14/+73
|\
| * thinkpad-acpi: improve Kconfig help textHenrique de Moraes Holschuh2009-12-261-0/+5
| | | | | | | | | | | | | | | | | | Document that rfkill and ALSA functionality exists, but requires the subsystems to be available, and not modular if thinkpad-acpi is not modular. Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> Signed-off-by: Len Brown <len.brown@intel.com>
| * thinkpad-acpi: make volume subdriver optionalHenrique de Moraes Holschuh2009-12-262-0/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow the user to choose through Kconfig if the Console Audio Control interface (aka "volume subdriver") should be available or not. This not only saves some memory, but also allows the thinkpad-acpi driver to be built-in even if ALSA is modular when the console audio control interface is not wanted. This change fixes a build problem that is causing some annoyances, in a way that doesn't disable the entire driver on kernels without ALSA support. Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> Cc: Ingo Molnar <mingo@elte.hu> Cc: Amerigo Wang <amwang@redhat.com> Cc: Helight Xu <helight.xu@gmail.com> Cc: Takashi Iwai <tiwai@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
| * thinkpad-acpi: don't fail to load the entire module due to ALSA problemsHenrique de Moraes Holschuh2009-12-261-13/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | If we cannot create the ALSA mixer, it is a good reason to fail to load the volume subdriver, and not to fail to load the entire module. While at it, add more debugging messages, as the error paths are being used a lot more than I'd expect, and it is failing to set up the ALSA mixer on a number of ThinkPads. Reported-by: Peter Jordan <usernetwork@gmx.info> Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> Signed-off-by: Len Brown <len.brown@intel.com>
| * thinkpad-acpi: don't take the first ALSA slot by defaultHenrique de Moraes Holschuh2009-12-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | We don't want to be the first soundcard. We don't want to shift other soundcards out of the way either, even if they load much later. Ask ALSA to (by default) load us in one of the last three slots. This can be overriden at will using the "index" parameter. Reported-by: Whoopie <whoopie79@gmx.net> Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br> Signed-off-by: Len Brown <len.brown@intel.com>
* | ACPI: WMI: Survive BIOS with duplicate GUIDsCarlos Corbacho2009-12-301-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It would appear that in BIOS's with nVidia hooks, the GUID 05901221-D566-11D1-B2F0-00A0C9062910 is duplicated. For now, the simplest solution is to just ignore any duplicate GUIDs. These particular hooks are not currently supported/ used in the kernel, so whoever does that can figure out what the 'right' solution should be (if there's a better one). http://bugzilla.kernel.org/show_bug.cgi?id=14846 Signed-off-by: Carlos Corbacho <carlos@strangeworlds.co.uk> Reported-by: Larry Finger <Larry.Finger@lwfinger.net> Reported-by: Oldřich Jedlička <oldium.pro@seznam.cz> Signed-off-by: Len Brown <len.brown@intel.com>
* | dell-wmi - fix condition to abort driver loadingDmitry Torokhov2009-12-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | From: Dmitry Torokhov <dmitry.torokhov@gmail.com> The commit 1fdd407f4e3f2ecb453954cbebb6c22491c61853 incorrectly made driver abort loading when known GUID is present when it should have done exactly the opposite. Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Len Brown <len.brown@intel.com>
* | wmi: check find_guid() return value to prevent oopsPaul Rolland2009-12-301-4/+2
| | | | | | | | | | Signed-off-by: Paul Rolland <rol@as2917.net> Signed-off-by: Len Brown <len.brown@intel.com>
* | dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return valueLen Brown2009-12-303-3/+18
| | | | | | | | | | | | | | | | | | | | | | When acpi_evaluate_object() is passed ACPI_ALLOCATE_BUFFER, the caller must kfree the returned buffer if AE_OK is returned. The callers of wmi_get_event_data() pass ACPI_ALLOCATE_BUFFER, and thus must check its return value before accessing or kfree() on the buffer. Signed-off-by: Len Brown <len.brown@intel.com>
* | ACPI: hp-wmi, msi-wmi: clarify that wmi_install_notify_handler() returns an ↵Len Brown2009-12-302-2/+2
| | | | | | | | | | | | | | | | | | | | | | acpi_status Emphasize that that wmi_install_notify_handler() returns an acpi_status rather than -errno by by testing ACPI_SUCCESS(), ACPI_FAILURE(). No functional change in this patch, but this confusion caused a bug in dell-wmi. Signed-off-by: Len Brown <len.brown@intel.com>
* | dell-wmi: sys_init_module: 'dell_wmi'->init suspiciously returned 21, it shouldLen Brown2009-12-301-4/+5
|/ | | | | | | | | | follow 0/-E convention wmi_install_notify_handler() returns an acpi_error, but dell_wmi_init() needs return a -errno style error. Tested-by: Paul Rolland <rol@as2917.net> Signed-off-by: Len Brown <len.brown@intel.com>
* Merge branch 'misc-2.6.33' into releaseLen Brown2009-12-249-303/+423
|\
| * hp-wmi: Fix two memleaksThomas Renninger2009-12-241-1/+8
| | | | | | | | | | Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Len Brown <len.brown@intel.com>
| * acer-wmi, msi-wmi: Remove needless DMI MODULE_ALIASThomas Renninger2009-12-242-13/+0
| | | | | | | | | | | | | | | | | | | | Now that we have WMI autoloading the DMI matching is not needed anymore. Signed-off-by: Thomas Renninger <trenn@suse.de> Acked-by: Carlos Corbacho <carlos@strangeworlds.co.uk> Acked-by: Anisse Astier <anisse@astier.eu> Signed-off-by: Len Brown <len.brown@intel.com>
| * dell-wmi: do not keep driver loaded on unsupported boxesDmitry Torokhov2009-12-241-22/+19
| | | | | | | | | | | | | | | | | | There is no point in having the driver loaded in memory if we fail to locate particular WMI GUID. Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Acked-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Len Brown <len.brown@intel.com>
| * wmi: Free the allocated acpi objects through wmi_get_event_dataAnisse Astier2009-12-243-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | These function allocate an acpi object by calling wmi_get_event_data, which then calls acpi_evaluate_object, and it is not freed afterwards. And kernel doc is fixed for parameters of wmi_get_event_data. Signed-off-by: Anisse Astier <anisse@astier.eu> Acked-by: Randy Dunlap <randy.dunlap@oracle.com> Acked-by: Carlos Corbacho <carlos@strangeworlds.co.uk> Signed-off-by: Len Brown <len.brown@intel.com>
| * drivers/platform/x86/acerhdf.c: check BIOS information whether it begins ↵Peter Feuerer2009-12-241-18/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | with string of table BIOS information is now checked whether it begins with the strings stored in the BIOS table. Previous method did a strcmp, what lead to problems if BIOS information has appended whitespaces. Signed-off-by: Peter Feuerer <peter@piie.net> Cc: Borislav Petkov <petkovbb@gmail.com> Cc: Andreas Mohr <andi@lisas.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
| * acerhdf: add new BIOS versionsPeter Feuerer2009-12-241-2/+15
| | | | | | | | | | | | | | | | | | | | | | Add new BIOS versions for following netbooks: Aspire 1810xx, Packard Bell DOTMU. Signed-off-by: Peter Feuerer <peter@piie.net> Cc: Borislav Petkov <petkovbb@gmail.com> Cc: Andreas Mohr <andi@lisas.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
| * acerhdf: limit modalias matching to supportedStefan Bader2009-12-241-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BugLink: https://bugs.launchpad.net/ubuntu/+bug/435958 The module alias currently matches any Acer computer but when loaded the BIOS checks will only succeed on Aspire One models. This causes a invalid BIOS warning for all other models (seen on Aspire 4810T). This is not fatal but worries users that see this message. Limiting the moule alias to models starting with AOA or DOA for Packard Bell. Signed-off-by: Stefan Bader <stefan.bader@canonical.com> Acked-by: Borislav Petkov <petkovbb@gmail.com> Acked-by: Peter Feuerer <peter@piie.net> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
| * toshiba_acpi: convert to seq_fileAlexey Dobriyan2009-12-241-112/+147
| | | | | | | | | | | | | | | | Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Cc: John W. Linville <linville@tuxdriver.com> Cc: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
| * asus_acpi: convert to seq_fileAlexey Dobriyan2009-12-241-127/+194
| | | | | | | | | | | | | | | | Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Cc: Corentin Chary <corentincj@iksaif.net> Cc: Karol Kozimor <sziwan@users.sourceforge.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
| * fujitu-laptop: fix tests of acpi_evaluate_integer() return valueJonathan Woithe2009-12-231-4/+4
| | | | | | | | | | | | | | | | | | | | Fix tests on return value from acpi_evaluate_integer(). Based on a patch by Roel Kluin <roel.kluin@gmail.com> and incorporating suggestions from Len Brown <lenb@kernel.org>. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Jonathan Woithe <jwoithe@physics.adelaide.edu.au> Signed-off-by: Len Brown <len.brown@intel.com>
* | Merge branch 'tc1100-wmi' into releaseLen Brown2009-12-241-60/+55
|\ \
| * | tc1100-wmi - switch to using dev_pm_opsDmitry Torokhov2009-12-161-6/+16
| | | | | | | | | | | | | | | | | | | | | Also guard PM operations with CONFIG_PM. Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Len Brown <len.brown@intel.com>
| * | tc1100-wmi - add error handling for device registrationDmitry Torokhov2009-12-161-28/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Any of the platform API functions can fail; driver should be prepared to handle such failures. Also: - changed to platform_driver_probe() since the device is created right there with the driver; - added __devexit annotation to remove method; - fixed memory leak on module unload - named platform_device_del() is not enough to free platform device, need platform_device_unregister(). Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Len Brown <len.brown@intel.com>