Merge branch 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6
* 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: staging: iio: max517: Fix iio_info changes Staging: mei: fix debug code Staging: cx23885: fix include of altera.h staging: iio: error case memory leak fix staging: ath6kl: Fix a kernel panic during suspend/resume staging: gma500: get control from firmware framebuffer if conflicts staging: gma500: Skip bogus LVDS VBT mode and check for LVDS before adding backlight staging: usbip: bugfix prevent driver unbind staging: iio: industrialio-trigger: set iio_poll_func private_data staging: rts_pstor: use bitwise operator instead of logical one staging: fix ath6kl build when CFG80211 is not enabled staging: brcm80211: fix for 'multiple definition of wl_msg_level' build err staging: fix olpc_dcon build, needs BACKLIGHT_CLASS_DEVICE Staging: remove STAGING_EXCLUDE_BUILD option Staging: altera: move .h file to proper place
This commit is contained in:
commit
461df4ded3
|
@ -25,8 +25,8 @@
|
|||
#include <linux/delay.h>
|
||||
#include <media/cx25840.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <staging/altera.h>
|
||||
|
||||
#include "../../../staging/altera-stapl/altera.h"
|
||||
#include "cx23885.h"
|
||||
#include "tuner-xc2028.h"
|
||||
#include "netup-init.h"
|
||||
|
|
|
@ -24,23 +24,6 @@ menuconfig STAGING
|
|||
|
||||
if STAGING
|
||||
|
||||
config STAGING_EXCLUDE_BUILD
|
||||
bool "Exclude Staging drivers from being built" if STAGING
|
||||
default y
|
||||
---help---
|
||||
Are you sure you really want to build the staging drivers?
|
||||
They taint your kernel, don't live up to the normal Linux
|
||||
kernel quality standards, are a bit crufty around the edges,
|
||||
and might go off and kick your dog when you aren't paying
|
||||
attention.
|
||||
|
||||
Say N here to be able to select and build the Staging drivers.
|
||||
This option is primarily here to prevent them from being built
|
||||
when selecting 'make allyesconfg' and 'make allmodconfig' so
|
||||
don't be all that put off, your dog will be just fine.
|
||||
|
||||
if !STAGING_EXCLUDE_BUILD
|
||||
|
||||
source "drivers/staging/tty/Kconfig"
|
||||
|
||||
source "drivers/staging/generic_serial/Kconfig"
|
||||
|
@ -177,5 +160,4 @@ source "drivers/staging/mei/Kconfig"
|
|||
|
||||
source "drivers/staging/nvec/Kconfig"
|
||||
|
||||
endif # !STAGING_EXCLUDE_BUILD
|
||||
endif # STAGING
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/slab.h>
|
||||
#include <staging/altera.h>
|
||||
#include "altera.h"
|
||||
#include "altera-exprt.h"
|
||||
#include "altera-jtag.h"
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include <linux/string.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/slab.h>
|
||||
#include <staging/altera.h>
|
||||
#include "altera.h"
|
||||
#include "altera-exprt.h"
|
||||
#include "altera-jtag.h"
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
config ATH6K_LEGACY
|
||||
tristate "Atheros AR6003 support (non mac80211)"
|
||||
depends on MMC && WLAN
|
||||
depends on CFG80211
|
||||
select WIRELESS_EXT
|
||||
select WEXT_PRIV
|
||||
help
|
||||
|
|
|
@ -870,7 +870,8 @@ ar6k_cfg80211_scanComplete_event(struct ar6_softc *ar, int status)
|
|||
if(ar->scan_request)
|
||||
{
|
||||
/* Translate data to cfg80211 mgmt format */
|
||||
wmi_iterate_nodes(ar->arWmi, ar6k_cfg80211_scan_node, ar->wdev->wiphy);
|
||||
if (ar->arWmi)
|
||||
wmi_iterate_nodes(ar->arWmi, ar6k_cfg80211_scan_node, ar->wdev->wiphy);
|
||||
|
||||
cfg80211_scan_done(ar->scan_request,
|
||||
((status & A_ECANCELED) || (status & A_EBUSY)) ? true : false);
|
||||
|
|
|
@ -64,8 +64,6 @@ wl_iw_extra_params_t g_wl_iw_params;
|
|||
extern bool wl_iw_conn_status_str(u32 event_type, u32 status,
|
||||
u32 reason, char *stringBuf, uint buflen);
|
||||
|
||||
uint wl_msg_level = WL_ERROR_VAL;
|
||||
|
||||
#define MAX_WLIW_IOCTL_LEN 1024
|
||||
|
||||
#ifdef CONFIG_WIRELESS_EXT
|
||||
|
|
|
@ -542,6 +542,8 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
|
|||
unsigned long irqflags;
|
||||
int ret = -ENOMEM;
|
||||
uint32_t tt_pages;
|
||||
struct drm_connector *connector;
|
||||
struct psb_intel_output *psb_intel_output;
|
||||
|
||||
dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
|
||||
if (dev_priv == NULL)
|
||||
|
@ -663,7 +665,18 @@ static int psb_driver_load(struct drm_device *dev, unsigned long chipset)
|
|||
drm_kms_helper_poll_init(dev);
|
||||
}
|
||||
|
||||
ret = psb_backlight_init(dev);
|
||||
/* Only add backlight support if we have LVDS output */
|
||||
list_for_each_entry(connector, &dev->mode_config.connector_list,
|
||||
head) {
|
||||
psb_intel_output = to_psb_intel_output(connector);
|
||||
|
||||
switch (psb_intel_output->type) {
|
||||
case INTEL_OUTPUT_LVDS:
|
||||
ret = psb_backlight_init(dev);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
#if 0
|
||||
|
|
|
@ -441,6 +441,16 @@ static int psbfb_create(struct psb_fbdev *fbdev,
|
|||
info->screen_size = size;
|
||||
memset(info->screen_base, 0, size);
|
||||
|
||||
if (dev_priv->pg->stolen_size) {
|
||||
info->apertures = alloc_apertures(1);
|
||||
if (!info->apertures) {
|
||||
ret = -ENOMEM;
|
||||
goto out_err0;
|
||||
}
|
||||
info->apertures->ranges[0].base = dev->mode_config.fb_base;
|
||||
info->apertures->ranges[0].size = dev_priv->pg->stolen_size;
|
||||
}
|
||||
|
||||
drm_fb_helper_fill_fix(info, fb->pitch, fb->depth);
|
||||
drm_fb_helper_fill_var(info, &fbdev->psb_fb_helper,
|
||||
sizes->fb_width, sizes->fb_height);
|
||||
|
|
|
@ -154,10 +154,15 @@ static void parse_lfp_panel_data(struct drm_psb_private *dev_priv,
|
|||
|
||||
fill_detail_timing_data(panel_fixed_mode, dvo_timing);
|
||||
|
||||
dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode;
|
||||
|
||||
DRM_DEBUG("Found panel mode in BIOS VBT tables:\n");
|
||||
drm_mode_debug_printmodeline(panel_fixed_mode);
|
||||
if (panel_fixed_mode->htotal > 0 && panel_fixed_mode->vtotal > 0) {
|
||||
dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode;
|
||||
DRM_DEBUG("Found panel mode in BIOS VBT tables:\n");
|
||||
drm_mode_debug_printmodeline(panel_fixed_mode);
|
||||
} else {
|
||||
DRM_DEBUG("Ignoring bogus LVDS VBT mode.\n");
|
||||
dev_priv->lvds_vbt = 0;
|
||||
kfree(panel_fixed_mode);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -195,7 +195,7 @@ static const struct iio_info max517_info = {
|
|||
};
|
||||
|
||||
static const struct iio_info max518_info = {
|
||||
.attrs = &max517_attribute_group,
|
||||
.attrs = &max518_attribute_group,
|
||||
.driver_module = THIS_MODULE,
|
||||
};
|
||||
|
||||
|
|
|
@ -137,13 +137,13 @@ static irqreturn_t adis16400_trigger_handler(int irq, void *p)
|
|||
if (st->variant->flags & ADIS16400_NO_BURST) {
|
||||
ret = adis16350_spi_read_all(&indio_dev->dev, st->rx);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
goto err;
|
||||
for (; i < ring->scan_count; i++)
|
||||
data[i] = *(s16 *)(st->rx + i*2);
|
||||
} else {
|
||||
ret = adis16400_spi_read_burst(&indio_dev->dev, st->rx);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
goto err;
|
||||
for (; i < indio_dev->ring->scan_count; i++) {
|
||||
j = __ffs(mask);
|
||||
mask &= ~(1 << j);
|
||||
|
@ -158,9 +158,13 @@ static irqreturn_t adis16400_trigger_handler(int irq, void *p)
|
|||
ring->access->store_to(indio_dev->ring, (u8 *) data, pf->timestamp);
|
||||
|
||||
iio_trigger_notify_done(indio_dev->trig);
|
||||
kfree(data);
|
||||
|
||||
kfree(data);
|
||||
return IRQ_HANDLED;
|
||||
|
||||
err:
|
||||
kfree(data);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void adis16400_unconfigure_ring(struct iio_dev *indio_dev)
|
||||
|
|
|
@ -294,6 +294,7 @@ struct iio_poll_func
|
|||
pf->h = h;
|
||||
pf->thread = thread;
|
||||
pf->type = type;
|
||||
pf->private_data = private;
|
||||
|
||||
return pf;
|
||||
}
|
||||
|
|
|
@ -205,10 +205,10 @@ int mei_hw_init(struct mei_device *dev)
|
|||
"host_hw_state = 0x%08x, me_hw_state = 0x%08x.\n",
|
||||
dev->host_hw_state, dev->me_hw_state);
|
||||
|
||||
if (!(dev->host_hw_state & H_RDY) != H_RDY)
|
||||
if (!(dev->host_hw_state & H_RDY))
|
||||
dev_dbg(&dev->pdev->dev, "host turn off H_RDY.\n");
|
||||
|
||||
if (!(dev->me_hw_state & ME_RDY_HRA) != ME_RDY_HRA)
|
||||
if (!(dev->me_hw_state & ME_RDY_HRA))
|
||||
dev_dbg(&dev->pdev->dev, "ME turn off ME_RDY.\n");
|
||||
|
||||
printk(KERN_ERR "mei: link layer initialization failed.\n");
|
||||
|
|
|
@ -2,6 +2,7 @@ config FB_OLPC_DCON
|
|||
tristate "One Laptop Per Child Display CONtroller support"
|
||||
depends on OLPC && FB
|
||||
select I2C
|
||||
select BACKLIGHT_CLASS_DEVICE
|
||||
---help---
|
||||
Add support for the OLPC XO DCON controller. This controller is
|
||||
only available on OLPC platforms. Unless you have one of these
|
||||
|
|
|
@ -2328,7 +2328,7 @@ Switch_Fail:
|
|||
|
||||
retval = sd_send_cmd_get_rsp(chip, IO_SEND_OP_COND, 0, SD_RSP_TYPE_R4, rsp, 5);
|
||||
if (retval == STATUS_SUCCESS) {
|
||||
int func_num = (rsp[1] >> 4) && 0x07;
|
||||
int func_num = (rsp[1] >> 4) & 0x07;
|
||||
if (func_num) {
|
||||
RTSX_DEBUGP("SD_IO card (Function number: %d)!\n", func_num);
|
||||
chip->sd_io = 1;
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
static int stub_probe(struct usb_interface *interface,
|
||||
const struct usb_device_id *id);
|
||||
static void stub_disconnect(struct usb_interface *interface);
|
||||
static int stub_pre_reset(struct usb_interface *interface);
|
||||
static int stub_post_reset(struct usb_interface *interface);
|
||||
|
||||
/*
|
||||
* Define device IDs here if you want to explicitly limit exportable devices.
|
||||
|
@ -59,6 +61,8 @@ struct usb_driver stub_driver = {
|
|||
.probe = stub_probe,
|
||||
.disconnect = stub_disconnect,
|
||||
.id_table = stub_table,
|
||||
.pre_reset = stub_pre_reset,
|
||||
.post_reset = stub_post_reset,
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -541,3 +545,20 @@ static void stub_disconnect(struct usb_interface *interface)
|
|||
del_match_busid((char *)udev_busid);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Presence of pre_reset and post_reset prevents the driver from being unbound
|
||||
* when the device is being reset
|
||||
*/
|
||||
|
||||
int stub_pre_reset(struct usb_interface *interface)
|
||||
{
|
||||
dev_dbg(&interface->dev, "pre_reset\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
int stub_post_reset(struct usb_interface *interface)
|
||||
{
|
||||
dev_dbg(&interface->dev, "post_reset\n");
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -175,16 +175,18 @@ static int tweak_reset_device_cmd(struct urb *urb)
|
|||
dev_info(&urb->dev->dev, "usb_queue_reset_device\n");
|
||||
|
||||
/*
|
||||
* usb_lock_device_for_reset caused a deadlock: it causes the driver
|
||||
* to unbind. In the shutdown the rx thread is signalled to shut down
|
||||
* but this thread is pending in the usb_lock_device_for_reset.
|
||||
*
|
||||
* Instead queue the reset.
|
||||
*
|
||||
* Unfortunatly an existing usbip connection will be dropped due to
|
||||
* driver unbinding.
|
||||
* With the implementation of pre_reset and post_reset the driver no
|
||||
* longer unbinds. This allows the use of synchronous reset.
|
||||
*/
|
||||
usb_queue_reset_device(sdev->interface);
|
||||
|
||||
if (usb_lock_device_for_reset(sdev->udev, sdev->interface)<0)
|
||||
{
|
||||
dev_err(&urb->dev->dev, "could not obtain lock to reset device\n");
|
||||
return 0;
|
||||
}
|
||||
usb_reset_device(sdev->udev);
|
||||
usb_unlock_device(sdev->udev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue