mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 21:21:09 +00:00
Device properties framework updates for 5.3-rc1
- Add helpers to count items in a property array (Andy Shevchenko). - Extend "software nodes" support to be more convenient for representing device properties supplied by drivers (Heikki Krogerus). - Add device_find_child_by_name() helper to the driver core (Heikki Krogerus). - Extend device connection code to also look for references provided via fwnode pointers (Heikki Krogerus). - Start to register proper struct device objects for USB Type-C muxes and orientation switches (Heikki Krogerus). - Update the intel_cht_int33fe driver to describe devices in a more general way with the help of "software nodes" (Heikki Krogerus). -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEE4fcc61cGeeHD/fCwgsRv/nhiVHEFAl0jLKMSHHJqd0Byand5 c29ja2kubmV0AAoJEILEb/54YlRxJIUQAJ7vJ9CVPzcFK8S6FkDD1nNUbZqnHhpe v9u2e347Wb5TyxWrzdgzBWw3JmJsi78kO8R82fJSZgkaqTWsxWxbPH6K+OSU0gxB lU8A5opk/P8ChAEGz0hCIXVYgTWRlgETQnAsUspoPPw/9ypxY/lZJ2P3QIvDsn6Q wsfFEdshHXrqOzWg5XxWVMogUhrDm2us/xs1HC6eWcmABggrf3m6cr/KxABZK5Hx PIhIRJT8BN5e9wB2dKNcxNoz0XLem2pW2EN1vHHEVwSbxJE45yJqiz4cXRxHYwrT GCXDYUcwiwtScvXRfl4Ihm8E1+hDczGW0FUR0A2Y9QB15zWvJy8ff1GlHhbROoSV 3T48xu6iAWuz9/i6BrJSZ9C1hya867v/S8ccBEnHRTtJwqSEHRBmzyINbxqtcENe LY4cGcZAjkDnWOXz7cHbM4uXwn+XYQHCbi+bkHWXEEKRqx6LWFOaGoSR6XlqRBrA H/RSg38GU7KTCLun/YLezuwbT08lvDoere9B3psxNW2XW7ufjL5DSnxRFm0hdBMv zWMAi/6a6yr1hpUyCXZTlnEYI7Hqx3dDTinQe8x8BeJ2CRUnFqmH+1Y0ihd8vCvf 2k9tS2WAt72dFOckwwWOX9xEQIHGInkDWUx8MHbEuTtW7R61NTdCiYR/xxZhkTOr aB3xFjSGAv87 =jOFk -----END PGP SIGNATURE----- Merge tag 'devprop-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm Pull device properties framework updates from Rafael Wysocki: "These add helpers for counting items in a property array and extend the "software nodes" support to be more convenient for representing device properties supplied by drivers and make the intel_cht_int33fe driver use that. Specifics: - Add helpers to count items in a property array (Andy Shevchenko). - Extend "software nodes" support to be more convenient for representing device properties supplied by drivers (Heikki Krogerus). - Add device_find_child_by_name() helper to the driver core (Heikki Krogerus). - Extend device connection code to also look for references provided via fwnode pointers (Heikki Krogerus). - Start to register proper struct device objects for USB Type-C muxes and orientation switches (Heikki Krogerus). - Update the intel_cht_int33fe driver to describe devices in a more general way with the help of "software nodes" (Heikki Krogerus)" * tag 'devprop-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: device property: Add helpers to count items in an array platform/x86: intel_cht_int33fe: Replacing the old connections with references platform/x86: intel_cht_int33fe: Supply fwnodes for the external dependencies platform/x86: intel_cht_int33fe: Provide fwnode for the USB connector platform/x86: intel_cht_int33fe: Provide software nodes for the devices platform/x86: intel_cht_int33fe: Remove unused fusb302 device property platform/x86: intel_cht_int33fe: Register max17047 in its own function usb: typec: Registering real device entries for the muxes device connection: Find connections also by checking the references device property: Introduce fwnode_find_reference() ACPI / property: Don't limit named child node matching to data nodes driver core: Add helper device_find_child_by_name() software node: Add software_node_get_reference_args() software node: Use kobject name when finding child nodes by name software node: Add support for static node descriptors software node: Simplify software_node_release() function software node: Allow node creation without properties
This commit is contained in:
commit
0415052db4
14 changed files with 954 additions and 256 deletions
|
@ -76,6 +76,10 @@ int fwnode_property_get_reference_args(const struct fwnode_handle *fwnode,
|
|||
unsigned int nargs, unsigned int index,
|
||||
struct fwnode_reference_args *args);
|
||||
|
||||
struct fwnode_handle *fwnode_find_reference(const struct fwnode_handle *fwnode,
|
||||
const char *name,
|
||||
unsigned int index);
|
||||
|
||||
struct fwnode_handle *fwnode_get_parent(const struct fwnode_handle *fwnode);
|
||||
struct fwnode_handle *fwnode_get_next_parent(
|
||||
struct fwnode_handle *fwnode);
|
||||
|
@ -141,6 +145,26 @@ static inline int device_property_read_u64(struct device *dev,
|
|||
return device_property_read_u64_array(dev, propname, val, 1);
|
||||
}
|
||||
|
||||
static inline int device_property_count_u8(struct device *dev, const char *propname)
|
||||
{
|
||||
return device_property_read_u8_array(dev, propname, NULL, 0);
|
||||
}
|
||||
|
||||
static inline int device_property_count_u16(struct device *dev, const char *propname)
|
||||
{
|
||||
return device_property_read_u16_array(dev, propname, NULL, 0);
|
||||
}
|
||||
|
||||
static inline int device_property_count_u32(struct device *dev, const char *propname)
|
||||
{
|
||||
return device_property_read_u32_array(dev, propname, NULL, 0);
|
||||
}
|
||||
|
||||
static inline int device_property_count_u64(struct device *dev, const char *propname)
|
||||
{
|
||||
return device_property_read_u64_array(dev, propname, NULL, 0);
|
||||
}
|
||||
|
||||
static inline bool fwnode_property_read_bool(const struct fwnode_handle *fwnode,
|
||||
const char *propname)
|
||||
{
|
||||
|
@ -171,6 +195,30 @@ static inline int fwnode_property_read_u64(const struct fwnode_handle *fwnode,
|
|||
return fwnode_property_read_u64_array(fwnode, propname, val, 1);
|
||||
}
|
||||
|
||||
static inline int fwnode_property_count_u8(const struct fwnode_handle *fwnode,
|
||||
const char *propname)
|
||||
{
|
||||
return fwnode_property_read_u8_array(fwnode, propname, NULL, 0);
|
||||
}
|
||||
|
||||
static inline int fwnode_property_count_u16(const struct fwnode_handle *fwnode,
|
||||
const char *propname)
|
||||
{
|
||||
return fwnode_property_read_u16_array(fwnode, propname, NULL, 0);
|
||||
}
|
||||
|
||||
static inline int fwnode_property_count_u32(const struct fwnode_handle *fwnode,
|
||||
const char *propname)
|
||||
{
|
||||
return fwnode_property_read_u32_array(fwnode, propname, NULL, 0);
|
||||
}
|
||||
|
||||
static inline int fwnode_property_count_u64(const struct fwnode_handle *fwnode,
|
||||
const char *propname)
|
||||
{
|
||||
return fwnode_property_read_u64_array(fwnode, propname, NULL, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* struct property_entry - "Built-in" device property representation.
|
||||
* @name: Name of the property.
|
||||
|
@ -329,7 +377,54 @@ int fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
|
|||
/* -------------------------------------------------------------------------- */
|
||||
/* Software fwnode support - when HW description is incomplete or missing */
|
||||
|
||||
struct software_node;
|
||||
|
||||
/**
|
||||
* struct software_node_ref_args - Reference with additional arguments
|
||||
* @node: Reference to a software node
|
||||
* @nargs: Number of elements in @args array
|
||||
* @args: Integer arguments
|
||||
*/
|
||||
struct software_node_ref_args {
|
||||
const struct software_node *node;
|
||||
unsigned int nargs;
|
||||
u64 args[NR_FWNODE_REFERENCE_ARGS];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct software_node_reference - Named software node reference property
|
||||
* @name: Name of the property
|
||||
* @nrefs: Number of elements in @refs array
|
||||
* @refs: Array of references with optional arguments
|
||||
*/
|
||||
struct software_node_reference {
|
||||
const char *name;
|
||||
unsigned int nrefs;
|
||||
const struct software_node_ref_args *refs;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct software_node - Software node description
|
||||
* @name: Name of the software node
|
||||
* @parent: Parent of the software node
|
||||
* @properties: Array of device properties
|
||||
* @references: Array of software node reference properties
|
||||
*/
|
||||
struct software_node {
|
||||
const char *name;
|
||||
const struct software_node *parent;
|
||||
const struct property_entry *properties;
|
||||
const struct software_node_reference *references;
|
||||
};
|
||||
|
||||
bool is_software_node(const struct fwnode_handle *fwnode);
|
||||
const struct software_node *to_software_node(struct fwnode_handle *fwnode);
|
||||
struct fwnode_handle *software_node_fwnode(const struct software_node *node);
|
||||
|
||||
int software_node_register_nodes(const struct software_node *nodes);
|
||||
void software_node_unregister_nodes(const struct software_node *nodes);
|
||||
|
||||
int software_node_register(const struct software_node *node);
|
||||
|
||||
int software_node_notify(struct device *dev, unsigned long action);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue