Re: [RFC PATCH] ACPI: Add _DEP(Operation Region Dependencies) support to fix battery issue on the Asus T100TA

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Friday, September 26, 2014 01:23:29 PM Lan Tianyu wrote:
> On 2014年09月26日 03:27, Rafael J. Wysocki wrote:
> > I'm not sure what you mean.  "Dependent" means "depending on something", so the
> > question reads "This requires the devices with _DEP to have a list of devices
> > that depend on them" which is probably not what you meant.
> > 
> 
> Sorry, I didn't say clearly. The "dependent device" I meant is device
> pointed to by _DEP(the master you mentioned at the bottom). I thought
> master also needed a list to find its slave(device with _DEP).
> 
> > For each device with _DEP we have dep_devices, so if you pass a pointer
> > (opregion_adev) to the device that has just installed an operation region
> > handler to acpi_walk_dep_device_list() as an argument, then you can do
> > 
> > 	for (i = 0; i < adev->dep_devices.count; i++)
> > 		if (opregion_adev->handle == adev->dep_devices.handles[i]) {
> > 			adev->dep_unmet = false;
> > 			acpi_bus_attach(adev);
> > 			list_del(&dep->node);
> > 			kfree(dep);
> > 		}
> > 
> > and of course appropriate locking needs to be there in case this races with
> > enumeration during hotplug after loading a new ACPI table on demand).
> > 
> 
> Yes, we can scan all devices on the list and match the opregion_adev
> with adev->dep_devices. This is comparatively simple solution.
> 
> > I think you can even define
> >   
> > struct acpi_dep_data {
> > 	struct list_head node;
> > 	struct acpi_device *master;
> > 	struct acpi_device *slave;
> > };
> > 
> > and create that for every valid pair of master (device pointed to by _DEP)/slave
> > (device with _DEP) and create a list of these.  Then, you won't need dep_devices
> > in struct acpi_device any more and your acpi_walk_dep_device_list() will only
> > need to walk the list until it finds the matching master/slave pair.
> 
> One question is that when create struct acpi_dep_data for the dependency
> relationship between master and slave. If do this when slave's ACPI
> device is created during ACPI namespace scan, master's ACPI device maybe
> not created at that point. So acpi_handle maybe more suitable than
> struct acpi_device here.

Right.  The handle is fine too and should be sufficient.

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux