7 years agov4l: Move the media/v4l2-mediabus.h header to include/linux
Laurent Pinchart [Mon, 15 Mar 2010 22:33:31 +0000 (23:33 +0100)]
v4l: Move the media/v4l2-mediabus.h header to include/linux

The header defines the v4l2_mbus_framefmt structure which will be used
by the V4L2 subdevs userspace API.

Change the type of the v4l2_mbus_framefmt::code field to __u32, as enum
sizes can differ between different ABIs on the same architectures.

Signed-off-by: Laurent Pinchart <>
7 years agov4l: Make v4l2_subdev inherit from media_entity
Laurent Pinchart [Wed, 9 Dec 2009 11:40:08 +0000 (12:40 +0100)]
v4l: Make v4l2_subdev inherit from media_entity

V4L2 subdevices are media entities. As such they need to inherit from
(include) the media_entity structure.

When registering/unregistering the subdevice, the media entity is
automatically registered/unregistered. The entity is acquired on device
open and released on device close.

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Sakari Ailus <>
7 years agov4l: Make video_device inherit from media_entity
Laurent Pinchart [Wed, 9 Dec 2009 11:40:10 +0000 (12:40 +0100)]
v4l: Make video_device inherit from media_entity

V4L2 devices are media entities. As such they need to inherit from
(include) the media_entity structure.

When registering/unregistering the device, the media entity is
automatically registered/unregistered. The entity is acquired on device
open and released on device close.

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Sakari Ailus <>
7 years agov4l: Add a media_device pointer to the v4l2_device structure
Laurent Pinchart [Wed, 9 Dec 2009 11:40:05 +0000 (12:40 +0100)]
v4l: Add a media_device pointer to the v4l2_device structure

The pointer will later be used to register/unregister media entities
when registering/unregistering a v4l2_subdev or a video_device.

With the introduction of media devices, device drivers need to store a
pointer to a driver-specific structure in the device's drvdata.
v4l2_device can't claim ownership of the drvdata anymore.

To maintain compatibility with drivers that rely on v4l2_device storing
a pointer to itself in the device's drvdata, v4l2_device_register() will
keep doing so if the drvdata is NULL.

Signed-off-by: Laurent Pinchart <>
7 years agomedia: Pipelines and media streams
Laurent Pinchart [Wed, 25 Aug 2010 12:00:41 +0000 (15:00 +0300)]
media: Pipelines and media streams

Drivers often need to associate pipeline objects to entities, and to
take stream state into account when configuring entities and links. The
pipeline API helps drivers manage that information.

When starting streaming, drivers call media_entity_pipeline_start(). The
function marks all entities connected to the given entity through
enabled links, either directly or indirectly, as streaming. Similarly,
when stopping the stream, drivers call media_entity_pipeline_stop().

The media_entity_pipeline_start() function takes a pointer to a media
pipeline and stores it in every entity in the graph. Drivers should
embed the media_pipeline structure in higher-level pipeline structures
and can then access the pipeline through the media_entity structure.

Link configuration will fail with -EBUSY by default if either end of the
link is a streaming entity, unless the link is marked with the

Signed-off-by: Laurent Pinchart <>
7 years agomedia: Links setup
Laurent Pinchart [Wed, 9 Dec 2009 11:40:03 +0000 (12:40 +0100)]
media: Links setup

Create the following ioctl and implement it at the media device level to
setup links.

- MEDIA_IOC_SETUP_LINK: Modify the properties of a given link

The only property that can currently be modified is the ENABLED link
flag to enable/disable a link. Links marked with the IMMUTABLE link flag
can not be enabled or disabled.

Enabling or disabling a link has effects on entities' use count. Those
changes are automatically propagated through the graph.

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Stanimir Varbanov <>
Signed-off-by: Sakari Ailus <>
7 years agomedia: Entities, pads and links enumeration
Laurent Pinchart [Wed, 9 Dec 2009 11:40:01 +0000 (12:40 +0100)]
media: Entities, pads and links enumeration

Create the following two ioctls and implement them at the media device
level to enumerate entities, pads and links.

- MEDIA_IOC_ENUM_ENTITIES: Enumerate entities and their properties
- MEDIA_IOC_ENUM_LINKS: Enumerate all pads and links for a given entity

Entity IDs can be non-contiguous. Userspace applications should
enumerate entities using the MEDIA_ENT_ID_FLAG_NEXT flag. When the flag
is set in the entity ID, the MEDIA_IOC_ENUM_ENTITIES will return the
next entity with an ID bigger than the requested one.

Only forward links that originate at one of the entity's source pads are
returned during the enumeration process.

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Sakari Ailus <>
7 years agomedia: Media device information query
Laurent Pinchart [Wed, 18 Aug 2010 14:41:22 +0000 (16:41 +0200)]
media: Media device information query

Create the following ioctl and implement it at the media device level to
query device information.

- MEDIA_IOC_DEVICE_INFO: Query media device information

The ioctl and its data structure are defined in the new kernel header
linux/media.h available to userspace applications.

Signed-off-by: Laurent Pinchart <>
7 years agomedia: Entity use count
Laurent Pinchart [Sun, 7 Mar 2010 18:04:59 +0000 (20:04 +0200)]
media: Entity use count

Due to the wide differences between drivers regarding power management
needs, the media controller does not implement power management.
However, the media_entity structure includes a use_count field that
media drivers can use to track the number of users of every entity for
power management needs.

The use_count field is owned by media drivers and must not be touched by
entity drivers. Access to the field must be protected by the media
device graph_mutex lock.

Signed-off-by: Laurent Pinchart <>
7 years agomedia: Entity graph traversal
Sakari Ailus [Sun, 7 Mar 2010 19:14:14 +0000 (21:14 +0200)]
media: Entity graph traversal

Add media entity graph traversal. The traversal follows enabled links by
depth first. Traversing graph backwards is prevented by comparing the next
possible entity in the graph with the previous one. Multiply connected
graphs are thus not supported.

Signed-off-by: Sakari Ailus <>
Signed-off-by: Laurent Pinchart <>
Signed-off-by: Vimarsh Zutshi <>
7 years agomedia: Entities, pads and links
Laurent Pinchart [Wed, 9 Dec 2009 11:40:00 +0000 (12:40 +0100)]
media: Entities, pads and links

As video hardware pipelines become increasingly complex and
configurable, the current hardware description through v4l2 subdevices
reaches its limits. In addition to enumerating and configuring
subdevices, video camera drivers need a way to discover and modify at
runtime how those subdevices are connected. This is done through new
elements called entities, pads and links.

An entity is a basic media hardware building block. It can correspond to
a large variety of logical blocks such as physical hardware devices
(CMOS sensor for instance), logical hardware devices (a building block
in a System-on-Chip image processing pipeline), DMA channels or physical

A pad is a connection endpoint through which an entity can interact with
other entities. Data (not restricted to video) produced by an entity
flows from the entity's output to one or more entity inputs. Pads should
not be confused with physical pins at chip boundaries.

A link is a point-to-point oriented connection between two pads, either
on the same entity or on different entities. Data flows from a source
pad to a sink pad.

Links are stored in the source entity. To make backwards graph walk
faster, a copy of all links is also stored in the sink entity. The copy
is known as a backlink and is only used to help graph traversal.

The entity API is made of three functions:

- media_entity_init() initializes an entity. The caller must provide an
array of pads as well as an estimated number of links. The links array
is allocated dynamically and will be reallocated if it grows beyond the
initial estimate.

- media_entity_cleanup() frees resources allocated for an entity. It
must be called during the cleanup phase after unregistering the entity
and before freeing it.

- media_entity_create_link() creates a link between two entities. An
entry in the link array of each entity is allocated and stores pointers
to source and sink pads.

When a media device is unregistered, all its entities are unregistered

The code is based on Hans Verkuil <> initial work.

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Sakari Ailus <>
7 years agomedia: Media device
Laurent Pinchart [Wed, 9 Dec 2009 11:39:58 +0000 (12:39 +0100)]
media: Media device

The media_device structure abstracts functions common to all kind of
media devices (v4l2, dvb, alsa, ...). It manages media entities and
offers a userspace API to discover and configure the media device
internal topology.

