mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-05 13:51:52 +00:00
device property: Get rid of struct fwnode_handle type field
Instead of relying on the struct fwnode_handle type field, define fwnode_operations structs for all separate types of fwnodes. To find out the type, compare to the ops field to relevant ops structs. This change has two benefits: 1. it avoids adding the type field to each and every instance of struct fwnode_handle, thus saving memory and 2. makes the ops field the single factor that defines both the types of the fwnode as well as defines the implementation of its operations, decreasing the possibility of bugs when developing code dealing with fwnode internals. Suggested-by: Rob Herring <robh@kernel.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
b81b729164
commit
db3e50f323
10 changed files with 60 additions and 52 deletions
|
@ -57,9 +57,6 @@ static inline acpi_handle acpi_device_handle(struct acpi_device *adev)
|
|||
acpi_fwnode_handle(adev) : NULL)
|
||||
#define ACPI_HANDLE(dev) acpi_device_handle(ACPI_COMPANION(dev))
|
||||
|
||||
|
||||
extern const struct fwnode_operations acpi_fwnode_ops;
|
||||
|
||||
static inline struct fwnode_handle *acpi_alloc_fwnode_static(void)
|
||||
{
|
||||
struct fwnode_handle *fwnode;
|
||||
|
@ -68,15 +65,14 @@ static inline struct fwnode_handle *acpi_alloc_fwnode_static(void)
|
|||
if (!fwnode)
|
||||
return NULL;
|
||||
|
||||
fwnode->type = FWNODE_ACPI_STATIC;
|
||||
fwnode->ops = &acpi_fwnode_ops;
|
||||
fwnode->ops = &acpi_static_fwnode_ops;
|
||||
|
||||
return fwnode;
|
||||
}
|
||||
|
||||
static inline void acpi_free_fwnode_static(struct fwnode_handle *fwnode)
|
||||
{
|
||||
if (WARN_ON(!fwnode || fwnode->type != FWNODE_ACPI_STATIC))
|
||||
if (WARN_ON(!is_acpi_static_node(fwnode)))
|
||||
return;
|
||||
|
||||
kfree(fwnode);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue