diff options
Diffstat (limited to 'drivers/base/firmware_class.c')
| -rw-r--r-- | drivers/base/firmware_class.c | 69 |
1 files changed, 41 insertions, 28 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 4acb2c5733c3..98f6c02d6790 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c | |||
| @@ -62,14 +62,16 @@ firmware_timeout_show(struct class *class, char *buf) | |||
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | /** | 64 | /** |
| 65 | * firmware_timeout_store: | 65 | * firmware_timeout_store - set number of seconds to wait for firmware |
| 66 | * Description: | 66 | * @class: device class pointer |
| 67 | * @buf: buffer to scan for timeout value | ||
| 68 | * @count: number of bytes in @buf | ||
| 69 | * | ||
| 67 | * Sets the number of seconds to wait for the firmware. Once | 70 | * Sets the number of seconds to wait for the firmware. Once |
| 68 | * this expires an error will be return to the driver and no | 71 | * this expires an error will be returned to the driver and no |
| 69 | * firmware will be provided. | 72 | * firmware will be provided. |
| 70 | * | 73 | * |
| 71 | * Note: zero means 'wait for ever' | 74 | * Note: zero means 'wait forever'. |
| 72 | * | ||
| 73 | **/ | 75 | **/ |
| 74 | static ssize_t | 76 | static ssize_t |
| 75 | firmware_timeout_store(struct class *class, const char *buf, size_t count) | 77 | firmware_timeout_store(struct class *class, const char *buf, size_t count) |
| @@ -123,12 +125,15 @@ firmware_loading_show(struct class_device *class_dev, char *buf) | |||
| 123 | } | 125 | } |
| 124 | 126 | ||
| 125 | /** | 127 | /** |
| 126 | * firmware_loading_store: - loading control file | 128 | * firmware_loading_store - set value in the 'loading' control file |
| 127 | * Description: | 129 | * @class_dev: class_device pointer |
| 130 | * @buf: buffer to scan for loading control value | ||
| 131 | * @count: number of bytes in @buf | ||
| 132 | * | ||
| 128 | * The relevant values are: | 133 | * The relevant values are: |
| 129 | * | 134 | * |
| 130 | * 1: Start a load, discarding any previous partial load. | 135 | * 1: Start a load, discarding any previous partial load. |
| 131 | * 0: Conclude the load and handle the data to the driver code. | 136 | * 0: Conclude the load and hand the data to the driver code. |
| 132 | * -1: Conclude the load with an error and discard any written data. | 137 | * -1: Conclude the load with an error and discard any written data. |
| 133 | **/ | 138 | **/ |
| 134 | static ssize_t | 139 | static ssize_t |
| @@ -201,6 +206,7 @@ out: | |||
| 201 | up(&fw_lock); | 206 | up(&fw_lock); |
| 202 | return ret_count; | 207 | return ret_count; |
| 203 | } | 208 | } |
| 209 | |||
| 204 | static int | 210 | static int |
| 205 | fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size) | 211 | fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size) |
| 206 | { | 212 | { |
| @@ -227,11 +233,13 @@ fw_realloc_buffer(struct firmware_priv *fw_priv, int min_size) | |||
| 227 | } | 233 | } |
| 228 | 234 | ||
| 229 | /** | 235 | /** |
| 230 | * firmware_data_write: | 236 | * firmware_data_write - write method for firmware |
| 237 | * @kobj: kobject for the class_device | ||
| 238 | * @buffer: buffer being written | ||
| 239 | * @offset: buffer offset for write in total data store area | ||
| 240 | * @count: buffer size | ||
| 231 | * | 241 | * |
| 232 | * Description: | 242 | * Data written to the 'data' attribute will be later handed to |
| 233 | * | ||
| 234 | * Data written to the 'data' attribute will be later handled to | ||
| 235 | * the driver as a firmware image. | 243 | * the driver as a firmware image. |
| 236 | **/ | 244 | **/ |
| 237 | static ssize_t | 245 | static ssize_t |
| @@ -264,6 +272,7 @@ out: | |||
| 264 | up(&fw_lock); | 272 | up(&fw_lock); |
| 265 | return retval; | 273 | return retval; |
| 266 | } | 274 | } |
| 275 | |||
| 267 | static struct bin_attribute firmware_attr_data_tmpl = { | 276 | static struct bin_attribute firmware_attr_data_tmpl = { |
| 268 | .attr = {.name = "data", .mode = 0644, .owner = THIS_MODULE}, | 277 | .attr = {.name = "data", .mode = 0644, .owner = THIS_MODULE}, |
| 269 | .size = 0, | 278 | .size = 0, |
| @@ -448,13 +457,16 @@ out: | |||
| 448 | 457 | ||
| 449 | /** | 458 | /** |
| 450 | * request_firmware: - request firmware to hotplug and wait for it | 459 | * request_firmware: - request firmware to hotplug and wait for it |
| 451 | * Description: | 460 | * @firmware_p: pointer to firmware image |
| 452 | * @firmware will be used to return a firmware image by the name | 461 | * @name: name of firmware file |
| 462 | * @device: device for which firmware is being loaded | ||
| 463 | * | ||
| 464 | * @firmware_p will be used to return a firmware image by the name | ||
| 453 | * of @name for device @device. | 465 | * of @name for device @device. |
| 454 | * | 466 | * |
| 455 | * Should be called from user context where sleeping is allowed. | 467 | * Should be called from user context where sleeping is allowed. |
| 456 | * | 468 | * |
| 457 | * @name will be use as $FIRMWARE in the hotplug environment and | 469 | * @name will be used as $FIRMWARE in the hotplug environment and |
| 458 | * should be distinctive enough not to be confused with any other | 470 | * should be distinctive enough not to be confused with any other |
| 459 | * firmware image for this or any other device. | 471 | * firmware image for this or any other device. |
| 460 | **/ | 472 | **/ |
| @@ -468,6 +480,7 @@ request_firmware(const struct firmware **firmware_p, const char *name, | |||
| 468 | 480 | ||
| 469 | /** | 481 | /** |
| 470 | * release_firmware: - release the resource associated with a firmware image | 482 | * release_firmware: - release the resource associated with a firmware image |
| 483 | * @fw: firmware resource to release | ||
| 471 | **/ | 484 | **/ |
| 472 | void | 485 | void |
| 473 | release_firmware(const struct firmware *fw) | 486 | release_firmware(const struct firmware *fw) |
| @@ -480,8 +493,10 @@ release_firmware(const struct firmware *fw) | |||
| 480 | 493 | ||
| 481 | /** | 494 | /** |
| 482 | * register_firmware: - provide a firmware image for later usage | 495 | * register_firmware: - provide a firmware image for later usage |
| 496 | * @name: name of firmware image file | ||
| 497 | * @data: buffer pointer for the firmware image | ||
| 498 | * @size: size of the data buffer area | ||
| 483 | * | 499 | * |
| 484 | * Description: | ||
| 485 | * Make sure that @data will be available by requesting firmware @name. | 500 | * Make sure that @data will be available by requesting firmware @name. |
| 486 | * | 501 | * |
| 487 | * Note: This will not be possible until some kind of persistence | 502 | * Note: This will not be possible until some kind of persistence |
| @@ -526,21 +541,19 @@ request_firmware_work_func(void *arg) | |||
| 526 | } | 541 | } |
| 527 | 542 | ||
| 528 | /** | 543 | /** |
| 529 | * request_firmware_nowait: | 544 | * request_firmware_nowait: asynchronous version of request_firmware |
| 545 | * @module: module requesting the firmware | ||
| 546 | * @hotplug: invokes hotplug event to copy the firmware image if this flag | ||
| 547 | * is non-zero else the firmware copy must be done manually. | ||
| 548 | * @name: name of firmware file | ||
| 549 | * @device: device for which firmware is being loaded | ||
| 550 | * @context: will be passed over to @cont, and | ||
| 551 | * @fw may be %NULL if firmware request fails. | ||
| 552 | * @cont: function will be called asynchronously when the firmware | ||
| 553 | * request is over. | ||
| 530 | * | 554 | * |
| 531 | * Description: | ||
| 532 | * Asynchronous variant of request_firmware() for contexts where | 555 | * Asynchronous variant of request_firmware() for contexts where |
| 533 | * it is not possible to sleep. | 556 | * it is not possible to sleep. |
| 534 | * | ||
| 535 | * @hotplug invokes hotplug event to copy the firmware image if this flag | ||
| 536 | * is non-zero else the firmware copy must be done manually. | ||
| 537 | * | ||
| 538 | * @cont will be called asynchronously when the firmware request is over. | ||
| 539 | * | ||
| 540 | * @context will be passed over to @cont. | ||
| 541 | * | ||
| 542 | * @fw may be %NULL if firmware request fails. | ||
| 543 | * | ||
| 544 | **/ | 557 | **/ |
| 545 | int | 558 | int |
| 546 | request_firmware_nowait( | 559 | request_firmware_nowait( |
