/linux/drivers/base/firmware_loader/ |
H A 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 …]
|
H A 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 (kill_all || !fw_priv->need_uevent) in kill_pending_fw_fallback_reqs() 68 * fw_load_sysfs_fallback() - load a firmware via the sysfs fallback mechanism 69 * @fw_sysfs: firmware sysfs information for the firmware to load 72 * In charge of constructing a sysfs fallback interface for firmware loading. [all …]
|
/linux/include/linux/ |
H A D | firmware.h | 1 /* SPDX-License-Identifier: GPL-2.0 */ 13 struct firmware { struct 17 /* firmware loader private fields */ argument 22 * enum fw_upload_err - firmware upload error codes argument 25 * @FW_UPLOAD_ERR_TIMEOUT: SW timed out on handshake with HW/firmware 28 * @FW_UPLOAD_ERR_INVALID_SIZE: invalid firmware image size 30 * @FW_UPLOAD_ERR_WEAROUT: FLASH device is approaching wear-out, wait & retry 31 * @FW_UPLOAD_ERR_FW_INVALID: invalid firmware file 49 void *priv; /* firmware loader private fields */ 53 * struct fw_upload_ops - device specific operations to support firmware upload [all …]
|
H A D | remoteproc.h | 18 * * Neither the name Texas Instruments nor the names of its 47 * struct resource_table - firmware resource table header 55 * If needed, the remote processor firmware should contain this table 61 * is expected, where the firmware requests a resource, and once allocated, 81 * struct fw_rsc_hdr - firmware resource entry header 95 * enum fw_resource_type - types of resource entries 99 * @RSC_DEVMEM: request to iommu_map a memory-based peripheral. 126 #define FW_RSC_ADDR_ANY (-1) 129 * struct fw_rsc_carveout - physically contiguous memory request 135 * @name: human-readable name of the requested memory region [all …]
|
/linux/drivers/base/firmware_loader/builtin/ |
H A 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 …]
|
/linux/tools/testing/selftests/firmware/ |
H A 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 …]
|
H A 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 …]
|
H A D | fw_upload.sh | 2 # SPDX-License-Identifier: GPL-2.0 3 # This validates the user-initiated fw upload mechanism of the firmware 4 # loader. It verifies that one or more firmware devices can be created 7 set -e 13 errors="hw-error 15 device-busy 16 invalid-file-size 17 read-write-error 18 flash-wearout" 19 error_abort="user-abort" [all …]
|
/linux/drivers/net/wireless/marvell/libertas/ |
H A 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 …]
|
/linux/drivers/media/usb/dvb-usb/ |
H A 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 …]
|
/linux/Documentation/driver-api/firmware/ |
H A 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 …]
|
H A D | firmware-usage-guidelines.rst | 2 Firmware Guidelines 6 firmware files to keep their hardware working. At the same time updated 7 firmware files must not cause any regressions for users of older kernel 10 Drivers that use firmware from linux-firmware should follow the rules in 11 this guide. (Where there is limited control of the firmware, 15 * Firmware files shall be designed in a way that it allows checking for 16 firmware ABI version changes. It is recommended that firmware files be 18 the firmware files in linux-firmware be named with some device 19 specific name, and just the major version. The firmware version should 20 be stored in the firmware header, or as an exception, as part of the [all …]
|
/linux/Documentation/ABI/testing/ |
H A 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 …]
|
/linux/Documentation/admin-guide/acpi/ |
H A D | ssdt-overlays.rst | 1 .. SPDX-License-Identifier: GPL-2.0 7 In order to support ACPI open-ended hardware configurations (e.g. development 8 boards) we need a way to augment the ACPI configuration provided by the firmware 13 recompiling the firmware image with updated ACPI tables, neither is practical: 15 access to firmware tools which are often not publicly available. 18 way to augment firmware ACPI configuration is by dynamically loading 33 Name (_HID, "BMA222E") 34 Name (RBUF, ResourceTemplate () 59 ASL Optimizing Compiler version 20140214-64 [Mar 29 2014] 60 Copyright (c) 2000 - 2014 Intel Corporation [all …]
|
/linux/lib/ |
H A 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" 39 static const struct firmware *test_firmware; 46 const struct firmware *fw; 47 const char *name; member [all …]
|
/linux/drivers/platform/x86/ |
H A D | touchscreen_dmi.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 24 /* The EFI embedded-fw code expects this to be the first member! */ 33 PROPERTY_ENTRY_U32("touchscreen-size-x", 1850), 34 PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), 35 PROPERTY_ENTRY_BOOL("touchscreen-inverted-y"), 36 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"), 37 PROPERTY_ENTRY_BOOL("silead,home-button"), 38 PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-archos-101-cesium-educ.fw"), 48 PROPERTY_ENTRY_U32("touchscreen-size-x", 1850), 49 PROPERTY_ENTRY_U32("touchscreen-size-y", 1280), [all …]
|
/linux/drivers/staging/greybus/Documentation/firmware/ |
H A D | firmware-management | 2 Firmware Management 3 ------------------- 7 Interface-Manifest 8 ------------------ 10 All firmware packages on the Modules or Interfaces are managed by a special 11 Firmware Management Protocol. To support Firmware Management by the AP, the 12 Interface Manifest shall at least contain the Firmware Management Bundle and a 13 Firmware Management Protocol CPort within it. 16 required to manage firmware packages. 18 For example, this is how the Firmware Management part of the Interface Manifest [all …]
|
/linux/drivers/pmdomain/bcm/ |
H A D | raspberrypi-power.c | 1 // SPDX-License-Identifier: GPL-2.0 13 #include <dt-bindings/power/raspberrypi-power.h> 14 #include <soc/bcm2835/raspberrypi-firmware.h> 17 * Firmware indices for the old power domains interface. Only a few 48 * Asks the firmware to enable or disable power on a specific power 55 bool old_interface = rpi_domain->old_interface; in rpi_firmware_set_power() 59 packet.domain = rpi_domain->domain; in rpi_firmware_set_power() 62 ret = rpi_firmware_property(rpi_domain->fw, old_interface ? in rpi_firmware_set_power() 67 dev_err(&domain->dev, "Failed to set %s to %u (%d)\n", in rpi_firmware_set_power() 70 dev_dbg(&domain->dev, "Set %s to %u\n", in rpi_firmware_set_power() [all …]
|
/linux/sound/soc/intel/avs/ |
H A D | avs.h | 1 /* SPDX-License-Identifier: GPL-2.0-only */ 3 * Copyright(c) 2021-2022 Intel Corporation 14 #include <linux/firmware.h> 18 #include <sound/soc-component.h> 36 * struct avs_dsp_ops - Platform-specific DSP operations 51 int (* const load_basefw)(struct avs_dev *, struct firmware *); 52 int (* const load_lib)(struct avs_dev *, struct firmware *, u32); 64 ((adev)->spec->dsp_ops->op(adev, ## __VA_ARGS__)) 76 ((adev)->spec->attributes & AVS_PLATATTR_##attr) 97 const char *name; member [all …]
|
/linux/drivers/gpu/drm/nouveau/nvkm/core/ |
H A 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 …]
|
/linux/Documentation/networking/devlink/ |
H A 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 …]
|
H A D | devlink-flash.rst | 1 .. SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 9 The ``devlink-flash`` API allows updating device firmware. It replaces the 10 older ``ethtool-flash`` mechanism, and doesn't require taking any 13 $ devlink dev flash pci/0000:05:00.0 file flash-boot.bin 15 Note that the file name is a path relative to the firmware loading path 16 (usually ``/lib/firmware/``). Drivers may send status updates to inform 22 The ``devlink-flash`` command allows optionally specifying a mask indicating 26 .. list-table:: List of overwrite mask bits 29 * - Name 30 - Description [all …]
|
/linux/drivers/staging/greybus/ |
H A D | fw-download.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Greybus Firmware Download Protocol Driver. 9 #include <linux/firmware.h> 14 #include "firmware.h" 18 /* Timeout, in jiffies, within which fetch or release firmware must be called */ 25 char name[FW_NAME_SIZE]; member 26 const struct firmware *fw; 30 /* Timeout, in jiffies, within which the firmware shall download */ 48 dev_dbg(fw_req->fw_download->parent, "firmware %s released\n", in fw_req_release() 49 fw_req->name); in fw_req_release() [all …]
|
/linux/Documentation/devicetree/bindings/remoteproc/ |
H A D | ti,pru-rproc.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/remoteproc/ti,pru-rproc.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Suman Anna <s-anna@ti.com> 13 Each Programmable Real-Time Unit and Industrial Communication Subsystem 14 (PRU-ICSS or PRUSS) has two 32-bit load/store RISC CPU cores called 15 Programmable Real-Time Units (PRUs), each represented by a node. Each PRU 17 use the Data RAMs present within the PRU-ICSS for code execution. 27 corresponding PRU-ICSS node. Each node can optionally be rendered inactive by [all …]
|
/linux/drivers/gpu/drm/ |
H A D | drm_edid_load.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 drm_edid_load.c: use a built-in EDID data set or load it via the firmware 10 #include <linux/firmware.h> 24 "Do not probe monitor, use specified EDID blob from /lib/firmware instead."); 26 static const struct drm_edid *edid_load(struct drm_connector *connector, const char *name) in edid_load() argument 28 const struct firmware *fw = NULL; in edid_load() 32 err = request_firmware(&fw, name, connector->dev->dev); in edid_load() 34 drm_err(connector->dev, in edid_load() 35 "[CONNECTOR:%d:%s] Requesting EDID firmware \"%s\" failed (err=%d)\n", in edid_load() 36 connector->base.id, connector->name, in edid_load() [all …]
|