at v5.16 31 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _LINUX_RESET_H_ 3#define _LINUX_RESET_H_ 4 5#include <linux/err.h> 6#include <linux/errno.h> 7#include <linux/types.h> 8 9struct device; 10struct device_node; 11struct reset_control; 12 13/** 14 * struct reset_control_bulk_data - Data used for bulk reset control operations. 15 * 16 * @id: reset control consumer ID 17 * @rstc: struct reset_control * to store the associated reset control 18 * 19 * The reset APIs provide a series of reset_control_bulk_*() API calls as 20 * a convenience to consumers which require multiple reset controls. 21 * This structure is used to manage data for these calls. 22 */ 23struct reset_control_bulk_data { 24 const char *id; 25 struct reset_control *rstc; 26}; 27 28#ifdef CONFIG_RESET_CONTROLLER 29 30int reset_control_reset(struct reset_control *rstc); 31int reset_control_rearm(struct reset_control *rstc); 32int reset_control_assert(struct reset_control *rstc); 33int reset_control_deassert(struct reset_control *rstc); 34int reset_control_status(struct reset_control *rstc); 35int reset_control_acquire(struct reset_control *rstc); 36void reset_control_release(struct reset_control *rstc); 37 38int reset_control_bulk_reset(int num_rstcs, struct reset_control_bulk_data *rstcs); 39int reset_control_bulk_assert(int num_rstcs, struct reset_control_bulk_data *rstcs); 40int reset_control_bulk_deassert(int num_rstcs, struct reset_control_bulk_data *rstcs); 41int reset_control_bulk_acquire(int num_rstcs, struct reset_control_bulk_data *rstcs); 42void reset_control_bulk_release(int num_rstcs, struct reset_control_bulk_data *rstcs); 43 44struct reset_control *__of_reset_control_get(struct device_node *node, 45 const char *id, int index, bool shared, 46 bool optional, bool acquired); 47struct reset_control *__reset_control_get(struct device *dev, const char *id, 48 int index, bool shared, 49 bool optional, bool acquired); 50void reset_control_put(struct reset_control *rstc); 51int __reset_control_bulk_get(struct device *dev, int num_rstcs, 52 struct reset_control_bulk_data *rstcs, 53 bool shared, bool optional, bool acquired); 54void reset_control_bulk_put(int num_rstcs, struct reset_control_bulk_data *rstcs); 55 56int __device_reset(struct device *dev, bool optional); 57struct reset_control *__devm_reset_control_get(struct device *dev, 58 const char *id, int index, bool shared, 59 bool optional, bool acquired); 60int __devm_reset_control_bulk_get(struct device *dev, int num_rstcs, 61 struct reset_control_bulk_data *rstcs, 62 bool shared, bool optional, bool acquired); 63 64struct reset_control *devm_reset_control_array_get(struct device *dev, 65 bool shared, bool optional); 66struct reset_control *of_reset_control_array_get(struct device_node *np, 67 bool shared, bool optional, 68 bool acquired); 69 70int reset_control_get_count(struct device *dev); 71 72#else 73 74static inline int reset_control_reset(struct reset_control *rstc) 75{ 76 return 0; 77} 78 79static inline int reset_control_rearm(struct reset_control *rstc) 80{ 81 return 0; 82} 83 84static inline int reset_control_assert(struct reset_control *rstc) 85{ 86 return 0; 87} 88 89static inline int reset_control_deassert(struct reset_control *rstc) 90{ 91 return 0; 92} 93 94static inline int reset_control_status(struct reset_control *rstc) 95{ 96 return 0; 97} 98 99static inline int reset_control_acquire(struct reset_control *rstc) 100{ 101 return 0; 102} 103 104static inline void reset_control_release(struct reset_control *rstc) 105{ 106} 107 108static inline void reset_control_put(struct reset_control *rstc) 109{ 110} 111 112static inline int __device_reset(struct device *dev, bool optional) 113{ 114 return optional ? 0 : -ENOTSUPP; 115} 116 117static inline struct reset_control *__of_reset_control_get( 118 struct device_node *node, 119 const char *id, int index, bool shared, 120 bool optional, bool acquired) 121{ 122 return optional ? NULL : ERR_PTR(-ENOTSUPP); 123} 124 125static inline struct reset_control *__reset_control_get( 126 struct device *dev, const char *id, 127 int index, bool shared, bool optional, 128 bool acquired) 129{ 130 return optional ? NULL : ERR_PTR(-ENOTSUPP); 131} 132 133static inline int 134reset_control_bulk_reset(int num_rstcs, struct reset_control_bulk_data *rstcs) 135{ 136 return 0; 137} 138 139static inline int 140reset_control_bulk_assert(int num_rstcs, struct reset_control_bulk_data *rstcs) 141{ 142 return 0; 143} 144 145static inline int 146reset_control_bulk_deassert(int num_rstcs, struct reset_control_bulk_data *rstcs) 147{ 148 return 0; 149} 150 151static inline int 152reset_control_bulk_acquire(int num_rstcs, struct reset_control_bulk_data *rstcs) 153{ 154 return 0; 155} 156 157static inline void 158reset_control_bulk_release(int num_rstcs, struct reset_control_bulk_data *rstcs) 159{ 160} 161 162static inline int 163__reset_control_bulk_get(struct device *dev, int num_rstcs, 164 struct reset_control_bulk_data *rstcs, 165 bool shared, bool optional, bool acquired) 166{ 167 return optional ? 0 : -EOPNOTSUPP; 168} 169 170static inline void 171reset_control_bulk_put(int num_rstcs, struct reset_control_bulk_data *rstcs) 172{ 173} 174 175static inline struct reset_control *__devm_reset_control_get( 176 struct device *dev, const char *id, 177 int index, bool shared, bool optional, 178 bool acquired) 179{ 180 return optional ? NULL : ERR_PTR(-ENOTSUPP); 181} 182 183static inline int 184__devm_reset_control_bulk_get(struct device *dev, int num_rstcs, 185 struct reset_control_bulk_data *rstcs, 186 bool shared, bool optional, bool acquired) 187{ 188 return optional ? 0 : -EOPNOTSUPP; 189} 190 191static inline struct reset_control * 192devm_reset_control_array_get(struct device *dev, bool shared, bool optional) 193{ 194 return optional ? NULL : ERR_PTR(-ENOTSUPP); 195} 196 197static inline struct reset_control * 198of_reset_control_array_get(struct device_node *np, bool shared, bool optional, 199 bool acquired) 200{ 201 return optional ? NULL : ERR_PTR(-ENOTSUPP); 202} 203 204static inline int reset_control_get_count(struct device *dev) 205{ 206 return -ENOENT; 207} 208 209#endif /* CONFIG_RESET_CONTROLLER */ 210 211static inline int __must_check device_reset(struct device *dev) 212{ 213 return __device_reset(dev, false); 214} 215 216static inline int device_reset_optional(struct device *dev) 217{ 218 return __device_reset(dev, true); 219} 220 221/** 222 * reset_control_get_exclusive - Lookup and obtain an exclusive reference 223 * to a reset controller. 224 * @dev: device to be reset by the controller 225 * @id: reset line name 226 * 227 * Returns a struct reset_control or IS_ERR() condition containing errno. 228 * If this function is called more than once for the same reset_control it will 229 * return -EBUSY. 230 * 231 * See reset_control_get_shared() for details on shared references to 232 * reset-controls. 233 * 234 * Use of id names is optional. 235 */ 236static inline struct reset_control * 237__must_check reset_control_get_exclusive(struct device *dev, const char *id) 238{ 239 return __reset_control_get(dev, id, 0, false, false, true); 240} 241 242/** 243 * reset_control_bulk_get_exclusive - Lookup and obtain exclusive references to 244 * multiple reset controllers. 245 * @dev: device to be reset by the controller 246 * @num_rstcs: number of entries in rstcs array 247 * @rstcs: array of struct reset_control_bulk_data with reset line names set 248 * 249 * Fills the rstcs array with pointers to exclusive reset controls and 250 * returns 0, or an IS_ERR() condition containing errno. 251 */ 252static inline int __must_check 253reset_control_bulk_get_exclusive(struct device *dev, int num_rstcs, 254 struct reset_control_bulk_data *rstcs) 255{ 256 return __reset_control_bulk_get(dev, num_rstcs, rstcs, false, false, true); 257} 258 259/** 260 * reset_control_get_exclusive_released - Lookup and obtain a temoprarily 261 * exclusive reference to a reset 262 * controller. 263 * @dev: device to be reset by the controller 264 * @id: reset line name 265 * 266 * Returns a struct reset_control or IS_ERR() condition containing errno. 267 * reset-controls returned by this function must be acquired via 268 * reset_control_acquire() before they can be used and should be released 269 * via reset_control_release() afterwards. 270 * 271 * Use of id names is optional. 272 */ 273static inline struct reset_control * 274__must_check reset_control_get_exclusive_released(struct device *dev, 275 const char *id) 276{ 277 return __reset_control_get(dev, id, 0, false, false, false); 278} 279 280/** 281 * reset_control_bulk_get_exclusive_released - Lookup and obtain temporarily 282 * exclusive references to multiple reset 283 * controllers. 284 * @dev: device to be reset by the controller 285 * @num_rstcs: number of entries in rstcs array 286 * @rstcs: array of struct reset_control_bulk_data with reset line names set 287 * 288 * Fills the rstcs array with pointers to exclusive reset controls and 289 * returns 0, or an IS_ERR() condition containing errno. 290 * reset-controls returned by this function must be acquired via 291 * reset_control_bulk_acquire() before they can be used and should be released 292 * via reset_control_bulk_release() afterwards. 293 */ 294static inline int __must_check 295reset_control_bulk_get_exclusive_released(struct device *dev, int num_rstcs, 296 struct reset_control_bulk_data *rstcs) 297{ 298 return __reset_control_bulk_get(dev, num_rstcs, rstcs, false, false, false); 299} 300 301/** 302 * reset_control_bulk_get_optional_exclusive_released - Lookup and obtain optional 303 * temporarily exclusive references to multiple 304 * reset controllers. 305 * @dev: device to be reset by the controller 306 * @num_rstcs: number of entries in rstcs array 307 * @rstcs: array of struct reset_control_bulk_data with reset line names set 308 * 309 * Optional variant of reset_control_bulk_get_exclusive_released(). If the 310 * requested reset is not specified in the device tree, this function returns 0 311 * instead of an error and missing rtsc is set to NULL. 312 * 313 * See reset_control_bulk_get_exclusive_released() for more information. 314 */ 315static inline int __must_check 316reset_control_bulk_get_optional_exclusive_released(struct device *dev, int num_rstcs, 317 struct reset_control_bulk_data *rstcs) 318{ 319 return __reset_control_bulk_get(dev, num_rstcs, rstcs, false, true, false); 320} 321 322/** 323 * reset_control_get_shared - Lookup and obtain a shared reference to a 324 * reset controller. 325 * @dev: device to be reset by the controller 326 * @id: reset line name 327 * 328 * Returns a struct reset_control or IS_ERR() condition containing errno. 329 * This function is intended for use with reset-controls which are shared 330 * between hardware blocks. 331 * 332 * When a reset-control is shared, the behavior of reset_control_assert / 333 * deassert is changed, the reset-core will keep track of a deassert_count 334 * and only (re-)assert the reset after reset_control_assert has been called 335 * as many times as reset_control_deassert was called. Also see the remark 336 * about shared reset-controls in the reset_control_assert docs. 337 * 338 * Calling reset_control_assert without first calling reset_control_deassert 339 * is not allowed on a shared reset control. Calling reset_control_reset is 340 * also not allowed on a shared reset control. 341 * 342 * Use of id names is optional. 343 */ 344static inline struct reset_control *reset_control_get_shared( 345 struct device *dev, const char *id) 346{ 347 return __reset_control_get(dev, id, 0, true, false, false); 348} 349 350/** 351 * reset_control_bulk_get_shared - Lookup and obtain shared references to 352 * multiple reset controllers. 353 * @dev: device to be reset by the controller 354 * @num_rstcs: number of entries in rstcs array 355 * @rstcs: array of struct reset_control_bulk_data with reset line names set 356 * 357 * Fills the rstcs array with pointers to shared reset controls and 358 * returns 0, or an IS_ERR() condition containing errno. 359 */ 360static inline int __must_check 361reset_control_bulk_get_shared(struct device *dev, int num_rstcs, 362 struct reset_control_bulk_data *rstcs) 363{ 364 return __reset_control_bulk_get(dev, num_rstcs, rstcs, true, false, false); 365} 366 367/** 368 * reset_control_get_optional_exclusive - optional reset_control_get_exclusive() 369 * @dev: device to be reset by the controller 370 * @id: reset line name 371 * 372 * Optional variant of reset_control_get_exclusive(). If the requested reset 373 * is not specified in the device tree, this function returns NULL instead of 374 * an error. 375 * 376 * See reset_control_get_exclusive() for more information. 377 */ 378static inline struct reset_control *reset_control_get_optional_exclusive( 379 struct device *dev, const char *id) 380{ 381 return __reset_control_get(dev, id, 0, false, true, true); 382} 383 384/** 385 * reset_control_bulk_get_optional_exclusive - optional 386 * reset_control_bulk_get_exclusive() 387 * @dev: device to be reset by the controller 388 * @num_rstcs: number of entries in rstcs array 389 * @rstcs: array of struct reset_control_bulk_data with reset line names set 390 * 391 * Optional variant of reset_control_bulk_get_exclusive(). If any of the 392 * requested resets are not specified in the device tree, this function sets 393 * them to NULL instead of returning an error. 394 * 395 * See reset_control_bulk_get_exclusive() for more information. 396 */ 397static inline int __must_check 398reset_control_bulk_get_optional_exclusive(struct device *dev, int num_rstcs, 399 struct reset_control_bulk_data *rstcs) 400{ 401 return __reset_control_bulk_get(dev, num_rstcs, rstcs, false, true, true); 402} 403 404/** 405 * reset_control_get_optional_shared - optional reset_control_get_shared() 406 * @dev: device to be reset by the controller 407 * @id: reset line name 408 * 409 * Optional variant of reset_control_get_shared(). If the requested reset 410 * is not specified in the device tree, this function returns NULL instead of 411 * an error. 412 * 413 * See reset_control_get_shared() for more information. 414 */ 415static inline struct reset_control *reset_control_get_optional_shared( 416 struct device *dev, const char *id) 417{ 418 return __reset_control_get(dev, id, 0, true, true, false); 419} 420 421/** 422 * reset_control_bulk_get_optional_shared - optional 423 * reset_control_bulk_get_shared() 424 * @dev: device to be reset by the controller 425 * @num_rstcs: number of entries in rstcs array 426 * @rstcs: array of struct reset_control_bulk_data with reset line names set 427 * 428 * Optional variant of reset_control_bulk_get_shared(). If the requested resets 429 * are not specified in the device tree, this function sets them to NULL 430 * instead of returning an error. 431 * 432 * See reset_control_bulk_get_shared() for more information. 433 */ 434static inline int __must_check 435reset_control_bulk_get_optional_shared(struct device *dev, int num_rstcs, 436 struct reset_control_bulk_data *rstcs) 437{ 438 return __reset_control_bulk_get(dev, num_rstcs, rstcs, true, true, false); 439} 440 441/** 442 * of_reset_control_get_exclusive - Lookup and obtain an exclusive reference 443 * to a reset controller. 444 * @node: device to be reset by the controller 445 * @id: reset line name 446 * 447 * Returns a struct reset_control or IS_ERR() condition containing errno. 448 * 449 * Use of id names is optional. 450 */ 451static inline struct reset_control *of_reset_control_get_exclusive( 452 struct device_node *node, const char *id) 453{ 454 return __of_reset_control_get(node, id, 0, false, false, true); 455} 456 457/** 458 * of_reset_control_get_shared - Lookup and obtain a shared reference 459 * to a reset controller. 460 * @node: device to be reset by the controller 461 * @id: reset line name 462 * 463 * When a reset-control is shared, the behavior of reset_control_assert / 464 * deassert is changed, the reset-core will keep track of a deassert_count 465 * and only (re-)assert the reset after reset_control_assert has been called 466 * as many times as reset_control_deassert was called. Also see the remark 467 * about shared reset-controls in the reset_control_assert docs. 468 * 469 * Calling reset_control_assert without first calling reset_control_deassert 470 * is not allowed on a shared reset control. Calling reset_control_reset is 471 * also not allowed on a shared reset control. 472 * Returns a struct reset_control or IS_ERR() condition containing errno. 473 * 474 * Use of id names is optional. 475 */ 476static inline struct reset_control *of_reset_control_get_shared( 477 struct device_node *node, const char *id) 478{ 479 return __of_reset_control_get(node, id, 0, true, false, false); 480} 481 482/** 483 * of_reset_control_get_exclusive_by_index - Lookup and obtain an exclusive 484 * reference to a reset controller 485 * by index. 486 * @node: device to be reset by the controller 487 * @index: index of the reset controller 488 * 489 * This is to be used to perform a list of resets for a device or power domain 490 * in whatever order. Returns a struct reset_control or IS_ERR() condition 491 * containing errno. 492 */ 493static inline struct reset_control *of_reset_control_get_exclusive_by_index( 494 struct device_node *node, int index) 495{ 496 return __of_reset_control_get(node, NULL, index, false, false, true); 497} 498 499/** 500 * of_reset_control_get_shared_by_index - Lookup and obtain a shared 501 * reference to a reset controller 502 * by index. 503 * @node: device to be reset by the controller 504 * @index: index of the reset controller 505 * 506 * When a reset-control is shared, the behavior of reset_control_assert / 507 * deassert is changed, the reset-core will keep track of a deassert_count 508 * and only (re-)assert the reset after reset_control_assert has been called 509 * as many times as reset_control_deassert was called. Also see the remark 510 * about shared reset-controls in the reset_control_assert docs. 511 * 512 * Calling reset_control_assert without first calling reset_control_deassert 513 * is not allowed on a shared reset control. Calling reset_control_reset is 514 * also not allowed on a shared reset control. 515 * Returns a struct reset_control or IS_ERR() condition containing errno. 516 * 517 * This is to be used to perform a list of resets for a device or power domain 518 * in whatever order. Returns a struct reset_control or IS_ERR() condition 519 * containing errno. 520 */ 521static inline struct reset_control *of_reset_control_get_shared_by_index( 522 struct device_node *node, int index) 523{ 524 return __of_reset_control_get(node, NULL, index, true, false, false); 525} 526 527/** 528 * devm_reset_control_get_exclusive - resource managed 529 * reset_control_get_exclusive() 530 * @dev: device to be reset by the controller 531 * @id: reset line name 532 * 533 * Managed reset_control_get_exclusive(). For reset controllers returned 534 * from this function, reset_control_put() is called automatically on driver 535 * detach. 536 * 537 * See reset_control_get_exclusive() for more information. 538 */ 539static inline struct reset_control * 540__must_check devm_reset_control_get_exclusive(struct device *dev, 541 const char *id) 542{ 543 return __devm_reset_control_get(dev, id, 0, false, false, true); 544} 545 546/** 547 * devm_reset_control_bulk_get_exclusive - resource managed 548 * reset_control_bulk_get_exclusive() 549 * @dev: device to be reset by the controller 550 * @num_rstcs: number of entries in rstcs array 551 * @rstcs: array of struct reset_control_bulk_data with reset line names set 552 * 553 * Managed reset_control_bulk_get_exclusive(). For reset controllers returned 554 * from this function, reset_control_put() is called automatically on driver 555 * detach. 556 * 557 * See reset_control_bulk_get_exclusive() for more information. 558 */ 559static inline int __must_check 560devm_reset_control_bulk_get_exclusive(struct device *dev, int num_rstcs, 561 struct reset_control_bulk_data *rstcs) 562{ 563 return __devm_reset_control_bulk_get(dev, num_rstcs, rstcs, false, false, true); 564} 565 566/** 567 * devm_reset_control_get_exclusive_released - resource managed 568 * reset_control_get_exclusive_released() 569 * @dev: device to be reset by the controller 570 * @id: reset line name 571 * 572 * Managed reset_control_get_exclusive_released(). For reset controllers 573 * returned from this function, reset_control_put() is called automatically on 574 * driver detach. 575 * 576 * See reset_control_get_exclusive_released() for more information. 577 */ 578static inline struct reset_control * 579__must_check devm_reset_control_get_exclusive_released(struct device *dev, 580 const char *id) 581{ 582 return __devm_reset_control_get(dev, id, 0, false, false, false); 583} 584 585/** 586 * devm_reset_control_bulk_get_exclusive_released - resource managed 587 * reset_control_bulk_get_exclusive_released() 588 * @dev: device to be reset by the controller 589 * @num_rstcs: number of entries in rstcs array 590 * @rstcs: array of struct reset_control_bulk_data with reset line names set 591 * 592 * Managed reset_control_bulk_get_exclusive_released(). For reset controllers 593 * returned from this function, reset_control_put() is called automatically on 594 * driver detach. 595 * 596 * See reset_control_bulk_get_exclusive_released() for more information. 597 */ 598static inline int __must_check 599devm_reset_control_bulk_get_exclusive_released(struct device *dev, int num_rstcs, 600 struct reset_control_bulk_data *rstcs) 601{ 602 return __devm_reset_control_bulk_get(dev, num_rstcs, rstcs, false, false, false); 603} 604 605/** 606 * devm_reset_control_get_optional_exclusive_released - resource managed 607 * reset_control_get_optional_exclusive_released() 608 * @dev: device to be reset by the controller 609 * @id: reset line name 610 * 611 * Managed-and-optional variant of reset_control_get_exclusive_released(). For 612 * reset controllers returned from this function, reset_control_put() is called 613 * automatically on driver detach. 614 * 615 * See reset_control_get_exclusive_released() for more information. 616 */ 617static inline struct reset_control * 618__must_check devm_reset_control_get_optional_exclusive_released(struct device *dev, 619 const char *id) 620{ 621 return __devm_reset_control_get(dev, id, 0, false, true, false); 622} 623 624/** 625 * devm_reset_control_bulk_get_optional_exclusive_released - resource managed 626 * reset_control_bulk_optional_get_exclusive_released() 627 * @dev: device to be reset by the controller 628 * @num_rstcs: number of entries in rstcs array 629 * @rstcs: array of struct reset_control_bulk_data with reset line names set 630 * 631 * Managed reset_control_bulk_optional_get_exclusive_released(). For reset 632 * controllers returned from this function, reset_control_put() is called 633 * automatically on driver detach. 634 * 635 * See reset_control_bulk_optional_get_exclusive_released() for more information. 636 */ 637static inline int __must_check 638devm_reset_control_bulk_get_optional_exclusive_released(struct device *dev, int num_rstcs, 639 struct reset_control_bulk_data *rstcs) 640{ 641 return __devm_reset_control_bulk_get(dev, num_rstcs, rstcs, false, true, false); 642} 643 644/** 645 * devm_reset_control_get_shared - resource managed reset_control_get_shared() 646 * @dev: device to be reset by the controller 647 * @id: reset line name 648 * 649 * Managed reset_control_get_shared(). For reset controllers returned from 650 * this function, reset_control_put() is called automatically on driver detach. 651 * See reset_control_get_shared() for more information. 652 */ 653static inline struct reset_control *devm_reset_control_get_shared( 654 struct device *dev, const char *id) 655{ 656 return __devm_reset_control_get(dev, id, 0, true, false, false); 657} 658 659/** 660 * devm_reset_control_bulk_get_shared - resource managed 661 * reset_control_bulk_get_shared() 662 * @dev: device to be reset by the controller 663 * @num_rstcs: number of entries in rstcs array 664 * @rstcs: array of struct reset_control_bulk_data with reset line names set 665 * 666 * Managed reset_control_bulk_get_shared(). For reset controllers returned 667 * from this function, reset_control_put() is called automatically on driver 668 * detach. 669 * 670 * See reset_control_bulk_get_shared() for more information. 671 */ 672static inline int __must_check 673devm_reset_control_bulk_get_shared(struct device *dev, int num_rstcs, 674 struct reset_control_bulk_data *rstcs) 675{ 676 return __devm_reset_control_bulk_get(dev, num_rstcs, rstcs, true, false, false); 677} 678 679/** 680 * devm_reset_control_get_optional_exclusive - resource managed 681 * reset_control_get_optional_exclusive() 682 * @dev: device to be reset by the controller 683 * @id: reset line name 684 * 685 * Managed reset_control_get_optional_exclusive(). For reset controllers 686 * returned from this function, reset_control_put() is called automatically on 687 * driver detach. 688 * 689 * See reset_control_get_optional_exclusive() for more information. 690 */ 691static inline struct reset_control *devm_reset_control_get_optional_exclusive( 692 struct device *dev, const char *id) 693{ 694 return __devm_reset_control_get(dev, id, 0, false, true, true); 695} 696 697/** 698 * devm_reset_control_bulk_get_optional_exclusive - resource managed 699 * reset_control_bulk_get_optional_exclusive() 700 * @dev: device to be reset by the controller 701 * @num_rstcs: number of entries in rstcs array 702 * @rstcs: array of struct reset_control_bulk_data with reset line names set 703 * 704 * Managed reset_control_bulk_get_optional_exclusive(). For reset controllers 705 * returned from this function, reset_control_put() is called automatically on 706 * driver detach. 707 * 708 * See reset_control_bulk_get_optional_exclusive() for more information. 709 */ 710static inline int __must_check 711devm_reset_control_bulk_get_optional_exclusive(struct device *dev, int num_rstcs, 712 struct reset_control_bulk_data *rstcs) 713{ 714 return __devm_reset_control_bulk_get(dev, num_rstcs, rstcs, true, false, true); 715} 716 717/** 718 * devm_reset_control_get_optional_shared - resource managed 719 * reset_control_get_optional_shared() 720 * @dev: device to be reset by the controller 721 * @id: reset line name 722 * 723 * Managed reset_control_get_optional_shared(). For reset controllers returned 724 * from this function, reset_control_put() is called automatically on driver 725 * detach. 726 * 727 * See reset_control_get_optional_shared() for more information. 728 */ 729static inline struct reset_control *devm_reset_control_get_optional_shared( 730 struct device *dev, const char *id) 731{ 732 return __devm_reset_control_get(dev, id, 0, true, true, false); 733} 734 735/** 736 * devm_reset_control_bulk_get_optional_shared - resource managed 737 * reset_control_bulk_get_optional_shared() 738 * @dev: device to be reset by the controller 739 * @num_rstcs: number of entries in rstcs array 740 * @rstcs: array of struct reset_control_bulk_data with reset line names set 741 * 742 * Managed reset_control_bulk_get_optional_shared(). For reset controllers 743 * returned from this function, reset_control_put() is called automatically on 744 * driver detach. 745 * 746 * See reset_control_bulk_get_optional_shared() for more information. 747 */ 748static inline int __must_check 749devm_reset_control_bulk_get_optional_shared(struct device *dev, int num_rstcs, 750 struct reset_control_bulk_data *rstcs) 751{ 752 return __devm_reset_control_bulk_get(dev, num_rstcs, rstcs, true, true, false); 753} 754 755/** 756 * devm_reset_control_get_exclusive_by_index - resource managed 757 * reset_control_get_exclusive() 758 * @dev: device to be reset by the controller 759 * @index: index of the reset controller 760 * 761 * Managed reset_control_get_exclusive(). For reset controllers returned from 762 * this function, reset_control_put() is called automatically on driver 763 * detach. 764 * 765 * See reset_control_get_exclusive() for more information. 766 */ 767static inline struct reset_control * 768devm_reset_control_get_exclusive_by_index(struct device *dev, int index) 769{ 770 return __devm_reset_control_get(dev, NULL, index, false, false, true); 771} 772 773/** 774 * devm_reset_control_get_shared_by_index - resource managed 775 * reset_control_get_shared 776 * @dev: device to be reset by the controller 777 * @index: index of the reset controller 778 * 779 * Managed reset_control_get_shared(). For reset controllers returned from 780 * this function, reset_control_put() is called automatically on driver detach. 781 * See reset_control_get_shared() for more information. 782 */ 783static inline struct reset_control * 784devm_reset_control_get_shared_by_index(struct device *dev, int index) 785{ 786 return __devm_reset_control_get(dev, NULL, index, true, false, false); 787} 788 789/* 790 * TEMPORARY calls to use during transition: 791 * 792 * of_reset_control_get() => of_reset_control_get_exclusive() 793 * 794 * These inline function calls will be removed once all consumers 795 * have been moved over to the new explicit API. 796 */ 797static inline struct reset_control *of_reset_control_get( 798 struct device_node *node, const char *id) 799{ 800 return of_reset_control_get_exclusive(node, id); 801} 802 803static inline struct reset_control *of_reset_control_get_by_index( 804 struct device_node *node, int index) 805{ 806 return of_reset_control_get_exclusive_by_index(node, index); 807} 808 809static inline struct reset_control *devm_reset_control_get( 810 struct device *dev, const char *id) 811{ 812 return devm_reset_control_get_exclusive(dev, id); 813} 814 815static inline struct reset_control *devm_reset_control_get_optional( 816 struct device *dev, const char *id) 817{ 818 return devm_reset_control_get_optional_exclusive(dev, id); 819 820} 821 822static inline struct reset_control *devm_reset_control_get_by_index( 823 struct device *dev, int index) 824{ 825 return devm_reset_control_get_exclusive_by_index(dev, index); 826} 827 828/* 829 * APIs to manage a list of reset controllers 830 */ 831static inline struct reset_control * 832devm_reset_control_array_get_exclusive(struct device *dev) 833{ 834 return devm_reset_control_array_get(dev, false, false); 835} 836 837static inline struct reset_control * 838devm_reset_control_array_get_shared(struct device *dev) 839{ 840 return devm_reset_control_array_get(dev, true, false); 841} 842 843static inline struct reset_control * 844devm_reset_control_array_get_optional_exclusive(struct device *dev) 845{ 846 return devm_reset_control_array_get(dev, false, true); 847} 848 849static inline struct reset_control * 850devm_reset_control_array_get_optional_shared(struct device *dev) 851{ 852 return devm_reset_control_array_get(dev, true, true); 853} 854 855static inline struct reset_control * 856of_reset_control_array_get_exclusive(struct device_node *node) 857{ 858 return of_reset_control_array_get(node, false, false, true); 859} 860 861static inline struct reset_control * 862of_reset_control_array_get_exclusive_released(struct device_node *node) 863{ 864 return of_reset_control_array_get(node, false, false, false); 865} 866 867static inline struct reset_control * 868of_reset_control_array_get_shared(struct device_node *node) 869{ 870 return of_reset_control_array_get(node, true, false, true); 871} 872 873static inline struct reset_control * 874of_reset_control_array_get_optional_exclusive(struct device_node *node) 875{ 876 return of_reset_control_array_get(node, false, true, true); 877} 878 879static inline struct reset_control * 880of_reset_control_array_get_optional_shared(struct device_node *node) 881{ 882 return of_reset_control_array_get(node, true, true, true); 883} 884#endif