| /kernel/linux/linux-5.10/drivers/base/firmware_loader/ |
| D | main.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * main.c - Multi purpose firmware loading support 7 * Please see Documentation/driver-api/firmware/ for more information. 25 #include <linux/firmware.h> 42 #include "firmware.h" 46 MODULE_DESCRIPTION("Multi purpose firmware loading support"); 57 * Names of firmware images which have been cached successfully 59 * helper can trace which firmware images have been cached 73 const char *name; member 78 const char *name; member [all …]
|
| D | fallback.c | 1 // SPDX-License-Identifier: GPL-2.0 15 #include "firmware.h" 18 * firmware fallback mechanism 38 * use small loading timeout for caching devices' firmware because all these 39 * firmware images have been loaded successfully at lease once, also system is 40 * ready for completing firmware loading now. The maximum size of firmware in 80 struct firmware *fw; 102 struct fw_priv *fw_priv = fw_sysfs->fw_priv; in fw_load_abort() 117 if (!fw_priv->need_uevent || !only_kill_custom) in kill_pending_fw_fallback_reqs() 130 * firmware_timeout_store() - set number of seconds to wait for firmware [all …]
|
| /kernel/linux/linux-6.6/include/linux/ |
| D | firmware.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 12 struct firmware { struct 16 /* firmware loader private fields */ argument 21 * enum fw_upload_err - firmware upload error codes argument 24 * @FW_UPLOAD_ERR_TIMEOUT: SW timed out on handshake with HW/firmware 27 * @FW_UPLOAD_ERR_INVALID_SIZE: invalid firmware image size 29 * @FW_UPLOAD_ERR_WEAROUT: FLASH device is approaching wear-out, wait & retry 46 void *priv; /* firmware loader private fields */ 50 * struct fw_upload_ops - device specific operations to support firmware upload 82 * Built-in firmware functionality is only available if FW_LOADER=y, but not [all …]
|
| /kernel/linux/linux-6.6/drivers/base/firmware_loader/ |
| D | main.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * main.c - Multi purpose firmware loading support 7 * Please see Documentation/driver-api/firmware/ for more information. 26 #include <linux/firmware.h> 44 #include "firmware.h" 48 MODULE_DESCRIPTION("Multi purpose firmware loading support"); 59 * Names of firmware images which have been cached successfully 61 * helper can trace which firmware images have been cached 75 const char *name; member 80 const char *name; member [all …]
|
| D | fallback.c | 1 // SPDX-License-Identifier: GPL-2.0 12 #include "firmware.h" 15 * firmware fallback mechanism 19 * use small loading timeout for caching devices' firmware because all these 20 * firmware images have been loaded successfully at lease once, also system is 21 * ready for completing firmware loading now. The maximum size of firmware in 57 if (!fw_priv->need_uevent || !only_kill_custom) in kill_pending_fw_fallback_reqs() 64 * fw_load_sysfs_fallback() - load a firmware via the sysfs fallback mechanism 65 * @fw_sysfs: firmware sysfs information for the firmware to load 68 * In charge of constructing a sysfs fallback interface for firmware loading. [all …]
|
| /kernel/linux/linux-5.10/include/linux/ |
| D | firmware.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 12 struct firmware { struct 16 /* firmware loader private fields */ argument 24 char *name; member 34 #define DECLARE_BUILTIN_FIRMWARE(name, blob) \ argument 35 DECLARE_BUILTIN_FIRMWARE_SIZE(name, &(blob), sizeof(blob)) 37 #define DECLARE_BUILTIN_FIRMWARE_SIZE(name, blob, size) \ argument 39 __used __section(".builtin_fw") = { name, blob, size } 42 int request_firmware(const struct firmware **fw, const char *name, 44 int firmware_request_nowarn(const struct firmware **fw, const char *name, [all …]
|
| /kernel/linux/linux-6.6/drivers/base/firmware_loader/builtin/ |
| D | main.c | 1 // SPDX-License-Identifier: GPL-2.0 2 /* Builtin firmware support */ 4 #include <linux/firmware.h> 5 #include "../firmware.h" 11 char *name; member 19 static bool fw_copy_to_prealloc_buf(struct firmware *fw, in fw_copy_to_prealloc_buf() 24 if (size < fw->size) in fw_copy_to_prealloc_buf() 26 memcpy(buf, fw->data, fw->size); in fw_copy_to_prealloc_buf() 31 * firmware_request_builtin() - load builtin firmware 32 * @fw: pointer to firmware struct [all …]
|
| /kernel/linux/linux-5.10/tools/testing/selftests/firmware/ |
| D | fw_fallback.sh | 2 # SPDX-License-Identifier: GPL-2.0 4 # to load firmware it can't find on disk itself. We must request a firmware 7 set -e 23 local name="$1" 27 echo -n "$name" >"$DIR"/trigger_request & 31 while [ ! -e "$DIR"/"$name"/loading ]; do 33 timeout=$(( $timeout - 1 )) 34 if [ "$timeout" -eq 0 ]; then 35 echo "$0: firmware interface never appeared" >&2 40 echo 1 >"$DIR"/"$name"/loading [all …]
|
| D | fw_filesystem.sh | 2 # SPDX-License-Identifier: GPL-2.0 3 # This validates that the kernel will load firmware out of its list of 4 # firmware locations on disk. Since the user helper does similar work, 7 set -e 23 echo 1 >/sys/class/firmware/timeout 31 if [ ! -e "$DIR"/trigger_async_request ]; then 41 # Request a firmware that doesn't exist, it should fail. 42 if echo -n "nope-$NAME" >"$DIR"/trigger_request 2> /dev/null; then 43 echo "$0: firmware shouldn't have loaded" >&2 46 if diff -q "$FW" /dev/test_firmware >/dev/null ; then [all …]
|
| /kernel/linux/linux-6.6/tools/testing/selftests/firmware/ |
| D | fw_fallback.sh | 2 # SPDX-License-Identifier: GPL-2.0 4 # to load firmware it can't find on disk itself. We must request a firmware 7 set -e 23 local name="$1" 27 echo -n "$name" >"$DIR"/trigger_request & 31 while [ ! -e "$DIR"/"$name"/loading ]; do 33 timeout=$(( $timeout - 1 )) 34 if [ "$timeout" -eq 0 ]; then 35 echo "$0: firmware interface never appeared" >&2 40 echo 1 >"$DIR"/"$name"/loading [all …]
|
| D | fw_filesystem.sh | 2 # SPDX-License-Identifier: GPL-2.0 3 # This validates that the kernel will load firmware out of its list of 4 # firmware locations on disk. Since the user helper does similar work, 7 set -e 14 RUN_XZ="xz -C crc32 --lzma2=dict=2MiB" 15 RUN_ZSTD="zstd -q" 26 echo 1 >/sys/class/firmware/timeout 34 if [ ! -e "$DIR"/trigger_async_request ]; then 44 # Request a firmware that doesn't exist, it should fail. 45 if echo -n "nope-$NAME" >"$DIR"/trigger_request 2> /dev/null; then [all …]
|
| /kernel/linux/linux-6.6/drivers/net/wireless/marvell/libertas/ |
| D | firmware.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Firmware loading and handling functions. 7 #include <linux/firmware.h> 16 const struct firmware *helper, const struct firmware *mainfw) in lbs_fw_loaded() 20 lbs_deb_fw("firmware load complete, code %d\n", ret); in lbs_fw_loaded() 23 priv->fw_callback(priv, ret, helper, mainfw); in lbs_fw_loaded() 25 spin_lock_irqsave(&priv->driver_lock, flags); in lbs_fw_loaded() 26 priv->fw_callback = NULL; in lbs_fw_loaded() 27 wake_up(&priv->fw_waitq); in lbs_fw_loaded() 28 spin_unlock_irqrestore(&priv->driver_lock, flags); in lbs_fw_loaded() [all …]
|
| /kernel/linux/linux-5.10/drivers/net/wireless/marvell/libertas/ |
| D | firmware.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Firmware loading and handling functions. 7 #include <linux/firmware.h> 16 const struct firmware *helper, const struct firmware *mainfw) in lbs_fw_loaded() 20 lbs_deb_fw("firmware load complete, code %d\n", ret); in lbs_fw_loaded() 23 priv->fw_callback(priv, ret, helper, mainfw); in lbs_fw_loaded() 25 spin_lock_irqsave(&priv->driver_lock, flags); in lbs_fw_loaded() 26 priv->fw_callback = NULL; in lbs_fw_loaded() 27 wake_up(&priv->fw_waitq); in lbs_fw_loaded() 28 spin_unlock_irqrestore(&priv->driver_lock, flags); in lbs_fw_loaded() [all …]
|
| /kernel/linux/linux-5.10/drivers/gpu/drm/nouveau/nvkm/core/ |
| D | firmware.c | 23 #include <core/firmware.h> 27 const char *name, int ver, const struct firmware **pfw) in nvkm_firmware_load_name() argument 32 snprintf(path, sizeof(path), "%s%s", base, name); in nvkm_firmware_load_name() 42 const char *name, int ver, struct nvkm_blob *blob) in nvkm_firmware_load_blob() argument 44 const struct firmware *fw; in nvkm_firmware_load_blob() 47 ret = nvkm_firmware_load_name(subdev, base, name, ver, &fw); in nvkm_firmware_load_blob() 49 blob->data = kmemdup(fw->data, fw->size, GFP_KERNEL); in nvkm_firmware_load_blob() 50 blob->size = fw->size; in nvkm_firmware_load_blob() 52 if (!blob->data) in nvkm_firmware_load_blob() 53 return -ENOMEM; in nvkm_firmware_load_blob() [all …]
|
| /kernel/linux/linux-6.6/drivers/base/ |
| D | property.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * property.c - Unified device property interface. 22 return IS_ENABLED(CONFIG_OF) && dev->of_node ? in __dev_fwnode() 23 of_fwnode_handle(dev->of_node) : dev->fwnode; in __dev_fwnode() 29 return IS_ENABLED(CONFIG_OF) && dev->of_node ? in __dev_fwnode_const() 30 of_fwnode_handle(dev->of_node) : dev->fwnode; in __dev_fwnode_const() 35 * device_property_present - check if a property of a device is present 37 * @propname: Name of the property 39 * Check if property @propname is present in the device firmware description. 50 * fwnode_property_present - check if a property of a firmware node is present [all …]
|
| /kernel/linux/linux-6.6/drivers/gpu/drm/nouveau/nvkm/core/ |
| D | firmware.c | 23 #include <core/firmware.h> 30 const char *name, int ver, const struct firmware **pfw) in nvkm_firmware_load_name() argument 35 snprintf(path, sizeof(path), "%s%s", base, name); in nvkm_firmware_load_name() 45 const char *name, int ver, struct nvkm_blob *blob) in nvkm_firmware_load_blob() argument 47 const struct firmware *fw; in nvkm_firmware_load_blob() 50 ret = nvkm_firmware_load_name(subdev, base, name, ver, &fw); in nvkm_firmware_load_blob() 52 blob->data = kmemdup(fw->data, fw->size, GFP_KERNEL); in nvkm_firmware_load_blob() 53 blob->size = fw->size; in nvkm_firmware_load_blob() 55 if (!blob->data) in nvkm_firmware_load_blob() 56 return -ENOMEM; in nvkm_firmware_load_blob() [all …]
|
| /kernel/linux/linux-5.10/drivers/media/usb/dvb-usb/ |
| D | dvb-usb-firmware.c | 1 // SPDX-License-Identifier: GPL-2.0 2 /* dvb-usb-firmware.c is part of the DVB USB library. 4 * Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de) 5 * see dvb-usb-init.c for copyright information. 7 * This file contains functions for downloading the firmware to Cypress FX 1 and 2 based devices. 9 * FIXME: This part does actually not belong to dvb-usb, but to the usb-subsystem. 11 #include "dvb-usb-common.h" 17 const char *name; /* name of the usb controller */ member 18 u16 cpu_cs_register; /* needs to be restarted, when the firmware has been downloaded. */ 22 { .id = DEVICE_SPECIFIC, .name = "Device specific", .cpu_cs_register = 0 }, [all …]
|
| /kernel/linux/linux-6.6/drivers/media/usb/dvb-usb/ |
| D | dvb-usb-firmware.c | 1 // SPDX-License-Identifier: GPL-2.0 2 /* dvb-usb-firmware.c is part of the DVB USB library. 4 * Copyright (C) 2004-6 Patrick Boettcher (patrick.boettcher@posteo.de) 5 * see dvb-usb-init.c for copyright information. 7 * This file contains functions for downloading the firmware to Cypress FX 1 and 2 based devices. 9 * FIXME: This part does actually not belong to dvb-usb, but to the usb-subsystem. 11 #include "dvb-usb-common.h" 17 const char *name; /* name of the usb controller */ member 18 u16 cpu_cs_register; /* needs to be restarted, when the firmware has been downloaded. */ 22 { .id = DEVICE_SPECIFIC, .name = "Device specific", .cpu_cs_register = 0 }, [all …]
|
| /kernel/linux/linux-6.6/Documentation/ABI/testing/ |
| D | sysfs-firmware-qemu_fw_cfg | 1 What: /sys/firmware/qemu_fw_cfg/ 6 sun4*, ppc/mac) are provisioned with a firmware configuration 8 provide configuration data to the guest firmware. Starting 11 useful as an out-of-band, asynchronous mechanism for providing 14 The authoritative guest-side hardware interface documentation 17 https://qemu-project.gitlab.io/qemu/specs/fw_cfg.html 29 /sys/firmware/qemu_fw_cfg/ 33 /sys/firmware/qemu_fw_cfg/rev 41 /sys/firmware/qemu_fw_cfg/by_key/32 42 /sys/firmware/qemu_fw_cfg/by_key/33 [all …]
|
| /kernel/linux/linux-5.10/Documentation/ABI/testing/ |
| D | sysfs-firmware-qemu_fw_cfg | 1 What: /sys/firmware/qemu_fw_cfg/ 6 sun4*, ppc/mac) are provisioned with a firmware configuration 8 provide configuration data to the guest firmware. Starting 11 useful as an out-of-band, asynchronous mechanism for providing 14 The authoritative guest-side hardware interface documentation 28 /sys/firmware/qemu_fw_cfg/ 32 /sys/firmware/qemu_fw_cfg/rev 40 /sys/firmware/qemu_fw_cfg/by_key/32 41 /sys/firmware/qemu_fw_cfg/by_key/33 42 /sys/firmware/qemu_fw_cfg/by_key/34 [all …]
|
| /kernel/linux/linux-5.10/Documentation/driver-api/firmware/ |
| D | fallback-mechanisms.rst | 6 filesystem lookup on the root filesystem or when the firmware simply cannot be 8 configuration options related to supporting the firmware fallback mechanism are: 10 * CONFIG_FW_LOADER_USER_HELPER: enables building the firmware fallback 15 enable the kobject uevent fallback mechanism on all firmware API calls 21 manually load the firmware. Read below for more details. 31 Justifying the firmware fallback mechanism 40 * Races upon resume from suspend. This is resolved by the firmware cache, but 41 the firmware cache is only supported if you use uevents, and its not 44 * Firmware is not accessible through typical means: 47 * The firmware provides very unique device specific data tailored for [all …]
|
| /kernel/linux/linux-6.6/Documentation/driver-api/firmware/ |
| D | fallback-mechanisms.rst | 6 filesystem lookup on the root filesystem or when the firmware simply cannot be 8 configuration options related to supporting the firmware fallback mechanism are: 10 * CONFIG_FW_LOADER_USER_HELPER: enables building the firmware fallback 15 enable the kobject uevent fallback mechanism on all firmware API calls 21 manually load the firmware. Read below for more details. 31 Justifying the firmware fallback mechanism 40 * Races upon resume from suspend. This is resolved by the firmware cache, but 41 the firmware cache is only supported if you use uevents, and its not 44 * Firmware is not accessible through typical means: 47 * The firmware provides very unique device specific data tailored for [all …]
|
| /kernel/linux/linux-5.10/lib/ |
| D | test_firmware.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * This module provides an interface to trigger and test firmware loading. 5 * It is designed to be used for basic evaluation of the firmware loading 6 * subsystem (for example when validating firmware verification). It lacks 8 * unless explicitly requested by name. 17 #include <linux/firmware.h> 32 #define TEST_FIRMWARE_NAME "test-firmware.bin" 37 static const struct firmware *test_firmware; 43 const struct firmware *fw; 44 const char *name; member [all …]
|
| /kernel/linux/linux-5.10/drivers/base/ |
| D | property.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * property.c - Unified device property interface. 23 return IS_ENABLED(CONFIG_OF) && dev->of_node ? in dev_fwnode() 24 &dev->of_node->fwnode : dev->fwnode; in dev_fwnode() 29 * device_property_present - check if a property of a device is present 31 * @propname: Name of the property 33 * Check if property @propname is present in the device firmware description. 42 * fwnode_property_present - check if a property of a firmware node is present 43 * @fwnode: Firmware node whose property to check 44 * @propname: Name of the property [all …]
|
| /kernel/linux/linux-6.6/Documentation/networking/devlink/ |
| D | devlink-info.rst | 1 .. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 7 The ``devlink-info`` mechanism enables device drivers to report device 8 (hardware and firmware) information in a standard, extensible fashion. 10 The original motivation for the ``devlink-info`` API was twofold: 12 - making it possible to automate device and firmware management in a fleet 13 of machines in a vendor-independent fashion (see also 14 :ref:`Documentation/networking/devlink/devlink-flash.rst <devlink_flash>`); 15 - name the per component FW versions (as opposed to the crowded ethtool 18 ``devlink-info`` supports reporting multiple types of objects. Reporting driver 19 versions is generally discouraged - here, and via any other Linux API. [all …]
|