Signed-off-by: Laurent Pinchart <>
7 years agomedia: Media device node support
Laurent Pinchart [Wed, 9 Dec 2009 11:39:56 +0000 (12:39 +0100)]
media: Media device node support

The media_devnode structure provides support for registering and
unregistering character devices using a dynamic major number. Reference
counting is handled internally, making device drivers easier to write
without having to solve the open/disconnect race condition issue over
and over again.

The code is based on video/v4l2-dev.c.

Signed-off-by: Laurent Pinchart <>
7 years agov4l: subdev: Events support
Sakari Ailus [Wed, 3 Mar 2010 15:49:38 +0000 (17:49 +0200)]
v4l: subdev: Events support

Provide v4l2_subdevs with v4l2_event support. Subdev drivers only need very
little to support events.

Signed-off-by: Sakari Ailus <>
Signed-off-by: David Cohen <>
Signed-off-by: Laurent Pinchart <>
7 years agov4l: subdev: Control ioctls support
Laurent Pinchart [Wed, 9 Dec 2009 11:39:54 +0000 (12:39 +0100)]
v4l: subdev: Control ioctls support

Pass the control-related ioctls to the subdev driver through the control

Signed-off-by: Laurent Pinchart <>
7 years agov4l: subdev: Uninline the v4l2_subdev_init function
Laurent Pinchart [Wed, 9 Dec 2009 11:38:52 +0000 (12:38 +0100)]
v4l: subdev: Uninline the v4l2_subdev_init function

The function isn't small or performance sensitive enough to be inlined.

Signed-off-by: Laurent Pinchart <>
7 years agov4l: subdev: Add device node support
Laurent Pinchart [Wed, 9 Dec 2009 11:38:49 +0000 (12:38 +0100)]
v4l: subdev: Add device node support

Create a device node named subdevX for every registered subdev.

As the device node is registered before the subdev core::s_config
function is called, return -EGAIN on open until initialization

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Vimarsh Zutshi <>
7 years agov4l: subdev: Merge v4l2_i2c_new_subdev_cfg and v4l2_i2c_new_subdev
Laurent Pinchart [Thu, 8 Jul 2010 10:01:09 +0000 (12:01 +0200)]
v4l: subdev: Merge v4l2_i2c_new_subdev_cfg and v4l2_i2c_new_subdev

v4l2_i2c_new_subdev is a thin wrapper around v4l2_i2c_new_subdev_cfg,
which is itself a wrapper around v4l2_i2c_new_subdev_board.

The intermediate v4l2_i2c_new_subdev_cfg function is called directly by
the ivtv and cafe-ccic drivers only. Merge it with v4l2_i2c_new_subdev
and use v4l2_i2c_new_subdev_board in the ivtv and cafe-ccic drivers.

Signed-off-by: Laurent Pinchart <>
7 years agov4l: subdev: Don't require core operations
Laurent Pinchart [Mon, 31 May 2010 08:33:06 +0000 (11:33 +0300)]
v4l: subdev: Don't require core operations

There's no reason to require subdevices to implement the core
operations. Remove the check for non-NULL core operations when
initializing the subdev.

Signed-off-by: Laurent Pinchart <>
7 years agov4l: Share code between video_usercopy and video_ioctl2
Laurent Pinchart [Mon, 12 Jul 2010 14:09:41 +0000 (16:09 +0200)]
v4l: Share code between video_usercopy and video_ioctl2

The two functions are mostly identical. They handle the copy_from_user
and copy_to_user operations related with V4L2 ioctls and call the real
ioctl handler.

Create a __video_usercopy function that implements the core of
video_usercopy and video_ioctl2, and call that function from both.

Signed-off-by: Laurent Pinchart <>
7 years agoBluetooth: btwilink driver
Pavan Savoy [Tue, 4 Jan 2011 10:59:48 +0000 (10:59 +0000)]
Bluetooth: btwilink driver

-- patch description --

This is the bluetooth protocol driver for the TI WiLink7 chipsets.
Texas Instrument's WiLink chipsets combine wireless technologies
like BT, FM, GPS and WLAN onto a single chip.

This Bluetooth driver works on top of the TI_ST shared transport
line discipline driver which also allows other drivers like
FM V4L2 and GPS character driver to make use of the same UART interface.

Kconfig and Makefile modifications to enable the Bluetooth
driver for Texas Instrument's WiLink 7 chipset.

Signed-off-by: Pavan Savoy <>
7 years agodrivers:misc:ti-st: change protocol parse logic
Pavan Savoy [Tue, 4 Jan 2011 10:59:47 +0000 (10:59 +0000)]
drivers:misc:ti-st: change protocol parse logic

TI shared transport driver had to specifically know the
protocol headers for each type of data it can receive to
properly re-assemble data if its fragmented during UART
transaction or fragment if the data is an assembly of

different protocol data.

Now the individual protocol drivers provide enough header
information for shared transport driver to do this in a
generic way applicable for all protocols.

Signed-off-by: Pavan Savoy <>
7 years agodrivers:media:radio: Update Kconfig and Makefile for wl128x FM driver.
Manjunatha Halli [Tue, 11 Jan 2011 11:31:27 +0000 (11:31 +0000)]
drivers:media:radio: Update Kconfig and Makefile for wl128x FM driver.

Signed-off-by: Manjunatha Halli <>
Reviewed-by: Hans Verkuil <>
7 years agodrivers:media:radio: wl128x: Kconfig & Makefile for wl128x driver
Manjunatha Halli [Tue, 11 Jan 2011 11:31:26 +0000 (11:31 +0000)]
drivers:media:radio: wl128x: Kconfig & Makefile for wl128x driver

Signed-off-by: Manjunatha Halli <>
Reviewed-by: Hans Verkuil <>
7 years agodrivers:media:radio: wl128x: FM driver TX sources
Manjunatha Halli [Tue, 11 Jan 2011 11:31:25 +0000 (11:31 +0000)]
drivers:media:radio: wl128x: FM driver TX sources

This has implementation for FM TX functionality.
It communicates with FM V4l2 module and FM common module.

Signed-off-by: Manjunatha Halli <>
Reviewed-by: Hans Verkuil <>
7 years agodrivers:media:radio: wl128x: FM driver RX sources
Manjunatha Halli [Tue, 11 Jan 2011 11:31:24 +0000 (11:31 +0000)]
drivers:media:radio: wl128x: FM driver RX sources

This has implementation for FM RX functionality.
It communicates with FM V4l2 module and FM common module

Signed-off-by: Manjunatha Halli <>
Reviewed-by: Hans Verkuil <>
7 years agodrivers:media:radio: wl128x: FM Driver Common sources
Manjunatha Halli [Tue, 11 Jan 2011 11:31:23 +0000 (11:31 +0000)]
drivers:media:radio: wl128x: FM Driver Common sources

These are the sources for the common interfaces required by the
FM V4L2 driver for TI WL127x and WL128x chips.

These implement the FM channel-8 protocol communication with the
chip. This makes use of the Shared Transport as its transport.

Signed-off-by: Manjunatha Halli <>
Reviewed-by: Hans Verkuil <>
7 years agodrivers:media:radio: wl128x: FM Driver V4L2 sources
Manjunatha Halli [Tue, 11 Jan 2011 11:31:22 +0000 (11:31 +0000)]
drivers:media:radio: wl128x: FM Driver V4L2 sources

This module interfaces V4L2 subsystem and FM common module.
It registers itself with V4L2 as Radio module.

Signed-off-by: Manjunatha Halli <>
Reviewed-by: Hans Verkuil <>
7 years agodrivers:media:radio: wl128x: FM Driver common header file
Manjunatha Halli [Tue, 11 Jan 2011 11:31:21 +0000 (11:31 +0000)]
drivers:media:radio: wl128x: FM Driver common header file

These are common headers used in FM submodules (FM V4L2,
FM common, FM Rx,and FM TX).

Signed-off-by: Manjunatha Halli <>
Reviewed-by: Hans Verkuil <>
7 years agowl12xx: Unset bssid filter, ssid and bssid from firmware on disassoc
Juuso Oikarinen [Mon, 22 Nov 2010 10:59:08 +0000 (12:59 +0200)]
wl12xx: Unset bssid filter, ssid and bssid from firmware on disassoc

On the disassociation event from the mac80211, the wl12xx driver does not
clear the chipset configuration related to the AP - i.e. it does not perform
a DISCONNECT and then a JOIN with zero SSID and dummy BSSID. Also, it does not
unset the BSSID filter.

Often this is not a problem, as the above is performed upon entering idle
state. But if a scenario arises where a new association is attempted without
cycling through idle state, the new association will fail.

Fix this by resetting the firmware state on disassociation.

Signed-off-by: Juuso Oikarinen <>
Reviewed-by: Luciano Coelho <>
Signed-off-by: Luciano Coelho <>
7 years agowl1271: set wl->vif only if add_interface succeeded.
Eliad Peller [Thu, 28 Oct 2010 19:46:43 +0000 (21:46 +0200)]
wl1271: set wl->vif only if add_interface succeeded.

set wl->vif to the newly created interface only after the firmware booted
successfully. on the way - make the function flow more clear.

Signed-off-by: Eliad Peller <>
Reviewed-by: Luciano Coelho <>
Signed-off-by: Luciano Coelho <>
7 years agowl1271: 11n Support, functionality and configuration ability
Shahar Levi [Wed, 13 Oct 2010 14:09:41 +0000 (16:09 +0200)]
wl1271: 11n Support, functionality and configuration ability

Add 11n ability in scan, connection and using MCS rates.
The configuration is temporary due to the code incomplete and
still in testing process. That plans to be remove in the future.

Signed-off-by: Shahar Levi <>
Reviewed-by: Luciano Coelho <>
Signed-off-by: Luciano Coelho <>
7 years agowl1271: 11n Support, ACX Commands
Shahar Levi [Wed, 13 Oct 2010 14:09:40 +0000 (16:09 +0200)]
wl1271: 11n Support, ACX Commands

Added ACX command to the FW for 11n support.

Signed-off-by: Shahar Levi <>
Reviewed-by: Luciano Coelho <>
Signed-off-by: Luciano Coelho <>
7 years agowl1271: 11n Support, Add Definitions
Shahar Levi [Wed, 13 Oct 2010 14:09:39 +0000 (16:09 +0200)]
wl1271: 11n Support, Add Definitions

Two acx commands: ht_capabilities & ht_information, 11n sta capabilities

Signed-off-by: Shahar Levi <>
Reviewed-by: Luciano Coelho <>
Signed-off-by: Luciano Coelho <>
7 years agowl12xx: Read MAC address from NVS file on HW startup
Arik Nemtsov [Sat, 16 Oct 2010 19:49:52 +0000 (21:49 +0200)]
wl12xx: Read MAC address from NVS file on HW startup

Try to read the MAC address from the on-disk NVS file.
A non-zero MAC address is required to add an AP interface.

Signed-off-by: Arik Nemtsov <>
Reviewed-by: Luciano Coelho <>
Signed-off-by: Luciano Coelho <>
7 years agoOMAP: Enable Magic SysRq on serial console ttyOx
Thomas Weber [Wed, 19 Jan 2011 08:41:01 +0000 (09:41 +0100)]
OMAP: Enable Magic SysRq on serial console ttyOx

Magic SysRq key is not working for OMAP on new serial
console ttyOx because SUPPORT_SYSRQ is not defined
for omap-serial.

This patch defines SUPPORT_SYSRQ in omap-serial and
enables handling of Magic SysRq character.

Signed-off-by: Thomas Weber <>
7 years agoomap3: Add basic support for 720MHz part
Sanjeev Premi [Tue, 18 Jan 2011 07:49:55 +0000 (13:19 +0530)]
omap3: Add basic support for 720MHz part

This patch adds support for new speed enhanced parts with ARM
and IVA running at 720MHz and 520MHz respectively. These parts
can be probed at run-time by reading PRODID.SKUID[3:0] at
0x4830A20C [1].

This patch specifically does following:
 * Detect devices capable of 720MHz.
 * Add new OPP
 * Ensure that OPP is conditionally enabled.
 * Check for presence of IVA before attempting to enable
   the corresponding OPP.


Signed-off-by: Sanjeev Premi <>
7 years agoOMAP3: beagle xm: enable upto 1GHz OPP
Nishanth Menon [Wed, 5 Jan 2011 20:16:59 +0000 (14:16 -0600)]
OMAP3: beagle xm: enable upto 1GHz OPP

Beagle XM uses 3730 and the board design allows enabling 800MHz and 1GHz
OPPs. tweak the default table to allow for higher OPP tables

Reported-by: Koen Kooi <>
Signed-off-by: Nishanth Menon <>
7 years agoomap3|4: opp: make omapx_opp_init non-static
Nishanth Menon [Wed, 5 Jan 2011 20:14:55 +0000 (14:14 -0600)]
omap3|4: opp: make omapx_opp_init non-static

omap3 and omap4 opp_init should be made non-static to allow
for platform specific opp table tweaking. making these static
conflicts with the definition in pm.h(global) as well.
we include pm.h as well to ensure that there are no such prototype
conflicts with actual implementation in the future.

Signed-off-by: Nishanth Menon <>
7 years agoOMAP3: Add voltage dependency table for VDD1.
Thara Gopinath [Wed, 18 Aug 2010 10:52:49 +0000 (16:22 +0530)]
OMAP3: Add voltage dependency table for VDD1.

In OMAP3, for perfomrance reasons when VDD1 is at voltage above
1.075V, VDD2 should be at 1.15V for perfomrance reasons. This
patch introduce this cross VDD dependency for OMAP3 VDD1.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP3: Introduce voltage domain info in the hwmod structures.
Thara Gopinath [Wed, 18 Aug 2010 10:52:43 +0000 (16:22 +0530)]
OMAP3: Introduce voltage domain info in the hwmod structures.

This patch adds voltage domain info in the relevant
device hwmod structures so as to enable OMAP3 DVFS

Signed-off-by: Thara Gopinath <>
7 years agoOMAP3: Update cpufreq driver to use the new set_rate API
Thara Gopinath [Fri, 2 Jul 2010 07:37:49 +0000 (13:07 +0530)]
OMAP3: Update cpufreq driver to use the new set_rate API

This patch updates the cpufreq driver to use the device
set rate API to scale the mpu frequency for OMAP3.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP3: Introduce custom set rate and get rate APIs for scalable devices
Thara Gopinath [Wed, 18 Aug 2010 10:52:32 +0000 (16:22 +0530)]
OMAP3: Introduce custom set rate and get rate APIs for scalable devices

This patch also introduces omap3_mpu_set_rate, omap3_iva_set_rate,
omap3_l3_set_rate, omap3_mpu_get_rate, omap3_iva_get_rate,
omap3_l3_get_rate as device specific set rate and get rate
APIs for OMAP3 mpu, iva and l3_main devices. This patch also
calls into omap_device_populate_rate_fns during system init to register
various set_rate and get_rate APIs with the omap device layer

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: Disable smartreflex across DVFS
Thara Gopinath [Fri, 2 Jul 2010 07:36:57 +0000 (13:06 +0530)]
OMAP: Disable smartreflex across DVFS

This patch disables smartreflex for a particular voltage
domain when the the voltage domain and the devices belonging
to it is being scaled and re-enables it back once the scaling
is done.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: Introduce device scale
Thara Gopinath [Fri, 2 Jul 2010 07:37:35 +0000 (13:07 +0530)]
OMAP: Introduce device scale

This patch adds omap_device_scale API  which can be used to generic
device rate scaling.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: Introduce dependent voltage domain support.
Thara Gopinath [Fri, 2 Jul 2010 07:36:57 +0000 (13:06 +0530)]
OMAP: Introduce dependent voltage domain support.

There could be dependencies between various voltage domains for
maintaining system performance or hardware limitation reasons
like VDD<X> should be at voltage v1 when VDD<Y> is at voltage v2.
This patch introduce dependent vdd information structures in the
voltage layer which can be used to populate these dependencies
for a voltage domain. This patch also adds support to scale
the dependent vdd and the scalable devices belonging to it
during the scaling of a main vdd through omap_voltage_scale.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: Voltage layer changes to support DVFS.
Thara Gopinath [Fri, 29 Oct 2010 15:13:34 +0000 (20:43 +0530)]
OMAP: Voltage layer changes to support DVFS.

This patch introduces an API to take in the voltage domain and the
new voltage as parameter and to scale all the scalable devices
associated with the the voltage domain to the rate corresponding to the
new voltage and scale the voltage domain to the new voltage.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: Introduce device specific set rate and get rate in omap_device structure
Thara Gopinath [Fri, 29 Oct 2010 15:13:29 +0000 (20:43 +0530)]
OMAP: Introduce device specific set rate and get rate in omap_device structure

This patch extends the omap_device structure to contain
pointers to scale the operating rate of the
device and to retrieve the operating rate of the device.
This patch also adds the three new APIs in the omap device layer
namely omap_device_set_rate that can be called to set a new operating
rate for a device, omap_device_get_rate that can be called to retrieve
the operating frequency for a device and omap_device_populate_rate_fns
to populte the device specific set_rate and get_rate API's.
The omap_device_set_rate and omap_device_get_rate does some routine error
checks and finally calls into the device specific set_rate
and get_rate APIs populated through omap_device_populate_rate_fns.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: Introduce API to register a device with a voltagedomain
Thara Gopinath [Fri, 29 Oct 2010 15:13:24 +0000 (20:43 +0530)]
OMAP: Introduce API to register a device with a voltagedomain

This patch adds an API in the voltage layer that
can be used  during omap_device_build to register the built
device with the voltage domain. This API is to be typically called
only once per device during the device registeration. This approach
makes it easy during dvfs to scale all the devices associated with
a voltage domain and then scale the voltage domain.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: Introduce API in the OPP layer to find the opp entry corresponding to a voltage.
Thara Gopinath [Fri, 29 Oct 2010 15:13:10 +0000 (20:43 +0530)]
OMAP: Introduce API in the OPP layer to find the opp entry corresponding to a voltage.

This patch adds an API in the opp layer to get the opp table entry
corresponding to the voltage passed as the parameter.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: Introduce a user list for each voltage domain instance in the voltage driver.
Thara Gopinath [Fri, 29 Oct 2010 15:13:07 +0000 (20:43 +0530)]
OMAP: Introduce a user list for each voltage domain instance in the voltage driver.

This patch introduces a user list of devices associated with each
voltage domain instance. The user list is implemented using plist
structure with priority node populated with the voltage values.
This patch also adds an API which will take in a device and
requested voltage as parameters, adds the info to the user list
and returns back the maximum voltage requested by all the user
devices. This can be used anytime to get the voltage that the
voltage domain instance can be transitioned into.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: PM: CPUFREQ: Fix conditional compilation
Silesh C V [Wed, 29 Sep 2010 09:22:54 +0000 (14:52 +0530)]
OMAP: PM: CPUFREQ: Fix conditional compilation

Fix conditional compilation. A conditional expresiion
should follow "#elif", in this case #elif clause should
check whether CONFIG_ARCH_OMAP3 is defined or not
(ie. defined(CONFIG_ARCH_OMAP3)) rather than checking for
the value of the macro.

Signed-off-by: Silesh C V <>
7 years agoOMAP3 PM: CPUFreq driver for OMAP3
Rajendra Nayak [Mon, 10 Nov 2008 11:30:25 +0000 (17:00 +0530)]
OMAP3 PM: CPUFreq driver for OMAP3

CPUFreq driver for OMAP3

With additional fixes and cleanups from Tero Kristo:
- Fix rate calculation bug in omap3_select_table_rate
- Refreshed DVFS VDD1 control against latest clock fw

Signed-off-by: Tero Kristo <>
Signed-off-by: Rajendra Nayak <>
OMAP3: PM: CPUFreq: Fix omap_getspeed.

Signed-off-by: Peter 'p2' De Schrijver <>
Make sure omap cpufreq driver initializes after cpufreq framework and governors

Signed-off-by: Peter 'p2' De Schrijver <>
merge: CPUFreq: remove obsolete funcs

OMAP3 clock: Update cpufreq driver

This patch removes all refrences to virtual clock
nodes in CPUFreq driver.

Signed-off-by: Rajendra Nayak <>
Signed-off-by: Tero Kristo <>
Signed-off-by: Jean Pihet <>
PM: Prevent direct cpufreq scaling during initialization

It is seen that the OMAP specific cpufreq initialization code tries to
scale the MPU frequency to the highest possible without taking care of
the voltage level. On power on reset the power IC does not provide the
necessary voltage for the highest available MPU frequency (that would
satisfy all Si families). This potentially is an window of opportunity
for things to go wrong.

Signed-off-by: Romit Dasgupta <>
Signed-off-by: Kevin Hilman <>
OMAP3: PM: enable 600MHz (overdrive) OPP

Signed-off-by: Kevin Hilman <>
omap3: introduce cpufreq

OMAP OPP layer functions now have dependencies of CONFIG_CPU_FREQ only.

With this patch, omap opp layer now has its compilation flags
bound to CONFIG_CPU_FREQ. Also its code has been removed from pm34xx.c.

A new file has been created to contain cpu freq code related to
OMAP3: cpufreq34xx.c

OMAP34xx and OMAP36xx family OPPs are made available

Signed-off-by: Eduardo Valentin <>
Signed-off-by: Paul Walmsley <>
Signed-off-by: Nishanth Menon <>
Signed-off-by: Vishwanath BS <>
Signed-off-by: Kevin Hilman <>
Signed-off-by: Romit Dasgupta <>
Signed-off-by: Rajendra Nayak <>
omap3: cpufreq: allow default opp table init

For board files which choose to override the defaults, the existing
mechanism will work, for boards that would like to work with defaults,
allow init_common_hw to call init_opp_table to initialize if not
already initialized. this will allow all omap boards which have opp
tables predefined for a silicon to use the same.

Originally reported for overo:

Signed-off-by: Nishanth Menon <>
Reported-by: Peter Tseng <>
Cc: Cliff Brake <>
Cc: Kevin Hilman <>
OMAP2: update OPP data to be device based

Cc: Nishanth Menon <>
Signed-off-by: Kevin Hilman <>
OMAP3: CPUfreq: update to device-based OPP API

Update usage of OPP API to use new device-based API.  This requires
getting the 'struct device' for the MPU and using that with the OPP

Signed-off-by: Kevin Hilman <>
omap3: opp: make independent of cpufreq

Make opp3xx data which is registered with the opp layer
dependent purely on CONFIG_PM as opp layer and pm.c users
are CONFIG_PM dependent not cpufreq dependent.
so we rename the data definition to opp3xxx_data.c (inline with what
we have for omap2), also move the build definition to be under
the existing CONFIG_PM build instead of CPUFREQ.

Cc: Eduardo Valentin <>
Cc: Kevin Hilman <>
Cc: Paul Walmsley <>
Cc: Rajendra Nayak <>
Cc: Sanjeev Premi <>
Cc: Thara Gopinath <>
Cc: Tony Lindgren <>
Signed-off-by: Nishanth Menon <>
7 years agoOMAP: CPUfreq: ensure policy is fully initialized
Kevin Hilman [Thu, 12 Aug 2010 00:05:38 +0000 (17:05 -0700)]
OMAP: CPUfreq: ensure policy is fully initialized

Ensure policy min/max/cur values are initialized when OMAP
CPUfreq driver starts.

Signed-off-by: Kevin Hilman <>
7 years agoOMAP: CPUfreq: ensure driver initializes after cpufreq framework and governors
Peter 'p2' De Schrijver [Thu, 12 Aug 2010 00:02:43 +0000 (17:02 -0700)]
OMAP: CPUfreq: ensure driver initializes after cpufreq framework and governors

Signed-off-by: Peter 'p2' De Schrijver <>
Signed-off-by: Kevin Hilman <>
7 years agoOMAP3: PM: Adding T2 enabling of smartreflex
Thara Gopinath [Fri, 31 Dec 2010 08:05:02 +0000 (13:35 +0530)]
OMAP3: PM: Adding T2 enabling of smartreflex

The smartreflex bit on twl4030 needs to be enabled by default irrespective
of whether smartreflex module is enabled on the OMAP side or not.
This is because without this bit enabled the voltage scaling through
vp forceupdate does not function properly on OMAP3.

Signed-off-by: Thara Gopinath <>
7 years agoOMAP: DSS2: Add DSS2 support for Overo
Steve Sakoman [Fri, 18 Dec 2009 14:39:24 +0000 (06:39 -0800)]
OMAP: DSS2: Add DSS2 support for Overo

7 years agoOMAP: DSS2: check for both cpu type and revision, rather than just revision
Steve Sakoman [Mon, 10 May 2010 20:59:14 +0000 (13:59 -0700)]
OMAP: DSS2: check for both cpu type and revision, rather than just revision

7 years agoARM: OMAP: automatically set musb mode in platform data based on CONFIG options
Steve Sakoman [Wed, 24 Feb 2010 18:37:22 +0000 (10:37 -0800)]
ARM: OMAP: automatically set musb mode in platform data based on CONFIG options

7 years agoRTC: add support for backup battery recharge
Steve Sakoman [Thu, 4 Feb 2010 20:26:22 +0000 (12:26 -0800)]
RTC: add support for backup battery recharge

7 years agoARM: OMAP2: mmc-twl4030: move clock input selection prior to vcc test
Steve Sakoman [Sun, 24 Jan 2010 17:33:56 +0000 (09:33 -0800)]
ARM: OMAP2: mmc-twl4030: move clock input selection prior to vcc test

otherwise it is not executed on systems that use non-twl regulators

7 years agoOMAP: DSS2: add bootarg for selecting svideo or composite for tv output
Steve Sakoman [Wed, 20 Jan 2010 05:19:15 +0000 (21:19 -0800)]
OMAP: DSS2: add bootarg for selecting svideo or composite for tv output

also add pal-16 and ntsc-16 omapfb.mode settings for 16bpp

7 years agoOMAP: DSS2: Add support for LG Philips LB035Q02 panel
Steve Sakoman [Thu, 17 Dec 2009 23:05:30 +0000 (15:05 -0800)]
OMAP: DSS2: Add support for LG Philips LB035Q02 panel

7 years agoOMAP: DSS2: Add support for Samsung LTE430WQ-F0C panel
Steve Sakoman [Tue, 23 Feb 2010 22:40:27 +0000 (14:40 -0800)]
OMAP: DSS2: Add support for Samsung LTE430WQ-F0C panel

7 years agoARM: OMAP: Add twl4030 madc support to Beagle
Steve Sakoman [Thu, 17 Dec 2009 22:32:36 +0000 (14:32 -0800)]
ARM: OMAP: Add twl4030 madc support to Beagle

7 years agoARM: OMAP: Add twl4030 madc support to Overo
Steve Sakoman [Thu, 17 Dec 2009 22:27:15 +0000 (14:27 -0800)]
ARM: OMAP: Add twl4030 madc support to Overo

7 years agoMFD: add twl4030 madc driver
Steve Sakoman [Thu, 17 Dec 2009 22:19:34 +0000 (14:19 -0800)]
MFD: add twl4030 madc driver

7 years agoMFD: enable madc clock
Steve Sakoman [Sat, 23 Jan 2010 14:26:54 +0000 (06:26 -0800)]
MFD: enable madc clock

7 years agoASoC: enable audio capture by default for twl4030
Steve Sakoman [Thu, 17 Dec 2009 20:45:20 +0000 (12:45 -0800)]
ASoC: enable audio capture by default for twl4030

7 years agodrivers: input: touchscreen: ads7846: return ENODEV if device is not found
Steve Sakoman [Tue, 15 Dec 2009 23:24:10 +0000 (15:24 -0800)]
drivers: input: touchscreen: ads7846: return ENODEV if device is not found

Signed-off-by: Steve Sakoman <>
7 years agodrivers: net: smsc911x: return ENODEV if device is not found
Steve Sakoman [Tue, 15 Dec 2009 23:17:44 +0000 (15:17 -0800)]
drivers: net: smsc911x: return ENODEV if device is not found

Signed-off-by: Steve Sakoman <>
7 years agoomap3: beagleboard: add WIP support for beagleboardtoys WL12xx board
Koen Kooi [Mon, 20 Dec 2010 10:57:56 +0000 (11:57 +0100)]
omap3: beagleboard: add WIP support for beagleboardtoys WL12xx board

Based on a patch by Luciano Coelho <>

Signed-off-by: Koen Kooi <>
7 years agoOMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX
Steve Sakoman [Tue, 11 May 2010 03:44:09 +0000 (20:44 -0700)]
OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX

Signed-off-by: Koen Kooi <>
7 years agoARM: OMAP: add omap_rev_* macros
Koen Kooi [Tue, 23 Nov 2010 10:40:20 +0000 (11:40 +0100)]
ARM: OMAP: add omap_rev_* macros

This is just to make the SGX modules build that depend on omap_rev_lt_3_0

Signed-off-by: Koen Kooi <>
7 years agoMiracle patch
Mike Galbraith [Fri, 19 Nov 2010 11:52:42 +0000 (12:52 +0100)]
Miracle patch

On Sun, 2010-11-14 at 16:26 -0800, Linus Torvalds wrote:
> On Sun, Nov 14, 2010 at 4:15 PM, Linus Torvalds
> <> wrote:
> >
> > THAT is why I think it's so silly to try to be so strict and walk over
> > all processes while holding a couple of spinlocks.
> Btw, let me say that I think the patch is great even with that thing
> in. It looks clean, the thing I'm complaining about is not a big deal,
> and it seems to perform very much as advertized. The difference with
> autogroup scheduling is very noticeable with a simple "make -j64"
> kernel compile.
> So I really don't think it's a big deal. The sysctl handler isn't even
> complicated. But boy does it hurt my eyes to see a spinlock held
> around a "do_each_thread()". And I do get the feeling that the
> simplest way to fix it would be to just remove the code entirely, and
> just say that "enabling/disabling may be delayed for old processes
> with existing autogroups".

Which is what I just did. If the oddball case isn't a big deal, the
patch shrinks, which is a good thing. I just wanted to cover all bases.

Patchlet with handler whacked:

A recurring complaint from CFS users is that parallel kbuild has a negative
impact on desktop interactivity.  This patch implements an idea from Linus,
to automatically create task groups.  This patch only implements Linus' per
tty task group suggestion, and only for fair class tasks, but leaves the way
open for enhancement.

Implementation: each task's signal struct contains an inherited pointer to a
refcounted autogroup struct containing a task group pointer, the default for
all tasks pointing to the init_task_group.  When a task calls __proc_set_tty(),
the process wide reference to the default group is dropped, a new task group is
created, and the process is moved into the new task group.  Children thereafter
inherit this task group, and increase it's refcount.  On exit, a reference to the
current task group is dropped when the last reference to each signal struct is
dropped.  The task group is destroyed when the last signal struct referencing
it is freed.   At runqueue selection time, IFF a task has no cgroup assignment,
it's current autogroup is used.

The feature is enabled from boot by default if CONFIG_SCHED_AUTOGROUP is
selected, but can be disabled via the boot option noautogroup, and can be
also be turned on/off on the fly via..
   echo [01] > /proc/sys/kernel/sched_autogroup_enabled.
..which will automatically move tasks to/from the root task group.

Some numbers.

A 100% hog overhead measurement proggy pinned to the same CPU as a make -j10

About measurement proggy:
  pert/sec = perturbations/sec
  min/max/avg = scheduler service latencies in usecs
  sum/s = time accrued by the competition per sample period (1 sec here)
  overhead = %CPU received by the competition per sample period

pert/s:       31 >40475.37us:        3 min:  0.37 max:48103.60 avg:29573.74 sum/s:916786us overhead:90.24%
pert/s:       23 >41237.70us:       12 min:  0.36 max:56010.39 avg:40187.01 sum/s:924301us overhead:91.99%
pert/s:       24 >42150.22us:       12 min:  8.86 max:61265.91 avg:39459.91 sum/s:947038us overhead:92.20%
pert/s:       26 >42344.91us:       11 min:  3.83 max:52029.60 avg:36164.70 sum/s:940282us overhead:91.12%
pert/s:       24 >44262.90us:       14 min:  5.05 max:82735.15 avg:40314.33 sum/s:967544us overhead:92.22%

Same load with this patch applied.

pert/s:      229 >5484.43us:       41 min:  0.15 max:12069.42 avg:2193.81 sum/s:502382us overhead:50.24%
pert/s:      222 >5652.28us:       43 min:  0.46 max:12077.31 avg:2248.56 sum/s:499181us overhead:49.92%
pert/s:      211 >5809.38us:       43 min:  0.16 max:12064.78 avg:2381.70 sum/s:502538us overhead:50.25%
pert/s:      223 >6147.92us:       43 min:  0.15 max:16107.46 avg:2282.17 sum/s:508925us overhead:50.49%
pert/s:      218 >6252.64us:       43 min:  0.16 max:12066.13 avg:2324.11 sum/s:506656us overhead:50.27%

Average service latency is an order of magnitude better with autogroup.
(Imagine that pert were Xorg or whatnot instead)

Using Mathieu Desnoyers' wakeup-latency testcase:

With taskset -c 3 make -j 10 running..

taskset -c 3 ./wakeup-latency& sleep 30;killall wakeup-latency

maximum latency: 42963.2 µs
average latency: 9077.0 µs
missed timer events: 0

maximum latency: 4160.7 µs
average latency: 149.4 µs
missed timer events: 0

Signed-off-by: Mike Galbraith <>
7 years agoMTD: silence ecc errors on mtdblock0
Steve Sakoman [Mon, 26 Apr 2010 18:17:26 +0000 (11:17 -0700)]
MTD: silence ecc errors on mtdblock0

mtdblock0 is the x-load partition, which uses hw ecc
this confuses linux, which uses sw ecc
this patch silences ecc error messages when linux peeks into mtdblock0
* not for upstream submission *

7 years agommc: don't display single block read console messages
Steve Sakoman [Tue, 5 Jan 2010 03:20:25 +0000 (19:20 -0800)]
mmc: don't display single block read console messages

mmc: don't display single block read console messages

7 years agomodedb.c: add proper 720p60 mode
Koen Kooi [Mon, 8 Mar 2010 13:38:31 +0000 (14:38 +0100)]
modedb.c: add proper 720p60 mode

Signed-off-by: Koen Kooi <>
7 years agoARM: OMAP: beagleboard: pre-export GPIOs to userspace when using a Tincantools traine...
Koen Kooi [Sun, 5 Dec 2010 12:25:00 +0000 (13:25 +0100)]
ARM: OMAP: beagleboard: pre-export GPIOs to userspace when using a Tincantools trainerboard

This really needs a for loop, patches welcome

Signed-off-by: Koen Kooi <>
7 years agoARM: OMAP: beagleboard: Add infrastructure to do fixups based on expansionboard name...
Koen Kooi [Wed, 6 Oct 2010 08:19:34 +0000 (10:19 +0200)]
ARM: OMAP: beagleboard: Add infrastructure to do fixups based on expansionboard name passed by u-boot

Add support for Tincantools Zippy and Zippy2 expansionboards as well

Signed-off-by: Koen Kooi <>
7 years agoomap: Beagle: detect new xM revision B
Robert Nelson [Tue, 9 Nov 2010 14:34:55 +0000 (08:34 -0600)]
omap: Beagle: detect new xM revision B

The xM B uses a DM3730 ES1.1 over the ES1.0 on xM A's, no other board changes.

Signed-off-by: Robert Nelson <>
Signed-off-by: Koen Kooi <>
7 years agoomap3: beaglexm: fix power on of DVI
Koen Kooi [Wed, 12 Jan 2011 00:23:29 +0000 (00:23 +0000)]
omap3: beaglexm: fix power on of DVI

TFP410 DVI chip is used to provide display out.
This chip is controlled by 2 lines:
LDO which supplies the power is controlled over gpio + 2
and the enable of the chip itself is done over gpio + 1
NOTE: the LDO is necessary for LED, serial blocks as well.

gpio + 1 was used to sense USB overcurrent in vanilla beagle.

Without this fix, the display would not function as the LDO
remains shut down.

[ split up, added descriptive changelogs]
Signed-off-by: Nishanth Menon <>
Signed-off-by: Koen Kooi <>
Signed-off-by: Tony Lindgren <>
7 years agoomap3: beaglexm: fix DVI reset GPIO
Koen Kooi [Tue, 11 Jan 2011 17:13:36 +0000 (17:13 +0000)]
omap3: beaglexm: fix DVI reset GPIO

GPIO reset line for Beagle XM is different from vanilla beagle
so we populate it as part of gpio update routine.

This in part fixes the issue of display not functioning on beagle XM

[ split up, added descriptive changelogs]
Signed-off-by: Nishanth Menon <>
Signed-off-by: Koen Kooi <>
Signed-off-by: Tony Lindgren <>
7 years agoomap3: beaglexm: fix EHCI power up GPIO dir
Koen Kooi [Tue, 11 Jan 2011 17:13:35 +0000 (17:13 +0000)]
omap3: beaglexm: fix EHCI power up GPIO dir

EHCI enable power pin is inverted (active high) in comparison
to vanilla beagle which is active low. Handle this case conditionally.

Without this fix, Beagle XM 4 port EHCI will not function and no
networking will be available

[ split up, added descriptive changelogs]
Signed-off-by: Nishanth Menon <>
Signed-off-by: Koen Kooi <>
Signed-off-by: Tony Lindgren <>
7 years agoLinux 2.6.37
Linus Torvalds [Wed, 5 Jan 2011 00:50:19 +0000 (16:50 -0800)]
Linux 2.6.37

7 years agoipv4/route.c: respect prefsrc for local routes
Joel Sing [Mon, 3 Jan 2011 20:24:20 +0000 (20:24 +0000)]
ipv4/route.c: respect prefsrc for local routes

The preferred source address is currently ignored for local routes,
which results in all local connections having a src address that is the
same as the local dst address. Fix this by respecting the preferred source
address when it is provided for local routes.

This bug can be demonstrated as follows:

 # ifconfig dummy0
 # ip route show table local | grep local.*dummy0
 local dev dummy0  proto kernel  scope host  src
 # ip route change table local local dev dummy0 \
     proto kernel scope host src
 # ip route show table local | grep local.*dummy0
 local dev dummy0  proto kernel  scope host  src

We now establish a local connection and verify the source IP
address selection:

 # nc -l 3128 &
 # nc 3128 &
 # netstat -ant | grep*EST
 tcp        0      0 ESTABLISHED
 tcp        0      0  ESTABLISHED

Signed-off-by: Joel Sing <>
Signed-off-by: David S. Miller <>
7 years agoremove trim_fs method from Documentation/filesystems/Locking
Christoph Hellwig [Tue, 4 Jan 2011 06:14:24 +0000 (07:14 +0100)]
remove trim_fs method from Documentation/filesystems/Locking

The ->trim_fs has been removed meanwhile, so remove it from the documentation
as well.

Signed-off-by: Christoph Hellwig <>
Reported-by: Ryusuke Konishi <>
Signed-off-by: Linus Torvalds <>
7 years agoarch/mn10300/kernel/irq.c: fix build
Andrew Morton [Mon, 3 Jan 2011 22:59:11 +0000 (14:59 -0800)]
arch/mn10300/kernel/irq.c: fix build


Reported-by: Martin Ettl <>
Cc: David Howells <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
7 years agoima: fix add LSM rule bug
Mimi Zohar [Mon, 3 Jan 2011 22:59:10 +0000 (14:59 -0800)]
ima: fix add LSM rule bug

If security_filter_rule_init() doesn't return a rule, then not everything
is as fine as the return code implies.

This bug only occurs when the LSM (eg. SELinux) is disabled at runtime.

Adding an empty LSM rule causes ima_match_rules() to always succeed,
ignoring any remaining rules.

 default IMA TCB policy:
  dont_measure fsmagic=0x9fa0
  dont_measure fsmagic=0x62656572
  dont_measure fsmagic=0x64626720
  dont_measure fsmagic=0x01021994
  dont_measure fsmagic=0x73636673

  < LSM specific rule >
  dont_measure obj_type=var_log_t

  measure func=BPRM_CHECK
  measure func=FILE_MMAP mask=MAY_EXEC
  measure func=FILE_CHECK mask=MAY_READ uid=0

Thus without the patch, with the boot parameters 'tcb selinux=0', adding
the above 'dont_measure obj_type=var_log_t' rule to the default IMA TCB
measurement policy, would result in nothing being measured.  The patch
prevents the default TCB policy from being replaced.

Signed-off-by: Mimi Zohar <>
Cc: James Morris <>
Acked-by: Serge Hallyn <>
Cc: David Safford <>
Cc: <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
7 years agobridge: stp: ensure mac header is set
Florian Westphal [Mon, 3 Jan 2011 04:16:28 +0000 (04:16 +0000)]
bridge: stp: ensure mac header is set

commit bf9ae5386bca8836c16e69ab8fdbe46767d7452a
(llc: use dev_hard_header) removed the
skb_reset_mac_header call from llc_mac_hdr_init.

This seems fine itself, but br_send_bpdu() invokes ebtables LOCAL_OUT.

We oops in ebt_basic_match() because it assumes eth_hdr(skb) returns
a meaningful result.

Signed-off-by: Florian Westphal <>
Signed-off-by: David S. Miller <>
7 years agoname_to_dev_t() must not call __init code
Jan Beulich [Mon, 3 Jan 2011 15:07:02 +0000 (15:07 +0000)]
name_to_dev_t() must not call __init code

The function can't be __init itself (being called from some sysfs
handler), and hence none of the functions it calls can be either.

Signed-off-by: Jan Beulich <>
Acked-by: Randy Dunlap <>
Signed-off-by: Linus Torvalds <>
7 years agobridge: fix br_multicast_ipv6_rcv for paged skbs
Tomas Winkler [Mon, 3 Jan 2011 19:26:08 +0000 (11:26 -0800)]
bridge: fix br_multicast_ipv6_rcv for paged skbs

use pskb_may_pull to access ipv6 header correctly for paged skbs
It was omitted in the bridge code leading to crash in blind

since the skb is cloned undonditionally we also simplify the
the exit path

this fixes bug

Dec 15 14:36:40 User-PC hostapd: wlan0: STA 00:15:00:60:5d:34 IEEE 802.11: authenticated
Dec 15 14:36:40 User-PC hostapd: wlan0: STA 00:15:00:60:5d:34 IEEE 802.11: associated (aid 2)
Dec 15 14:36:40 User-PC hostapd: wlan0: STA 00:15:00:60:5d:34 RADIUS: starting accounting session 4D0608A3-00000005
Dec 15 14:36:41 User-PC kernel: [175576.120287] ------------[ cut here ]------------
Dec 15 14:36:41 User-PC kernel: [175576.120452] kernel BUG at include/linux/skbuff.h:1178!
Dec 15 14:36:41 User-PC kernel: [175576.120609] invalid opcode: 0000 [#1] SMP
Dec 15 14:36:41 User-PC kernel: [175576.120749] last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda/uevent
Dec 15 14:36:41 User-PC kernel: [175576.121035] Modules linked in: approvals binfmt_misc bridge stp llc parport_pc ppdev arc4 iwlagn snd_hda_codec_realtek iwlcore i915 snd_hda_intel mac80211 joydev snd_hda_codec snd_hwdep snd_pcm snd_seq_midi drm_kms_helper snd_rawmidi drm snd_seq_midi_event snd_seq snd_timer snd_seq_device cfg80211 eeepc_wmi usbhid psmouse intel_agp i2c_algo_bit intel_gtt uvcvideo agpgart videodev sparse_keymap snd shpchp v4l1_compat lp hid video serio_raw soundcore output snd_page_alloc ahci libahci atl1c
Dec 15 14:36:41 User-PC kernel: [175576.122712]
Dec 15 14:36:41 User-PC kernel: [175576.122769] Pid: 0, comm: kworker/0:0 Tainted: G        W   2.6.37-rc5-wl+ #3 1015PE/1016P
Dec 15 14:36:41 User-PC kernel: [175576.123012] EIP: 0060:[<f83edd65>] EFLAGS: 00010283 CPU: 1
Dec 15 14:36:41 User-PC kernel: [175576.123193] EIP is at br_multicast_rcv+0xc95/0xe1c [bridge]
Dec 15 14:36:41 User-PC kernel: [175576.123362] EAX: 0000001c EBX: f5626318 ECX: 00000000 EDX: 00000000
Dec 15 14:36:41 User-PC kernel: [175576.123550] ESI: ec512262 EDI: f5626180 EBP: f60b5ca0 ESP: f60b5bd8
Dec 15 14:36:41 User-PC kernel: [175576.123737]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Dec 15 14:36:41 User-PC kernel: [175576.123902] Process kworker/0:0 (pid: 0, ti=f60b4000 task=f60a8000 task.ti=f60b0000)
Dec 15 14:36:41 User-PC kernel: [175576.124137] Stack:
Dec 15 14:36:41 User-PC kernel: [175576.124181]  ec556500 f6d06800 f60b5be8 c01087d8 ec512262 00000030 00000024 f5626180
Dec 15 14:36:41 User-PC kernel: [175576.124181]  f572c200 ef463440 f5626300 3affffff f6d06dd0 e60766a4 000000c4 f6d06860
Dec 15 14:36:41 User-PC kernel: [175576.124181]  ffffffff ec55652c 00000001 f6d06844 f60b5c64 c0138264 c016e451 c013e47d
Dec 15 14:36:41 User-PC kernel: [175576.124181] Call Trace:
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c01087d8>] ? sched_clock+0x8/0x10
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c0138264>] ? enqueue_entity+0x174/0x440
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c016e451>] ? sched_clock_cpu+0x131/0x190
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c013e47d>] ? select_task_rq_fair+0x2ad/0x730
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c0524fc1>] ? nf_iterate+0x71/0x90
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f83e4914>] ? br_handle_frame_finish+0x184/0x220 [bridge]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f83e4790>] ? br_handle_frame_finish+0x0/0x220 [bridge]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f83e46e9>] ? br_handle_frame+0x189/0x230 [bridge]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f83e4790>] ? br_handle_frame_finish+0x0/0x220 [bridge]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f83e4560>] ? br_handle_frame+0x0/0x230 [bridge]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c04ff026>] ? __netif_receive_skb+0x1b6/0x5b0
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c04f7a30>] ? skb_copy_bits+0x110/0x210
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c0503a7f>] ? netif_receive_skb+0x6f/0x80
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f82cb74c>] ? ieee80211_deliver_skb+0x8c/0x1a0 [mac80211]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f82cc836>] ? ieee80211_rx_handlers+0xeb6/0x1aa0 [mac80211]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c04ff1f0>] ? __netif_receive_skb+0x380/0x5b0
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c016e242>] ? sched_clock_local+0xb2/0x190
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c012b688>] ? default_spin_lock_flags+0x8/0x10
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c05d83df>] ? _raw_spin_lock_irqsave+0x2f/0x50
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f82cd621>] ? ieee80211_prepare_and_rx_handle+0x201/0xa90 [mac80211]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f82ce154>] ? ieee80211_rx+0x2a4/0x830 [mac80211]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f815a8d6>] ? iwl_update_stats+0xa6/0x2a0 [iwlcore]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f8499212>] ? iwlagn_rx_reply_rx+0x292/0x3b0 [iwlagn]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c05d83df>] ? _raw_spin_lock_irqsave+0x2f/0x50
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f8483697>] ? iwl_rx_handle+0xe7/0x350 [iwlagn]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<f8486ab7>] ? iwl_irq_tasklet+0xf7/0x5c0 [iwlagn]
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c01aece1>] ? __rcu_process_callbacks+0x201/0x2d0
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c0150d05>] ? tasklet_action+0xc5/0x100
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c0150a07>] ? __do_softirq+0x97/0x1d0
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c05d910c>] ? nmi_stack_correct+0x2f/0x34
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c0150970>] ? __do_softirq+0x0/0x1d0
Dec 15 14:36:41 User-PC kernel: [175576.124181]  <IRQ>
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c01508f5>] ? irq_exit+0x65/0x70
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c05df062>] ? do_IRQ+0x52/0xc0
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c01036b0>] ? common_interrupt+0x30/0x38
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c03a1fc2>] ? intel_idle+0xc2/0x160
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c04daebb>] ? cpuidle_idle_call+0x6b/0x100
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c0101dea>] ? cpu_idle+0x8a/0xf0
Dec 15 14:36:41 User-PC kernel: [175576.124181]  [<c05d2702>] ? start_secondary+0x1e8/0x1ee

Cc: David Miller <>
Cc: Johannes Berg <>
Cc: Stephen Hemminger <>
Signed-off-by: Tomas Winkler <>
Signed-off-by: David S. Miller <>
7 years agoatl1: fix oops when changing tx/rx ring params
J. K. Cliburn [Sat, 1 Jan 2011 05:02:12 +0000 (05:02 +0000)]
atl1: fix oops when changing tx/rx ring params

Commit 3f5a2a713aad28480d86b0add00c68484b54febc zeroes out the statistics
message block (SMB) and coalescing message block (CMB) when adapter ring
resources are freed.  This is desirable behavior, but, as a side effect,
the commit leads to an oops when atl1_set_ringparam() attempts to alter
the number of rx or tx elements in the ring buffer (by using ethtool
-G, for example).  We don't want SMB or CMB to change during this

Modify atl1_set_ringparam() to preserve SMB and CMB when changing ring

Signed-off-by: Jay Cliburn <>
Reported-by: Tõnu Raitviir <>
Signed-off-by: David S. Miller <>
7 years agoARM: pxa: fix page table corruption on resume
Aric D. Blumer [Wed, 29 Dec 2010 16:18:29 +0000 (11:18 -0500)]
ARM: pxa: fix page table corruption on resume

Before this patch, the following error would sometimes occur after a
resume on pxa3xx:

    /path/to/mm/memory.c:144: bad pmd 8040542e.

The problem was that a temporary page table mapping was being improperly

The PXA3xx resume code creates a temporary mapping of resume_turn_on_mmu
to avoid a prefetch abort.  The pxa3xx_resume_after_mmu code requires
that the r1 register holding the address of this mapping not be
modified, however, resume_turn_on_mmu does modify it. It is mostly
correct in that r1 receives the base table address, but it may also
get other bits in 13:0.  This results in pxa3xx_resume_after_mmu
restoring the original mapping to the wrong place, corrupting memory
and leaving the temporary mapping in place.

Signed-off-by: Matt Reimer <>
Signed-off-by: Eric Miao <>
7 years agoARM: it8152: add IT8152_LAST_IRQ definition to fix build error
Mike Rapoport [Wed, 29 Dec 2010 07:06:26 +0000 (09:06 +0200)]
ARM: it8152: add IT8152_LAST_IRQ definition to fix build error

The commit 6ac6b817f3f4c23c5febd960d8deb343e13af5f3 (ARM: pxa: encode
IRQ number into .nr_irqs) removed definition of ITE_LAST_IRQ which
caused the following build error:

CC      arch/arm/common/it8152.o
arch/arm/common/it8152.c: In function 'it8152_init_irq':
arch/arm/common/it8152.c:86: error: 'IT8152_LAST_IRQ' undeclared (first use in this function)
arch/arm/common/it8152.c:86: error: (Each undeclared identifier is reported only once
arch/arm/common/it8152.c:86: error: for each function it appears in.)
make[2]: *** [arch/arm/common/it8152.o] Error 1

Defining the IT8152_LAST_IRQ in the arch/arm/include/hardware/it8152.c
fixes the build.

Signed-off-by: Mike Rapoport <>
Signed-off-by: Eric Miao <>
7 years agoperf: Fix callchain hit bad cast on ascii display
Frederic Weisbecker [Mon, 3 Jan 2011 15:13:11 +0000 (16:13 +0100)]
perf: Fix callchain hit bad cast on ascii display

ipchain__fprintf_graph() casts the number of hits in a branch as an
int, which means we lose its highests bits.

This results in meaningless number of callchain hits in
that have a high number of hits recorded, typically those that have
callchain branches hits appearing more than INT_MAX. This happens
easily as those are pondered by the event period.

Reported-by: Nick Piggin <>
Signed-off-by: Frederic Weisbecker <>
Cc: Ingo Molnar <>
Cc: Peter Zijlstra <>
Cc: Arnaldo Carvalho de Melo <>
Cc: Paul Mackerras <>
7 years agoarch/x86/oprofile/op_model_amd.c: Perform initialisation on a single CPU
Robert Richter [Mon, 3 Jan 2011 11:15:14 +0000 (12:15 +0100)]
arch/x86/oprofile/op_model_amd.c: Perform initialisation on a single CPU

Disable preemption in init_ibs(). The function only checks the
ibs capabilities and sets up pci devices (if necessary). It runs
only on one cpu but operates with the local APIC and some MSRs,
thus it is better to disable preemption.

[    7.034377] BUG: using smp_processor_id() in preemptible [00000000] code: modprobe/483
[    7.034385] caller is setup_APIC_eilvt+0x155/0x180
[    7.034389] Pid: 483, comm: modprobe Not tainted 2.6.37-rc1-20101110+ #1
[    7.034392] Call Trace:
[    7.034400]  [<ffffffff812a2b72>] debug_smp_processor_id+0xd2/0xf0
[    7.034404]  [<ffffffff8101e985>] setup_APIC_eilvt+0x155/0x180
[ ... ]


Reported-by: <>
Signed-off-by: Robert Richter <>
Cc: <>
Cc: Peter Zijlstra <>
Cc: Frederic Weisbecker <>
Cc: Rafael J. Wysocki <>
Cc: Dan Carpenter <>
Cc: Andrew Morton <>
Cc: <> [2.6.37.x]
LKML-Reference: <>
[ small cleanups ]
Signed-off-by: Ingo Molnar <>
7 years agoem28xx: radio_fops should also use unlocked_ioctl
Hans Verkuil [Sat, 18 Dec 2010 12:59:51 +0000 (09:59 -0300)]
em28xx: radio_fops should also use unlocked_ioctl

em28xx uses core assisted locking, so it shouldn't use .ioctl.
The .ioctl callback was replaced by .unlocked_ioctl for video nodes,
but not for radio nodes. This is now corrected.

Signed-off-by: Hans Verkuil <>
Signed-off-by: Mauro Carvalho Chehab <>
7 years agowm8775: Revert changeset fcb9757333 to avoid a regression
Mauro Carvalho Chehab [Mon, 3 Jan 2011 11:09:56 +0000 (09:09 -0200)]
wm8775: Revert changeset fcb9757333 to avoid a regression

It seems that cx88 and ivtv use wm8775 on some different modes. The
patch that added support for a board with wm8775 broke ivtv boards with
this device. As we're too close to release 2.6.37, let's just revert

Reported-by: Andy Walls <>
Reported-by: Eric Sharkey <>
Reported-by: Auric <>
Reported by: David Gesswein <>
Signed-off-by: Mauro Carvalho Chehab <>
7 years agocx25840: Prevent device probe failure due to volume control ERANGE error
Andy Walls [Sun, 5 Dec 2010 22:42:30 +0000 (19:42 -0300)]
cx25840: Prevent device probe failure due to volume control ERANGE error

This patch fixes a regression that crept into 2.6.36.

The volume control scale in the cx25840 driver has an unusual mapping
from register values to v4l2 volume control values.  Enforce the mapping
limits, so that the default volume control setting does not fall out of
bounds to prevent the cx25840 module device probe from failing.

Signed-off-by: Andy Walls <>
Cc: Hans Verkuil <>
Signed-off-by: Mauro Carvalho Chehab <>