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

Merge branch 'ib-pinctrl-unreg-mappings' into devel

+25 -33
+1 -1
arch/arm/mach-u300/core.c
··· 201 201 }; 202 202 203 203 /* Pin control settings */ 204 - static struct pinctrl_map __initdata u300_pinmux_map[] = { 204 + static const struct pinctrl_map u300_pinmux_map[] = { 205 205 /* anonymous maps for chip power and EMIFs */ 206 206 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-u300", NULL, "power"), 207 207 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-u300", NULL, "emif0"),
+17 -26
drivers/pinctrl/core.c
··· 1376 1376 } 1377 1377 EXPORT_SYMBOL_GPL(devm_pinctrl_put); 1378 1378 1379 - int pinctrl_register_map(const struct pinctrl_map *maps, unsigned num_maps, 1380 - bool dup) 1379 + /** 1380 + * pinctrl_register_mappings() - register a set of pin controller mappings 1381 + * @maps: the pincontrol mappings table to register. Note the pinctrl-core 1382 + * keeps a reference to the passed in maps, so they should _not_ be 1383 + * marked with __initdata. 1384 + * @num_maps: the number of maps in the mapping table 1385 + */ 1386 + int pinctrl_register_mappings(const struct pinctrl_map *maps, 1387 + unsigned num_maps) 1381 1388 { 1382 1389 int i, ret; 1383 1390 struct pinctrl_maps *maps_node; ··· 1437 1430 if (!maps_node) 1438 1431 return -ENOMEM; 1439 1432 1433 + maps_node->maps = maps; 1440 1434 maps_node->num_maps = num_maps; 1441 - if (dup) { 1442 - maps_node->maps = kmemdup(maps, sizeof(*maps) * num_maps, 1443 - GFP_KERNEL); 1444 - if (!maps_node->maps) { 1445 - kfree(maps_node); 1446 - return -ENOMEM; 1447 - } 1448 - } else { 1449 - maps_node->maps = maps; 1450 - } 1451 1435 1452 1436 mutex_lock(&pinctrl_maps_mutex); 1453 1437 list_add_tail(&maps_node->node, &pinctrl_maps); ··· 1446 1448 1447 1449 return 0; 1448 1450 } 1449 - 1450 - /** 1451 - * pinctrl_register_mappings() - register a set of pin controller mappings 1452 - * @maps: the pincontrol mappings table to register. This should probably be 1453 - * marked with __initdata so it can be discarded after boot. This 1454 - * function will perform a shallow copy for the mapping entries. 1455 - * @num_maps: the number of maps in the mapping table 1456 - */ 1457 - int pinctrl_register_mappings(const struct pinctrl_map *maps, 1458 - unsigned num_maps) 1459 - { 1460 - return pinctrl_register_map(maps, num_maps, true); 1461 - } 1462 1451 EXPORT_SYMBOL_GPL(pinctrl_register_mappings); 1463 1452 1464 - void pinctrl_unregister_map(const struct pinctrl_map *map) 1453 + /** 1454 + * pinctrl_unregister_mappings() - unregister a set of pin controller mappings 1455 + * @maps: the pincontrol mappings table passed to pinctrl_register_mappings() 1456 + * when registering the mappings. 1457 + */ 1458 + void pinctrl_unregister_mappings(const struct pinctrl_map *map) 1465 1459 { 1466 1460 struct pinctrl_maps *maps_node; 1467 1461 ··· 1468 1478 } 1469 1479 mutex_unlock(&pinctrl_maps_mutex); 1470 1480 } 1481 + EXPORT_SYMBOL_GPL(pinctrl_unregister_mappings); 1471 1482 1472 1483 /** 1473 1484 * pinctrl_force_sleep() - turn a given controller device into sleep state
-4
drivers/pinctrl/core.h
··· 236 236 pinctrl_find_gpio_range_from_pin_nolock(struct pinctrl_dev *pctldev, 237 237 unsigned int pin); 238 238 239 - int pinctrl_register_map(const struct pinctrl_map *maps, unsigned num_maps, 240 - bool dup); 241 - void pinctrl_unregister_map(const struct pinctrl_map *map); 242 - 243 239 extern int pinctrl_force_sleep(struct pinctrl_dev *pctldev); 244 240 extern int pinctrl_force_default(struct pinctrl_dev *pctldev); 245 241
+2 -2
drivers/pinctrl/devicetree.c
··· 51 51 struct pinctrl_dt_map *dt_map, *n1; 52 52 53 53 list_for_each_entry_safe(dt_map, n1, &p->dt_maps, node) { 54 - pinctrl_unregister_map(dt_map->map); 54 + pinctrl_unregister_mappings(dt_map->map); 55 55 list_del(&dt_map->node); 56 56 dt_free_map(dt_map->pctldev, dt_map->map, 57 57 dt_map->num_maps); ··· 92 92 dt_map->num_maps = num_maps; 93 93 list_add_tail(&dt_map->node, &p->dt_maps); 94 94 95 - return pinctrl_register_map(map, num_maps, false); 95 + return pinctrl_register_mappings(map, num_maps); 96 96 97 97 err_free_map: 98 98 dt_free_map(pctldev, map, num_maps);
+5
include/linux/pinctrl/machine.h
··· 153 153 154 154 extern int pinctrl_register_mappings(const struct pinctrl_map *map, 155 155 unsigned num_maps); 156 + extern void pinctrl_unregister_mappings(const struct pinctrl_map *map); 156 157 extern void pinctrl_provide_dummies(void); 157 158 #else 158 159 ··· 161 160 unsigned num_maps) 162 161 { 163 162 return 0; 163 + } 164 + 165 + static inline void pinctrl_unregister_mappings(const struct pinctrl_map *map) 166 + { 164 167 } 165 168 166 169 static inline void pinctrl_provide_dummies(void)