Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 81450b73 authored by Len Brown's avatar Len Brown
Browse files

Pull misc-for-upstream into release branch



Conflicts:

	drivers/usb/misc/appledisplay.c

Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parents 8a03d9a4 0539771d
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -247,6 +247,13 @@ L: linux-acpi@vger.kernel.org
W:	http://acpi.sourceforge.net/
S:	Supported

ACPI VIDEO DRIVER
P:	Luming Yu
M:	luming.yu@intel.com
L:	linux-acpi@vger.kernel.org
W:	http://acpi.sourceforge.net/
S:	Supported

AD1816 SOUND DRIVER
P:	Thorsten Knabe
M:	Thorsten Knabe <linux@thorsten-knabe.de>
+1 −0
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ config ACPI
	depends on IA64 || X86
	depends on PCI
	depends on PM
	select PNP
	default y
	---help---
	  Advanced Configuration and Power Interface (ACPI) support for 
+13 −1
Original line number Diff line number Diff line
@@ -141,6 +141,7 @@ struct asus_hotk {
		W5A,		//W5A
		W3V,            //W3030V
		xxN,		//M2400N, M3700N, M5200N, M6800N, S1300N, S5200N
		A4S,            //Z81sp
		//(Centrino)
		END_MODEL
	} model;		//Models currently supported
@@ -397,7 +398,16 @@ static struct model_data model_conf[END_MODEL] = {
	 .brightness_set = "SPLV",
	 .brightness_get = "GPLV",
	 .display_set = "SDSP",
	 .display_get = "\\ADVG"}
	.display_get = "\\ADVG"},

	{
		.name              = "A4S",
		.brightness_set    = "SPLV",
		.brightness_get    = "GPLV",
		.mt_bt_switch      = "BLED",
		.mt_wled           = "WLED"
	}

};

/* procdir we use */
@@ -1117,6 +1127,8 @@ static int asus_model_match(char *model)
		return W3V;
	else if (strncmp(model, "W5A", 3) == 0)
		return W5A;
	else if (strncmp(model, "A4S", 3) == 0)
		return A4S;
	else
		return END_MODEL;
}
+5 −96
Original line number Diff line number Diff line
@@ -47,18 +47,6 @@ MODULE_LICENSE("GPL");
	acpi_get_name(h, ACPI_FULL_PATHNAME, &buffer);\
	printk(KERN_DEBUG PREFIX "%s: %s\n", prefix, s); }
static void bay_notify(acpi_handle handle, u32 event, void *data);
static int acpi_bay_add(struct acpi_device *device);
static int acpi_bay_remove(struct acpi_device *device, int type);

static struct acpi_driver acpi_bay_driver = {
	.name = ACPI_BAY_DRIVER_NAME,
	.class = ACPI_BAY_CLASS,
	.ids = ACPI_BAY_HID,
	.ops = {
		.add = acpi_bay_add,
		.remove = acpi_bay_remove,
		},
};

struct bay {
	acpi_handle handle;
@@ -234,14 +222,6 @@ int eject_removable_drive(struct device *dev)
}
EXPORT_SYMBOL_GPL(eject_removable_drive);

static int acpi_bay_add(struct acpi_device *device)
{
	bay_dprintk(device->handle, "adding bay device");
	strcpy(acpi_device_name(device), "Dockable Bay");
	strcpy(acpi_device_class(device), "bay");
	return 0;
}

static int acpi_bay_add_fs(struct bay *bay)
{
	int ret;
@@ -303,7 +283,7 @@ static int bay_add(acpi_handle handle, int id)

	/* initialize platform device stuff */
	pdev = platform_device_register_simple(ACPI_BAY_CLASS, id, NULL, 0);
	if (pdev == NULL) {
	if (IS_ERR(pdev)) {
		printk(KERN_ERR PREFIX "Error registering bay device\n");
		goto bay_add_err;
	}
@@ -339,52 +319,6 @@ static int bay_add(acpi_handle handle, int id)
	return -ENODEV;
}

static int acpi_bay_remove(struct acpi_device *device, int type)
{
	/*** FIXME: do something here */
	return 0;
}

/**
 * bay_create_acpi_device - add new devices to acpi
 * @handle - handle of the device to add
 *
 *  This function will create a new acpi_device for the given
 *  handle if one does not exist already.  This should cause
 *  acpi to scan for drivers for the given devices, and call
 *  matching driver's add routine.
 *
 *  Returns a pointer to the acpi_device corresponding to the handle.
 */
static struct acpi_device * bay_create_acpi_device(acpi_handle handle)
{
	struct acpi_device *device = NULL;
	struct acpi_device *parent_device;
	acpi_handle parent;
	int ret;

	bay_dprintk(handle, "Trying to get device");
	if (acpi_bus_get_device(handle, &device)) {
		/*
		 * no device created for this object,
		 * so we should create one.
		 */
		bay_dprintk(handle, "No device for handle");
		acpi_get_parent(handle, &parent);
		if (acpi_bus_get_device(parent, &parent_device))
			parent_device = NULL;

		ret = acpi_bus_add(&device, parent_device, handle,
			ACPI_BUS_TYPE_DEVICE);
		if (ret) {
			pr_debug("error adding bus, %x\n",
				-ret);
			return NULL;
		}
	}
	return device;
}

/**
 * bay_notify - act upon an acpi bay notification
 * @handle: the bay handle
@@ -394,38 +328,19 @@ static struct acpi_device * bay_create_acpi_device(acpi_handle handle)
 */
static void bay_notify(acpi_handle handle, u32 event, void *data)
{
	struct acpi_device *dev;
	struct bay *bay_dev = (struct bay *)data;
	struct device *dev = &bay_dev->pdev->dev;

	bay_dprintk(handle, "Bay event");

	switch(event) {
	case ACPI_NOTIFY_BUS_CHECK:
		printk("Bus Check\n");
	case ACPI_NOTIFY_DEVICE_CHECK:
		printk("Device Check\n");
		dev = bay_create_acpi_device(handle);
		if (dev)
			acpi_bus_generate_event(dev, event, 0);
		else
			printk("No device for generating event\n");
		/* wouldn't it be a good idea to just rescan SATA
		 * right here?
		 */
		break;
	case ACPI_NOTIFY_EJECT_REQUEST:
		printk("Eject request\n");
		dev = bay_create_acpi_device(handle);
		if (dev)
			acpi_bus_generate_event(dev, event, 0);
		else
			printk("No device for generating eventn");

		/* wouldn't it be a good idea to just call the
		 * eject_device here if we were a SATA device?
		 */
		kobject_uevent(&dev->kobj, KOBJ_CHANGE);
		break;
	default:
		printk("unknown event %d\n", event);
		printk(KERN_ERR PREFIX "Bay: unknown event %d\n", event);
	}
}

@@ -457,10 +372,6 @@ static int __init bay_init(void)
	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
		ACPI_UINT32_MAX, find_bay, &bays, NULL);

	if (bays)
		if ((acpi_bus_register_driver(&acpi_bay_driver) < 0))
			printk(KERN_ERR "Unable to register bay driver\n");

	if (!bays)
		return -ENODEV;

@@ -481,8 +392,6 @@ static void __exit bay_exit(void)
		kfree(bay->name);
		kfree(bay);
	}

	acpi_bus_unregister_driver(&acpi_bay_driver);
}

postcore_initcall(bay_init);
+3 −1
Original line number Diff line number Diff line
@@ -280,9 +280,11 @@ static int acpi_ec_transaction(struct acpi_ec *ec, u8 command,
	mutex_lock(&ec->lock);
	if (ec->global_lock) {
		status = acpi_acquire_global_lock(ACPI_EC_UDELAY_GLK, &glk);
		if (ACPI_FAILURE(status))
		if (ACPI_FAILURE(status)) {
			mutex_unlock(&ec->lock);
			return -ENODEV;
		}
	}

	/* Make sure GPE is enabled before doing transaction */
	acpi_enable_gpe(NULL, ec->gpe, ACPI_NOT_ISR);
Loading