Skip to content

Commit 33ee09c

Browse files
andy-shevrafaeljw
authored andcommitted
device property: Add helpers to count items in an array
The usual pattern to allocate the necessary space for an array of properties is to count them first by calling: count = device_property_read_uXX_array(dev, propname, NULL, 0); if (count < 0) return count; Introduce helpers device_property_count_uXX() to count items by supplying hard coded last two parameters to device_property_readXX_array(). Signed-off-by: Andy Shevchenko <[email protected]> Acked-by: Sakari Ailus <[email protected]> Reviewed-by: Heikki Krogerus <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent be6dc32 commit 33ee09c

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

include/linux/property.h

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,26 @@ static inline int device_property_read_u64(struct device *dev,
148148
return device_property_read_u64_array(dev, propname, val, 1);
149149
}
150150

151+
static inline int device_property_count_u8(struct device *dev, const char *propname)
152+
{
153+
return device_property_read_u8_array(dev, propname, NULL, 0);
154+
}
155+
156+
static inline int device_property_count_u16(struct device *dev, const char *propname)
157+
{
158+
return device_property_read_u16_array(dev, propname, NULL, 0);
159+
}
160+
161+
static inline int device_property_count_u32(struct device *dev, const char *propname)
162+
{
163+
return device_property_read_u32_array(dev, propname, NULL, 0);
164+
}
165+
166+
static inline int device_property_count_u64(struct device *dev, const char *propname)
167+
{
168+
return device_property_read_u64_array(dev, propname, NULL, 0);
169+
}
170+
151171
static inline bool fwnode_property_read_bool(const struct fwnode_handle *fwnode,
152172
const char *propname)
153173
{
@@ -178,6 +198,30 @@ static inline int fwnode_property_read_u64(const struct fwnode_handle *fwnode,
178198
return fwnode_property_read_u64_array(fwnode, propname, val, 1);
179199
}
180200

201+
static inline int fwnode_property_count_u8(const struct fwnode_handle *fwnode,
202+
const char *propname)
203+
{
204+
return fwnode_property_read_u8_array(fwnode, propname, NULL, 0);
205+
}
206+
207+
static inline int fwnode_property_count_u16(const struct fwnode_handle *fwnode,
208+
const char *propname)
209+
{
210+
return fwnode_property_read_u16_array(fwnode, propname, NULL, 0);
211+
}
212+
213+
static inline int fwnode_property_count_u32(const struct fwnode_handle *fwnode,
214+
const char *propname)
215+
{
216+
return fwnode_property_read_u32_array(fwnode, propname, NULL, 0);
217+
}
218+
219+
static inline int fwnode_property_count_u64(const struct fwnode_handle *fwnode,
220+
const char *propname)
221+
{
222+
return fwnode_property_read_u64_array(fwnode, propname, NULL, 0);
223+
}
224+
181225
/**
182226
* struct property_entry - "Built-in" device property representation.
183227
* @name: Name of the property.

0 commit comments

Comments
 (0)