summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2010-08-03acer-wmi: fix resource reclaim in acer_wmi_init error pathAxel Lin
This patch fixes the resource reclaim in acer_wmi_init error path. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2010-08-03X86: intel_ips, check for kzalloc properlyJiri Slaby
Stanse found that there are two NULL checks missing in ips_monitor. So check their value too and bail out appropriately if the allocation failed. While at it, add one more kfree to the fail path. It is not necessary now, but may be needed in the future when a new allocation is added. And for completeness. Also remove unneeded initialization of the variables. They are all set right after their declaration. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Matthew Garrett <mjg@redhat.com> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2010-08-03hp-wmi: add error handling for hp_wmi_initAxel Lin
Current implementation in hp_wmi_init does not check any error and always return success. This patch properly handles recource reclaim and return err in error path. Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2010-08-03classmate-laptop: should check for NULL as retval for rfkill_allocThadeu Lima de Souza Cascardo
rfkill_alloc returns NULL when it fails if RFKILL is enabled. When RFKILL is disabled, its return value of ERR_PTR(-ENODEV) is OK to use as all rfkill functions will work with it, as they are simply empty stubs. Reported-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk> Cc: Johannes Berg <johannes@sipsolutions.net> Cc: platform-driver-x86@vger.kernel.org Cc: mjg@redhat.com Cc: don@syst.com.br Cc: rpurdie@rpsys.net Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2010-08-03IPS driver: add GPU busy and turbo checkingJesse Barnes
Be sure to enable GPU turbo by default at load time and check GPU busy and MCP exceeded status correctly. Also fix up CPU power comparison and work around buggy MCH temp reporting. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2010-08-03x86 platform driver: intelligent power sharing driverJesse Barnes
Intel Core i3/5 platforms with integrated graphics support both CPU and GPU turbo mode. CPU turbo mode is opportunistic: the CPU will use any available power to increase core frequencies if thermal headroom is available. The GPU side is more manual however; the graphics driver must monitor GPU power and temperature and coordinate with a core thermal driver to take advantage of available thermal and power headroom in the package. The intelligent power sharing (IPS) driver is intended to coordinate this activity by monitoring MCP (multi-chip package) temperature and power, allowing the CPU and/or GPU to increase their power consumption, and thus performance, when possible. The goal is to maximize performance within a given platform's TDP (thermal design point). Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2010-08-03platform/x86: msi-laptop depends on SERIO_I8042Randy Dunlap
msi-laptop uses i8042_*() interfaces, so it should depend on SERIO_I8042. E.g., when SERIO_I8042=m and MSI_LAPTOP=y: msi-laptop.c:(.text+0x18a7fe): undefined reference to `i8042_install_filter' msi-laptop.c:(.init.text+0xd69d): undefined reference to `i8042_remove_filter' msi-laptop.c:(.exit.text+0x19c3): undefined reference to `i8042_remove_filter' Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Matthew Garrett <mjg@redhat.com> Cc: Lennart Poettering <mzxreary@0pointer.de>
2010-08-03classmate-laptop: depends on RFKILL or RFKILL=nThadeu Lima de Souza Cascardo
Randy Dunlap has reported that building classmate-laptop fails when CONFIG_RFKILL=m and CONFIG_ACPI_CMPC=y. He suggested depending on RFKILL, but, then, it will not be possible to select classmate-laptop when RFKILL is off. There's no known problem with building and using classmate-laptop with RFKILL off. So depend on RFKILL or RFKILL=n. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> Signed-off-by: Matthew Garrett <mjg@redhat.com> Reported-by: Randy Dunlap <randy.dunlap@oracle.com> Cc: Randy Dunlap <randy.dunlap@oracle.com> Cc: platform-driver-x86@vger.kernel.org Cc: Daniel Oliveira Nascimento <don@syst.com.br>
2010-08-03drivers/platform/x86: Eliminate a NULL pointer dereferenceJulia Lawall
Give different error messages if device_enum is NULL or if its type field has the wrong value. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r exists@ expression E,E1; identifier f; statement S1,S2,S3; @@ if ((E == NULL && ...) || ...) { ... when != if (...) S1 else S2 when != E = E1 * E->f ... when any return ...; } else S3 // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2010-08-03X86 platform: hp-wmi Better match the HP WMI query interfaceThomas Renninger
- Improve error handling, by explictly return zero for success, error otherwise - WMI query command can have arbitrary input sized params - WMI query command can have specific output sized params (0, 4, 128,..) byte I like to go on here, but this is a rather intrusive change that should be looked at first. I am sure the one or other thing can be done better or there might be typo/bug somewhere. This did not get any testing yet, only compile tested. Next steps could be: - Eventually introduce hp_wmi_perform_{read,write}_query macros - Introduce new wireless query interface (0x1B) - more Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Matthew Garrett <mjg@redhat.com> CC: linux-acpi@vger.kernel.org CC: platform-driver-x86@vger.kernel.org
2010-08-03x86 platform drivers: hp-wmi fix buffer size depending on ACPI versionThomas Renninger
Depending on ACPI version (1.0 -> 32 bit) an integer could be 32 or 64 bit long. _WED internal concatenates two integers and the return value will be 8 byte (2* 32 bit) or 16 byte (2* 64 bit) long, depending on the ACPI version. Also the data send with the WMI event is defined to be splitted into: - Event ID -> 4 bytes - Event Data -> 4 bytes This gets messed up with new ACPI versions. But it's a HP BIOS bug that may get fixed in the future -> Support both, 16 and 8 byte _WED buffers. Also the wrong assumption that from the event data sent, only the first byte is relevant got cleaned up that it fits event_id/event_data as described above. Signed-off-by: Thomas Renninger <trenn@suse.de> CC: robert.moore@intel.com Signed-off-by: Matthew Garrett <mjg@redhat.com> CC: platform-driver-x86@vger.kernel.org CC: linux-acpi@vger.kernel.org
2010-08-03x86 platform drivers: hp-wmi Set placeholder for unimplemented eventsThomas Renninger
Rather than print unknown events when we know what caused them Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Matthew Garrett <mjg@redhat.com> CC: linux-acpi@vger.kernel.org CC: platform-driver-x86@vger.kernel.org
2010-08-03x86 platform drivers: hp-wmi Add media key 0x20e8Thomas Renninger
Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Matthew Garrett <mjg@redhat.com> CC: linux-acpi@vger.kernel.org CC: platform-driver-x86@vger.kernel.org
2010-08-03x86 platform drivers: hp-wmi Use consistent prefix string for messages.Thomas Renninger
Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Matthew Garrett <mjg@redhat.com> CC: linux-acpi@vger.kernel.org CC: platform-driver-x86@vger.kernel.org
2010-08-03x86 platform drivers: hp-wmi Catch and log unkown event and key codes correctlyThomas Renninger
Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Matthew Garrett <mjg@redhat.com> CC: linux-acpi@vger.kernel.org CC: platform-driver-x86@vger.kernel.org
2010-08-03x86 platform drivers: hp-wmi Reorder event id processingThomas Renninger
Event id 0x4 defines the hotkey event. No need (or even wrong) to query HPWMI_HOTKEY_QUERY if event id is != 0x4. Reorder the eventcode conditionals and use switch case instead of if/else. Use an enum for the event ids cases. Signed-off-by: Thomas Renninger <trenn@suse.de> Signed-off-by: Matthew Garrett <mjg@redhat.com> CC: linux-acpi@vger.kernel.org CC: platform-driver-x86@vger.kernel.org
2010-08-03intel_menlow: fix memory leaks in error pathAxel Lin
This patch includes below fixes in error path: 1. fix a memory leak if device_create_file failed in intel_menlow_add_one_attribute 2. properly free added attributes before return error in intel_menlow_register_sensor error handler 3. properly call acpi_bus_unregister_driver before return error in intel_menlow_module_init Signed-off-by: Axel Lin <axel.lin@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
2010-08-03OMAP: DSS2: Taal: CABC workaround is Taal specificJani Nikula
Prepare for supporting panels other than Taal in this driver. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Add regulator configuration supportTomi Valkeinen
Add support for configuring regulators in the panel specific configuration data. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Print panel name in addition to revisionJani Nikula
The driver will support other panels in addition to Taal, print also the name. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Add panel specific configuration structureJani Nikula
Add a structure for panel specific configration to be able to support more than one panel in the future. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Configure ESD check in DSI panel dataJani Nikula
Make ESD check usage configurable in DSI panel data, as opposed to a define. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Use Nokia DSI panel dataTomi Valkeinen
Get board specific information from the Nokia DSI panel data structure instead of the DSS. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Add proper external TE supportJani Nikula
Add gpio irq based external TE support with timeout. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Change probe error handling labelsJani Nikula
Switch from numbered to named labels to make it easier to add new labels for error handling. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Change ESD work managementJani Nikula
Move ESD work queuing and cancelling out of taal_power_on/off() to avoid problems related to taal_esd_work() calling the power on/off functions. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Check taal_power_on() return value in taal_resume()Jani Nikula
Change state only if power on was succesful. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Change DSI bus locking to avoid deadlock in ESD workJani Nikula
Move dsi_bus_lock/unlock() out of taal_power_on/off() to avoid deadlock in taal_esd_work(). Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Ensure panel is enabled in enable_te() and run_test()Jani Nikula
Bail out from taal_enable_te() and taal_run_test() if panel is not enabled. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Improve taal_power_on() error handlingJani Nikula
Check return values and bail out on errors. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Remove ESD work cancel from driver probe error handlingJani Nikula
ESD work is never queued in probe, no need to cancel it on probe error. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Fix request_irq() error handlingJani Nikula
Separate gpio_request() and request_irq() error handling. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Remove platform enable/disableJani Nikula
After the addition of proper hardware reset, taal_hw_reset(), there's no need for an additional platform enable/disable. Remove them. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Add locks to protect taal data accessJani Nikula
Avoid potential race conditions in sysfs access to taal data. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: Add panel hardware resetJani Nikula
Issue a proper reset pulse on the reset line instead of just doing power on/off. Signed-off-by: Jani Nikula <ext-jani.1.nikula@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Taal: add locks to taal_bl_update_statusTomi Valkeinen
taal_bl_update_status was missing locks to protect taal_data. This caused a kernel crash randomly, as the code attempted to set the brightness while the OMAP's DSI block was actually disabled. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: DSI: change DSI timeout functionsTomi Valkeinen
Using nanoseconds as arguments to functions that set the DSI timeouts was perhaps not so good idea. The timeouts are based on different DSI clocks, so the possible range for the timeouts vary greatly depending on the clocks. Also, the multipliers used with the timeouts cause big gaps in the timeout range, meaning that the nanosecond based functions could cause the timeout to be quite far from the intended value. This patch changes the functions to take the plain tick values with the multiplier enable/disable bits, and sets the TA/LP_RX/HS_TX timeouts to maximum. While the timeouts could be much lower, the fact is that when TA/LP_RX/HS_TX timeout happens, we are in an error situation and not in a hurry anyway. STOP_STATE_COUNTER is a different matter, but it is only used at initialization time, and won't normally affect the performance. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: DSI: handle error in synchronous writeTomi Valkeinen
Check if the peripheral answered something, and if so, dump the data and return an error. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: DSI: change dsi_vc_dcs_read_2 parametersTomi Valkeinen
Change dsi_vc_dcs_read_2() data parameter to two u8 parameters to make the byte-order clear. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: DSI: use a private workqueueTomi Valkeinen
Using the shared workqueue led to to a deadlock in the case where the display was unblanked via keyboard. What happens is something like this: - User presses a key context 1: - drivers/char/keyboard.c calls schedule_console_callback() - fb_unblank takes the console semaphore - dsi bus lock is taken, and frame transfer is started (dsi bus lock is left on) - Unblank code tries to set the panel backlight, which tries to take dsi bus lock, but is blocked while the frame transfer is going on context 2, shared workqueue, console_callback in drivers/char/vt.c: - Tries to take console semaphore - Blocks, as console semaphore is being held by context 1 - No other shared workqueue work can be run context 3, HW irq, caused by FRAMEDONE interrupt: - Interrupt handler schedules framedone-work in shared workqueue - Framedone-work is never ran, as the shared workqueue is blocked. This means that the unblank thread stays blocked, which means that context 2 stays blocked. While I think the real problem is in keyboard/virtual terminal code, using a private workqueue in the DSI driver is perhaps safer and more robust than using the shared one. The DSI works should not be delayed more than a millisecond or so, and even if the private workqueue gives us no hard promise of doing so, it's still safer bet than the shared workqueue. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: DSI: print errors in dsi_vc_flush_receive_data()Tomi Valkeinen
dsi_vc_flush_receive_data() is meant to dump data when something has gone wrong, and thus we should use DSSERR, not DSSDBG. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: OMAPFB: Add some locking debug checksVille Syrjälä
Trigger WARN_ON() messages from various places in the code in case the memory region is not currently locked. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: OMAPFB: Make lockdep happyVille Syrjälä
When more than one memory region needs to be lockd at the same time use the memory region id to fix the order in which the locks are taken. Also one needs to use the _nested() versions of the locking primitives. The memory region id can serve as the lock class there as well. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: OMAPFB: Convert the memory region locking to rwsemVille Syrjälä
R/W semaphore is a good fit for the memory region locking pattern. So use it. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: OMAPFB: Add locking for memory regionsVille Syrjälä
Add locking to the memory regions to make sure the memory region size won't be changed while some other piece of code is performing some checks or setup based on that information. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: OMAPFB: Add support for switching memory regionsVille Syrjälä
Separate the memory region from the framebuffer device a little bit. It's now possible to select the memory region used by the framebuffer device using the new mem_idx parameter of omapfb_plane_info. If the mem_idx is specified it will be interpreted as an index into the memory regions array, if it's not specified the framebuffer's index is used instead. So by default each framebuffer keeps using it's own memory region which preserves backwards compatibility. This allows cloning the same memory region to several overlays and yet each overlay can be controlled independently since they can be associated with separate framebuffer devices. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: OMAPFB: Skip unnecessary set_overlay_info()Ville Syrjälä
In omapfb_enable_overlay() if the overlay state is already what we want skip the set_overlay_info(). Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: OMAPFB: Check var even if there isn't memoryVille Syrjälä
If video memory hasn't been allocate have check_fb_var() still check most of the settings, just skip the ones involving the size of the memory region. Also skip the memory address calculations in omapfb_setup_overlay() if there's no memory. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: OMAPFB: Refactor overlay address calculationsVille Syrjälä
Split the overlay address calculations into their own function. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
2010-08-03OMAP: DSS2: Fix update area calculations with multiple scaled overlaysTomi Valkeinen
When there are multiple scaled overlays simply checking whether the update area intersects any of them in order is not enough. If eg. VID1 starts out completely outside the update area but VID2 causes the update area to increase in such a way that VID1 now falls partially within the increased update area VID1 should be rechecked and the update area possibly increased even further to fully encompass VID1. So simply keep looping over the overlays until such time that none of the overlays caused the update area to change. Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>