Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'driver-core-5.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core

Pull driver core fixes from Greg KH:
"Here are two driver fixes for driver core changes that happened in
5.13-rc1.

The clk driver fix resolves a many-reported issue with booting some
devices, and the USB typec fix resolves the reported problem of USB
systems on some embedded boards.

Both of these have been in linux-next this week with no reported
issues"

* tag 'driver-core-5.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
clk: Skip clk provider registration when np is NULL
usb: typec: tcpm: Don't block probing of consumers of "connector" nodes

+21 -1
+2 -1
drivers/base/core.c
··· 150 150 fwnode_links_purge_consumers(fwnode); 151 151 } 152 152 153 - static void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode) 153 + void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode) 154 154 { 155 155 struct fwnode_handle *child; 156 156 ··· 164 164 fwnode_for_each_available_child_node(fwnode, child) 165 165 fw_devlink_purge_absent_suppliers(child); 166 166 } 167 + EXPORT_SYMBOL_GPL(fw_devlink_purge_absent_suppliers); 167 168 168 169 #ifdef CONFIG_SRCU 169 170 static DEFINE_MUTEX(device_links_lock);
+9
drivers/clk/clk.c
··· 4540 4540 struct of_clk_provider *cp; 4541 4541 int ret; 4542 4542 4543 + if (!np) 4544 + return 0; 4545 + 4543 4546 cp = kzalloc(sizeof(*cp), GFP_KERNEL); 4544 4547 if (!cp) 4545 4548 return -ENOMEM; ··· 4581 4578 { 4582 4579 struct of_clk_provider *cp; 4583 4580 int ret; 4581 + 4582 + if (!np) 4583 + return 0; 4584 4584 4585 4585 cp = kzalloc(sizeof(*cp), GFP_KERNEL); 4586 4586 if (!cp) ··· 4681 4675 void of_clk_del_provider(struct device_node *np) 4682 4676 { 4683 4677 struct of_clk_provider *cp; 4678 + 4679 + if (!np) 4680 + return; 4684 4681 4685 4682 mutex_lock(&of_clk_mutex); 4686 4683 list_for_each_entry(cp, &of_clk_providers, link) {
+9
drivers/usb/typec/tcpm/tcpm.c
··· 5818 5818 if (!fwnode) 5819 5819 return -EINVAL; 5820 5820 5821 + /* 5822 + * This fwnode has a "compatible" property, but is never populated as a 5823 + * struct device. Instead we simply parse it to read the properties. 5824 + * This it breaks fw_devlink=on. To maintain backward compatibility 5825 + * with existing DT files, we work around this by deleting any 5826 + * fwnode_links to/from this fwnode. 5827 + */ 5828 + fw_devlink_purge_absent_suppliers(fwnode); 5829 + 5821 5830 /* USB data support is optional */ 5822 5831 ret = fwnode_property_read_string(fwnode, "data-role", &cap_str); 5823 5832 if (ret == 0) {
+1
include/linux/fwnode.h
··· 187 187 extern bool fw_devlink_is_strict(void); 188 188 int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup); 189 189 void fwnode_links_purge(struct fwnode_handle *fwnode); 190 + void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode); 190 191 191 192 #endif