Merge branch 'spear/pinctrl' into next/pinctrl
* spear/pinctrl: pinctrl: (cosmetic) fix two entries in DocBook comments pinctrl: add more info to error msgs in pin_request CLKDEV: provide helpers for common clock framework pinctrl: add pinctrl-mxs support pinctrl: pinctrl-imx: add imx6q pinctrl driver pinctrl: pinctrl-imx: add imx pinctrl core driver dt: add of_get_child_count helper function pinctrl: support gpio request deferred probing pinctrl: add pinctrl_provide_dummies interface for platforms to use pinctrl: enhance reporting of errors when loading from DT pinctrl: add kerneldoc for pinctrl_ops device tree functions pinctrl: propagate map validation errors pinctrl: fix dangling comment pinctrl: fix signed vs unsigned conditionals inside pinmux_map_to_setting ARM: 7392/1: CLKDEV: Optimize clk_find() ARM: 7376/1: clkdev: Implement managed clk_get() This just adds more dependencies that are required in order not to break the spear pinctrl support. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
commit
7afeca1a30
24 changed files with 7360 additions and 58 deletions
|
|
@ -100,6 +100,26 @@ int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb);
|
|||
*/
|
||||
struct clk *clk_get(struct device *dev, const char *id);
|
||||
|
||||
/**
|
||||
* devm_clk_get - lookup and obtain a managed reference to a clock producer.
|
||||
* @dev: device for clock "consumer"
|
||||
* @id: clock comsumer ID
|
||||
*
|
||||
* Returns a struct clk corresponding to the clock producer, or
|
||||
* valid IS_ERR() condition containing errno. The implementation
|
||||
* uses @dev and @id to determine the clock consumer, and thereby
|
||||
* the clock producer. (IOW, @id may be identical strings, but
|
||||
* clk_get may return different clock producers depending on @dev.)
|
||||
*
|
||||
* Drivers must assume that the clock source is not enabled.
|
||||
*
|
||||
* devm_clk_get should not be called from within interrupt context.
|
||||
*
|
||||
* The clock will automatically be freed when the device is unbound
|
||||
* from the bus.
|
||||
*/
|
||||
struct clk *devm_clk_get(struct device *dev, const char *id);
|
||||
|
||||
/**
|
||||
* clk_prepare - prepare a clock source
|
||||
* @clk: clock source
|
||||
|
|
@ -206,6 +226,18 @@ unsigned long clk_get_rate(struct clk *clk);
|
|||
*/
|
||||
void clk_put(struct clk *clk);
|
||||
|
||||
/**
|
||||
* devm_clk_put - "free" a managed clock source
|
||||
* @dev: device used to acuqire the clock
|
||||
* @clk: clock source acquired with devm_clk_get()
|
||||
*
|
||||
* Note: drivers must ensure that all clk_enable calls made on this
|
||||
* clock source are balanced by clk_disable calls prior to calling
|
||||
* this function.
|
||||
*
|
||||
* clk_put should not be called from within interrupt context.
|
||||
*/
|
||||
void devm_clk_put(struct device *dev, struct clk *clk);
|
||||
|
||||
/*
|
||||
* The remaining APIs are optional for machine class support.
|
||||
|
|
|
|||
|
|
@ -40,4 +40,7 @@ void clkdev_drop(struct clk_lookup *cl);
|
|||
void clkdev_add_table(struct clk_lookup *, size_t);
|
||||
int clk_add_alias(const char *, const char *, char *, struct device *);
|
||||
|
||||
int clk_register_clkdev(struct clk *, const char *, const char *, ...);
|
||||
int clk_register_clkdevs(struct clk *, struct clk_lookup *, size_t);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -193,6 +193,17 @@ extern struct device_node *of_get_next_child(const struct device_node *node,
|
|||
for (child = of_get_next_child(parent, NULL); child != NULL; \
|
||||
child = of_get_next_child(parent, child))
|
||||
|
||||
static inline int of_get_child_count(const struct device_node *np)
|
||||
{
|
||||
struct device_node *child;
|
||||
int num = 0;
|
||||
|
||||
for_each_child_of_node(np, child)
|
||||
num++;
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
extern struct device_node *of_find_node_with_property(
|
||||
struct device_node *from, const char *prop_name);
|
||||
#define for_each_node_with_property(dn, prop_name) \
|
||||
|
|
@ -300,6 +311,11 @@ static inline bool of_have_populated_dt(void)
|
|||
#define for_each_child_of_node(parent, child) \
|
||||
while (0)
|
||||
|
||||
static inline int of_get_child_count(const struct device_node *np)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int of_device_is_compatible(const struct device_node *device,
|
||||
const char *name)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ struct pinctrl_map {
|
|||
|
||||
extern int pinctrl_register_mappings(struct pinctrl_map const *map,
|
||||
unsigned num_maps);
|
||||
|
||||
extern void pinctrl_provide_dummies(void);
|
||||
#else
|
||||
|
||||
static inline int pinctrl_register_mappings(struct pinctrl_map const *map,
|
||||
|
|
@ -163,5 +163,8 @@ static inline int pinctrl_register_mappings(struct pinctrl_map const *map,
|
|||
return 0;
|
||||
}
|
||||
|
||||
#endif /* !CONFIG_PINMUX */
|
||||
static inline void pinctrl_provide_dummies(void)
|
||||
{
|
||||
}
|
||||
#endif /* !CONFIG_PINCTRL */
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ struct seq_file;
|
|||
* @pin_config_get: get the config of a certain pin, if the requested config
|
||||
* is not available on this controller this should return -ENOTSUPP
|
||||
* and if it is available but disabled it should return -EINVAL
|
||||
* @pin_config_get: get the config of a certain pin
|
||||
* @pin_config_set: configure an individual pin
|
||||
* @pin_config_group_get: get configurations for an entire pin group
|
||||
* @pin_config_group_set: configure all pins in a group
|
||||
|
|
|
|||
|
|
@ -72,6 +72,15 @@ struct pinctrl_gpio_range {
|
|||
* group selector @pins, and the size of the array in @num_pins
|
||||
* @pin_dbg_show: optional debugfs display hook that will provide per-device
|
||||
* info for a certain pin in debugfs
|
||||
* @dt_node_to_map: parse a device tree "pin configuration node", and create
|
||||
* mapping table entries for it. These are returned through the @map and
|
||||
* @num_maps output parameters. This function is optional, and may be
|
||||
* omitted for pinctrl drivers that do not support device tree.
|
||||
* @dt_free_map: free mapping table entries created via @dt_node_to_map. The
|
||||
* top-level @map pointer must be freed, along with any dynamically
|
||||
* allocated members of the mapping table entries themselves. This
|
||||
* function is optional, and may be omitted for pinctrl drivers that do
|
||||
* not support device tree.
|
||||
*/
|
||||
struct pinctrl_ops {
|
||||
int (*get_groups_count) (struct pinctrl_dev *pctldev);
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ struct pinctrl_dev;
|
|||
/**
|
||||
* struct pinmux_ops - pinmux operations, to be implemented by pin controller
|
||||
* drivers that support pinmuxing
|
||||
* @request: called by the core to see if a certain pin can be made available
|
||||
* @request: called by the core to see if a certain pin can be made
|
||||
* available for muxing. This is called by the core to acquire the pins
|
||||
* before selecting any actual mux setting across a function. The driver
|
||||
* is allowed to answer "no" by returning a negative error code
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue