Driver Core updates for 4.16-rc1
Here is the set of "big" driver core patches for 4.16-rc1. The majority of the work here is in the firmware subsystem, with reworks to try to attempt to make the code easier to handle in the long run, but no functional change. There's also some tree-wide sysfs attribute fixups with lots of acks from the various subsystem maintainers, as well as a handful of other normal fixes and changes. And finally, some license cleanups for the driver core and sysfs code. All have been in linux-next for a while with no reported issues. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> -----BEGIN PGP SIGNATURE----- iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCWnLvPw8cZ3JlZ0Brcm9h aC5jb20ACgkQMUfUDdst+ynNzACgkzjPoBytJWbpWFt6SR6L33/u4kEAnRFvVCGL s6ygQPQhZIjKk2Lxa2hC =Zihy -----END PGP SIGNATURE----- Merge tag 'driver-core-4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core Pull driver core updates from Greg KH: "Here is the set of "big" driver core patches for 4.16-rc1. The majority of the work here is in the firmware subsystem, with reworks to try to attempt to make the code easier to handle in the long run, but no functional change. There's also some tree-wide sysfs attribute fixups with lots of acks from the various subsystem maintainers, as well as a handful of other normal fixes and changes. And finally, some license cleanups for the driver core and sysfs code. All have been in linux-next for a while with no reported issues" * tag 'driver-core-4.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (48 commits) device property: Define type of PROPERTY_ENRTY_*() macros device property: Reuse property_entry_free_data() device property: Move property_entry_free_data() upper firmware: Fix up docs referring to FIRMWARE_IN_KERNEL firmware: Drop FIRMWARE_IN_KERNEL Kconfig option USB: serial: keyspan: Drop firmware Kconfig options sysfs: remove DEBUG defines sysfs: use SPDX identifiers drivers: base: add coredump driver ops sysfs: add attribute specification for /sysfs/devices/.../coredump test_firmware: fix missing unlock on error in config_num_requests_store() test_firmware: make local symbol test_fw_config static sysfs: turn WARN() into pr_warn() firmware: Fix a typo in fallback-mechanisms.rst treewide: Use DEVICE_ATTR_WO treewide: Use DEVICE_ATTR_RO treewide: Use DEVICE_ATTR_RW sysfs.h: Use octal permissions component: add debugfs support bus: simple-pm-bus: convert bool SIMPLE_PM_BUS to tristate ...
This commit is contained in:
commit
47fcc0360c
10
Documentation/ABI/testing/sysfs-devices-coredump
Normal file
10
Documentation/ABI/testing/sysfs-devices-coredump
Normal file
@ -0,0 +1,10 @@
|
||||
What: /sys/devices/.../coredump
|
||||
Date: December 2017
|
||||
Contact: Arend van Spriel <aspriel@gmail.com>
|
||||
Description:
|
||||
The /sys/devices/.../coredump attribute is only present when the
|
||||
device is bound to a driver, which provides the .coredump()
|
||||
callback. The attribute is write only. Anything written to this
|
||||
file will trigger the .coredump() callback.
|
||||
|
||||
Available when CONFIG_DEV_COREDUMP is enabled.
|
@ -11,13 +11,8 @@ options:
|
||||
* CONFIG_EXTRA_FIRMWARE
|
||||
* CONFIG_EXTRA_FIRMWARE_DIR
|
||||
|
||||
This should not be confused with CONFIG_FIRMWARE_IN_KERNEL, this is for drivers
|
||||
which enables firmware to be built as part of the kernel build process. This
|
||||
option, CONFIG_FIRMWARE_IN_KERNEL, will build all firmware for all drivers
|
||||
enabled which ship its firmware inside the Linux kernel source tree.
|
||||
|
||||
There are a few reasons why you might want to consider building your firmware
|
||||
into the kernel with CONFIG_EXTRA_FIRMWARE though:
|
||||
into the kernel with CONFIG_EXTRA_FIRMWARE:
|
||||
|
||||
* Speed
|
||||
* Firmware is needed for accessing the boot device, and the user doesn't
|
||||
|
@ -71,7 +71,7 @@ via fw_create_instance(). This call creates a new struct device named after
|
||||
the firmware requested, and establishes it in the device hierarchy by
|
||||
associating the device used to make the request as the device's parent.
|
||||
The sysfs directory's file attributes are defined and controlled through
|
||||
the new device's class (firmare_class) and group (fw_dev_attr_groups).
|
||||
the new device's class (firmware_class) and group (fw_dev_attr_groups).
|
||||
This is actually where the original firmware_class.c file name comes from,
|
||||
as originally the only firmware loading mechanism available was the
|
||||
mechanism we now use as a fallback mechanism.
|
||||
|
@ -108,12 +108,11 @@ packages already put them there.
|
||||
====================
|
||||
|
||||
The loader supports also loading of a builtin microcode supplied through
|
||||
the regular firmware builtin method CONFIG_FIRMWARE_IN_KERNEL. Only
|
||||
64-bit is currently supported.
|
||||
the regular builtin firmware method CONFIG_EXTRA_FIRMWARE. Only 64-bit is
|
||||
currently supported.
|
||||
|
||||
Here's an example:
|
||||
|
||||
CONFIG_FIRMWARE_IN_KERNEL=y
|
||||
CONFIG_EXTRA_FIRMWARE="intel-ucode/06-3a-09 amd-ucode/microcode_amd_fam15h.bin"
|
||||
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
|
||||
|
||||
|
@ -44,7 +44,6 @@ CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_NETDEVICES=y
|
||||
|
@ -44,7 +44,6 @@ CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
|
@ -45,7 +45,6 @@ CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
|
@ -40,7 +40,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NET_VENDOR_ARC is not set
|
||||
|
@ -43,7 +43,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NET_VENDOR_ARC is not set
|
||||
|
@ -32,7 +32,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_NETDEVICES=y
|
||||
|
@ -36,7 +36,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_ARC_EMAC=y
|
||||
|
@ -40,7 +40,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
|
@ -39,7 +39,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
|
@ -35,7 +35,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_EZCHIP_NPS_MANAGEMENT_ENET=y
|
||||
|
@ -36,7 +36,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_EZCHIP_NPS_MANAGEMENT_ENET=y
|
||||
|
@ -39,7 +39,6 @@ CONFIG_INET=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NET_VENDOR_ARC is not set
|
||||
|
@ -42,7 +42,6 @@ CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_NET_CADENCE is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
|
@ -31,7 +31,6 @@ CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -34,7 +34,6 @@ CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -28,7 +28,6 @@ CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="console=ttyS0,38400 mem=128M root=/dev/mmcblk0p1 ro rootwait"
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -54,7 +54,6 @@ CONFIG_BT_BNEP_PROTO_FILTER=y
|
||||
CONFIG_BT_HIDP=m
|
||||
CONFIG_BT_HCIBTUSB=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -77,7 +77,6 @@ CONFIG_MAC80211=m
|
||||
CONFIG_MAC80211_MESH=y
|
||||
CONFIG_MAC80211_LEDS=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
|
@ -37,7 +37,6 @@ CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -46,7 +46,6 @@ CONFIG_CAN_FLEXCAN=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -60,7 +60,6 @@ CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -75,7 +75,6 @@ CONFIG_RFKILL_INPUT=y
|
||||
CONFIG_RFKILL_GPIO=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_DMA_CMA=y
|
||||
CONFIG_CMA_SIZE_MBYTES=64
|
||||
CONFIG_TEGRA_GMI=y
|
||||
|
@ -23,7 +23,6 @@ CONFIG_BINFMT_SHARED_FLAT=y
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=4
|
||||
|
@ -802,8 +802,8 @@ static ssize_t battery_voltage_show(struct device *dev, struct device_attribute
|
||||
return sprintf(buf, "%d\n", sharpsl_pm.battstat.mainbat_voltage);
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(battery_percentage, 0444, battery_percentage_show, NULL);
|
||||
static DEVICE_ATTR(battery_voltage, 0444, battery_voltage_show, NULL);
|
||||
static DEVICE_ATTR_RO(battery_percentage);
|
||||
static DEVICE_ATTR_RO(battery_voltage);
|
||||
|
||||
extern void (*apm_get_power_status)(struct apm_power_info *);
|
||||
|
||||
|
@ -313,7 +313,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_PARPORT=m
|
||||
|
@ -311,7 +311,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -311,7 +311,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_PARPORT=m
|
||||
|
@ -309,7 +309,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -311,7 +311,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -313,7 +313,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_SWIM=m
|
||||
|
@ -323,7 +323,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_PARPORT=m
|
||||
|
@ -308,7 +308,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -309,7 +309,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -309,7 +309,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_PARPORT=m
|
||||
|
@ -306,7 +306,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -306,7 +306,6 @@ CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_TEST_ASYNC_DRIVER_PROBE=m
|
||||
CONFIG_CONNECTOR=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -82,7 +82,6 @@ CONFIG_MAC80211=m
|
||||
CONFIG_MAC80211_RC_PID=y
|
||||
CONFIG_MAC80211_RC_DEFAULT_PID=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
|
@ -38,7 +38,6 @@ CONFIG_CFG80211=m
|
||||
CONFIG_MAC80211=m
|
||||
CONFIG_MAC80211_DEBUGFS=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-2
|
||||
|
@ -39,7 +39,6 @@ CONFIG_CFG80211=m
|
||||
CONFIG_MAC80211=m
|
||||
CONFIG_MAC80211_DEBUGFS=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-2
|
||||
|
@ -26,7 +26,6 @@ CONFIG_BINFMT_MISC=m
|
||||
# CONFIG_SUSPEND is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
# CONFIG_ALLOW_DEV_COREDUMP is not set
|
||||
CONFIG_BLK_DEV_LOOP=m
|
||||
CONFIG_SCSI=y
|
||||
|
@ -42,7 +42,6 @@ CONFIG_TCP_CONG_WESTWOOD=y
|
||||
# CONFIG_TCP_CONG_HTCP is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_NAND=y
|
||||
|
@ -325,15 +325,6 @@ CONFIG_USB_SERIAL_EDGEPORT=m
|
||||
CONFIG_USB_SERIAL_EDGEPORT_TI=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
||||
CONFIG_USB_SERIAL_KLSI=m
|
||||
CONFIG_USB_SERIAL_KOBIL_SCT=m
|
||||
CONFIG_USB_SERIAL_MCT_U232=m
|
||||
|
@ -76,7 +76,6 @@ CONFIG_VLAN_8021Q=y
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_HAMRADIO=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -75,7 +75,6 @@ CONFIG_VLAN_8021Q=y
|
||||
CONFIG_NET_SCHED=y
|
||||
CONFIG_HAMRADIO=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -44,7 +44,6 @@ CONFIG_IPV6=y
|
||||
# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET6_XFRM_MODE_BEET is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_DEBUG=y
|
||||
|
@ -28,7 +28,6 @@ CONFIG_NETFILTER=y
|
||||
CONFIG_VLAN_8021Q=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -272,18 +272,6 @@ CONFIG_USB_SERIAL_EDGEPORT=m
|
||||
CONFIG_USB_SERIAL_EDGEPORT_TI=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
||||
CONFIG_USB_SERIAL_KLSI=m
|
||||
CONFIG_USB_SERIAL_KOBIL_SCT=m
|
||||
CONFIG_USB_SERIAL_MCT_U232=m
|
||||
|
@ -189,18 +189,6 @@ CONFIG_USB_SERIAL_GARMIN=m
|
||||
CONFIG_USB_SERIAL_IPW=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
||||
CONFIG_USB_SERIAL_KLSI=m
|
||||
CONFIG_USB_SERIAL_KOBIL_SCT=m
|
||||
CONFIG_USB_SERIAL_MCT_U232=m
|
||||
|
@ -82,18 +82,6 @@ CONFIG_USB_SERIAL_CYPRESS_M8=m
|
||||
CONFIG_USB_SERIAL_GARMIN=m
|
||||
CONFIG_USB_SERIAL_IPW=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
||||
CONFIG_USB_SERIAL_TI=m
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT4_FS=y
|
||||
|
@ -39,7 +39,6 @@ CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -264,18 +264,6 @@ CONFIG_USB_SERIAL_VISOR=m
|
||||
CONFIG_USB_SERIAL_IPAQ=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN_PDA=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN=m
|
||||
CONFIG_USB_SERIAL_KEYSPAN_MPR=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
|
||||
CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
|
||||
CONFIG_USB_APPLEDISPLAY=m
|
||||
CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
|
||||
CONFIG_EXT2_FS=y
|
||||
|
@ -347,7 +347,6 @@ CONFIG_MAC80211_DEBUGFS=y
|
||||
CONFIG_NET_9P=m
|
||||
CONFIG_NET_9P_VIRTIO=m
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_DEBUG_DEVRES=y
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_PARPORT=m
|
||||
|
@ -64,7 +64,6 @@ CONFIG_CFG80211_WEXT=y
|
||||
CONFIG_MAC80211=m
|
||||
# CONFIG_MAC80211_RC_MINSTREL is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=65535
|
||||
|
@ -43,7 +43,6 @@ CONFIG_CFG80211=y
|
||||
CONFIG_MAC80211=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=2
|
||||
|
@ -26,7 +26,6 @@ CONFIG_NET=y
|
||||
# CONFIG_IUCV is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
# CONFIG_BLK_DEV_XPRAM is not set
|
||||
# CONFIG_DCSSBLK is not set
|
||||
|
@ -1151,7 +1151,7 @@ static ssize_t __ref rescan_store(struct device *dev,
|
||||
rc = smp_rescan_cpus();
|
||||
return rc ? rc : count;
|
||||
}
|
||||
static DEVICE_ATTR(rescan, 0200, NULL, rescan_store);
|
||||
static DEVICE_ATTR_WO(rescan);
|
||||
#endif /* CONFIG_HOTPLUG_CPU */
|
||||
|
||||
static int __init s390_smp_init(void)
|
||||
|
@ -404,8 +404,7 @@ out:
|
||||
put_online_cpus();
|
||||
return rc ? rc : count;
|
||||
}
|
||||
static DEVICE_ATTR(dispatching, 0644, dispatching_show,
|
||||
dispatching_store);
|
||||
static DEVICE_ATTR_RW(dispatching);
|
||||
|
||||
static ssize_t cpu_polarization_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
|
@ -38,7 +38,6 @@ CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
|
@ -24,7 +24,7 @@ static ssize_t switch_show(struct device *dev,
|
||||
struct push_switch_platform_info *psw_info = dev->platform_data;
|
||||
return sprintf(buf, "%s\n", psw_info->name);
|
||||
}
|
||||
static DEVICE_ATTR(switch, S_IRUGO, switch_show, NULL);
|
||||
static DEVICE_ATTR_RO(switch);
|
||||
|
||||
static void switch_timer(struct timer_list *t)
|
||||
{
|
||||
|
@ -159,7 +159,6 @@ CONFIG_DNS_RESOLVER=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||
|
@ -289,7 +289,6 @@ CONFIG_DNS_RESOLVER=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_CONNECTOR=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=m
|
||||
|
@ -38,7 +38,7 @@ static ssize_t chip_width_show(struct device *dev,
|
||||
{
|
||||
return sprintf(page, "%u\n", smp_width);
|
||||
}
|
||||
static DEVICE_ATTR(chip_width, 0444, chip_width_show, NULL);
|
||||
static DEVICE_ATTR_RO(chip_width);
|
||||
|
||||
static ssize_t chip_height_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
@ -46,7 +46,7 @@ static ssize_t chip_height_show(struct device *dev,
|
||||
{
|
||||
return sprintf(page, "%u\n", smp_height);
|
||||
}
|
||||
static DEVICE_ATTR(chip_height, 0444, chip_height_show, NULL);
|
||||
static DEVICE_ATTR_RO(chip_height);
|
||||
|
||||
static ssize_t chip_serial_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
@ -54,7 +54,7 @@ static ssize_t chip_serial_show(struct device *dev,
|
||||
{
|
||||
return get_hv_confstr(page, HV_CONFSTR_CHIP_SERIAL_NUM);
|
||||
}
|
||||
static DEVICE_ATTR(chip_serial, 0444, chip_serial_show, NULL);
|
||||
static DEVICE_ATTR_RO(chip_serial);
|
||||
|
||||
static ssize_t chip_revision_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
@ -62,7 +62,7 @@ static ssize_t chip_revision_show(struct device *dev,
|
||||
{
|
||||
return get_hv_confstr(page, HV_CONFSTR_CHIP_REV);
|
||||
}
|
||||
static DEVICE_ATTR(chip_revision, 0444, chip_revision_show, NULL);
|
||||
static DEVICE_ATTR_RO(chip_revision);
|
||||
|
||||
|
||||
static ssize_t type_show(struct device *dev,
|
||||
@ -71,7 +71,7 @@ static ssize_t type_show(struct device *dev,
|
||||
{
|
||||
return sprintf(page, "tilera\n");
|
||||
}
|
||||
static DEVICE_ATTR(type, 0444, type_show, NULL);
|
||||
static DEVICE_ATTR_RO(type);
|
||||
|
||||
#define HV_CONF_ATTR(name, conf) \
|
||||
static ssize_t name ## _show(struct device *dev, \
|
||||
@ -184,7 +184,7 @@ static ssize_t hv_stats_store(struct device *dev,
|
||||
return n < 0 ? n : count;
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(hv_stats, 0644, hv_stats_show, hv_stats_store);
|
||||
static DEVICE_ATTR_RW(hv_stats);
|
||||
|
||||
static int hv_stats_device_add(struct device *dev, struct subsys_interface *sif)
|
||||
{
|
||||
|
@ -1265,9 +1265,9 @@ config MICROCODE
|
||||
CONFIG_BLK_DEV_INITRD in order for the loader to be able to scan the
|
||||
initrd for microcode blobs.
|
||||
|
||||
In addition, you can build-in the microcode into the kernel. For that you
|
||||
need to enable FIRMWARE_IN_KERNEL and add the vendor-supplied microcode
|
||||
to the CONFIG_EXTRA_FIRMWARE config option.
|
||||
In addition, you can build the microcode into the kernel. For that you
|
||||
need to add the vendor-supplied microcode to the CONFIG_EXTRA_FIRMWARE
|
||||
config option.
|
||||
|
||||
config MICROCODE_INTEL
|
||||
bool "Intel microcode loading support"
|
||||
|
@ -560,7 +560,7 @@ static ssize_t pf_show(struct device *dev,
|
||||
return sprintf(buf, "0x%x\n", uci->cpu_sig.pf);
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(reload, 0200, NULL, reload_store);
|
||||
static DEVICE_ATTR_WO(reload);
|
||||
static DEVICE_ATTR(version, 0400, version_show, NULL);
|
||||
static DEVICE_ATTR(processor_flags, 0400, pf_show, NULL);
|
||||
|
||||
|
@ -357,7 +357,7 @@ static ssize_t real_power_state_show(struct device *dev,
|
||||
return sprintf(buf, "%s\n", acpi_power_state_string(state));
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(real_power_state, 0444, real_power_state_show, NULL);
|
||||
static DEVICE_ATTR_RO(real_power_state);
|
||||
|
||||
static ssize_t power_state_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
@ -367,7 +367,7 @@ static ssize_t power_state_show(struct device *dev,
|
||||
return sprintf(buf, "%s\n", acpi_power_state_string(adev->power.state));
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(power_state, 0444, power_state_show, NULL);
|
||||
static DEVICE_ATTR_RO(power_state);
|
||||
|
||||
static ssize_t
|
||||
acpi_eject_store(struct device *d, struct device_attribute *attr,
|
||||
@ -462,7 +462,7 @@ static ssize_t description_show(struct device *dev,
|
||||
|
||||
return result;
|
||||
}
|
||||
static DEVICE_ATTR(description, 0444, description_show, NULL);
|
||||
static DEVICE_ATTR_RO(description);
|
||||
|
||||
static ssize_t
|
||||
acpi_device_sun_show(struct device *dev, struct device_attribute *attr,
|
||||
|
@ -86,10 +86,9 @@ config FW_LOADER
|
||||
require userspace firmware loading support, but a module built
|
||||
out-of-tree does.
|
||||
|
||||
config FIRMWARE_IN_KERNEL
|
||||
bool "Include in-kernel firmware blobs in kernel binary"
|
||||
config EXTRA_FIRMWARE
|
||||
string "External firmware blobs to build into the kernel binary"
|
||||
depends on FW_LOADER
|
||||
default y
|
||||
help
|
||||
Various drivers in the kernel source tree may require firmware,
|
||||
which is generally available in your distribution's linux-firmware
|
||||
@ -99,23 +98,6 @@ config FIRMWARE_IN_KERNEL
|
||||
/lib/firmware/ on your system, so they can be loaded by userspace
|
||||
helpers on request.
|
||||
|
||||
Enabling this option will build each required firmware blob
|
||||
specified by EXTRA_FIRMWARE into the kernel directly, where
|
||||
request_firmware() will find them without having to call out to
|
||||
userspace. This may be useful if your root file system requires a
|
||||
device that uses such firmware and you do not wish to use an
|
||||
initrd.
|
||||
|
||||
This single option controls the inclusion of firmware for
|
||||
every driver that uses request_firmware(), which avoids a
|
||||
proliferation of 'Include firmware for xxx device' options.
|
||||
|
||||
Say 'N' and let firmware be loaded from userspace.
|
||||
|
||||
config EXTRA_FIRMWARE
|
||||
string "External firmware blobs to build into the kernel binary"
|
||||
depends on FW_LOADER
|
||||
help
|
||||
This option allows firmware to be built into the kernel for the case
|
||||
where the user either cannot or doesn't want to provide it from
|
||||
userspace at runtime (for example, when the firmware in question is
|
||||
@ -126,11 +108,11 @@ config EXTRA_FIRMWARE
|
||||
firmware files -- the same names that appear in MODULE_FIRMWARE()
|
||||
and request_firmware() in the source. These files should exist under
|
||||
the directory specified by the EXTRA_FIRMWARE_DIR option, which is
|
||||
by default the firmware subdirectory of the kernel source tree.
|
||||
/lib/firmware by default.
|
||||
|
||||
For example, you might set CONFIG_EXTRA_FIRMWARE="usb8388.bin", copy
|
||||
the usb8388.bin file into the firmware directory, and build the kernel.
|
||||
Then any request_firmware("usb8388.bin") will be satisfied internally
|
||||
the usb8388.bin file into /lib/firmware, and build the kernel. Then
|
||||
any request_firmware("usb8388.bin") will be satisfied internally
|
||||
without needing to call out to userspace.
|
||||
|
||||
WARNING: If you include additional firmware files into your binary
|
||||
|
@ -1,15 +1,9 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Arch specific cpu topology information
|
||||
*
|
||||
* Copyright (C) 2016, ARM Ltd.
|
||||
* Written by: Juri Lelli, ARM Ltd.
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* Released under the GPLv2 only.
|
||||
* SPDX-License-Identifier: GPL-2.0
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
|
@ -1,10 +1,9 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* attribute_container.c - implementation of a simple container for classes
|
||||
*
|
||||
* Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com>
|
||||
*
|
||||
* This file is licensed under GPLv2
|
||||
*
|
||||
* The basic idea here is to enable a device to be attached to an
|
||||
* aritrary numer of classes without having to allocate storage for them.
|
||||
* Instead, the contained classes select the devices they need to attach
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* bus.c - bus driver management
|
||||
*
|
||||
@ -5,9 +6,6 @@
|
||||
* Copyright (c) 2002-3 Open Source Development Labs
|
||||
* Copyright (c) 2007 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
* Copyright (c) 2007 Novell Inc.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/async.h>
|
||||
@ -309,7 +307,7 @@ int bus_for_each_dev(struct bus_type *bus, struct device *start,
|
||||
|
||||
klist_iter_init_node(&bus->p->klist_devices, &i,
|
||||
(start ? &start->p->knode_bus : NULL));
|
||||
while ((dev = next_device(&i)) && !error)
|
||||
while (!error && (dev = next_device(&i)))
|
||||
error = fn(dev, data);
|
||||
klist_iter_exit(&i);
|
||||
return error;
|
||||
|
@ -1,20 +1,9 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* cacheinfo support - processor cache information via sysfs
|
||||
*
|
||||
* Based on arch/x86/kernel/cpu/intel_cacheinfo.c
|
||||
* Author: Sudeep Holla <sudeep.holla@arm.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* class.c - basic device class management
|
||||
*
|
||||
@ -5,9 +6,6 @@
|
||||
* Copyright (c) 2002-3 Open Source Development Labs
|
||||
* Copyright (c) 2003-2004 Greg Kroah-Hartman
|
||||
* Copyright (c) 2003-2004 IBM Corp.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
|
@ -1,10 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Componentized device handling.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This is work in progress. We gather up the component devices into a list,
|
||||
* and bind them when instructed. At the moment, we're specific to the DRM
|
||||
* subsystem, and only handles one master device, but this doesn't have to be
|
||||
@ -17,6 +14,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/debugfs.h>
|
||||
|
||||
struct component;
|
||||
|
||||
@ -41,6 +39,7 @@ struct master {
|
||||
const struct component_master_ops *ops;
|
||||
struct device *dev;
|
||||
struct component_match *match;
|
||||
struct dentry *dentry;
|
||||
};
|
||||
|
||||
struct component {
|
||||
@ -56,6 +55,80 @@ static DEFINE_MUTEX(component_mutex);
|
||||
static LIST_HEAD(component_list);
|
||||
static LIST_HEAD(masters);
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
|
||||
static struct dentry *component_debugfs_dir;
|
||||
|
||||
static int component_devices_show(struct seq_file *s, void *data)
|
||||
{
|
||||
struct master *m = s->private;
|
||||
struct component_match *match = m->match;
|
||||
size_t i;
|
||||
|
||||
mutex_lock(&component_mutex);
|
||||
seq_printf(s, "%-40s %20s\n", "master name", "status");
|
||||
seq_puts(s, "-------------------------------------------------------------\n");
|
||||
seq_printf(s, "%-40s %20s\n\n",
|
||||
dev_name(m->dev), m->bound ? "bound" : "not bound");
|
||||
|
||||
seq_printf(s, "%-40s %20s\n", "device name", "status");
|
||||
seq_puts(s, "-------------------------------------------------------------\n");
|
||||
for (i = 0; i < match->num; i++) {
|
||||
struct device *d = (struct device *)match->compare[i].data;
|
||||
|
||||
seq_printf(s, "%-40s %20s\n", dev_name(d),
|
||||
match->compare[i].component ?
|
||||
"registered" : "not registered");
|
||||
}
|
||||
mutex_unlock(&component_mutex);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int component_devices_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, component_devices_show, inode->i_private);
|
||||
}
|
||||
|
||||
static const struct file_operations component_devices_fops = {
|
||||
.open = component_devices_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static int __init component_debug_init(void)
|
||||
{
|
||||
component_debugfs_dir = debugfs_create_dir("device_component", NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
core_initcall(component_debug_init);
|
||||
|
||||
static void component_master_debugfs_add(struct master *m)
|
||||
{
|
||||
m->dentry = debugfs_create_file(dev_name(m->dev), 0444,
|
||||
component_debugfs_dir,
|
||||
m, &component_devices_fops);
|
||||
}
|
||||
|
||||
static void component_master_debugfs_del(struct master *m)
|
||||
{
|
||||
debugfs_remove(m->dentry);
|
||||
m->dentry = NULL;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static void component_master_debugfs_add(struct master *m)
|
||||
{ }
|
||||
|
||||
static void component_master_debugfs_del(struct master *m)
|
||||
{ }
|
||||
|
||||
#endif
|
||||
|
||||
static struct master *__master_find(struct device *dev,
|
||||
const struct component_master_ops *ops)
|
||||
{
|
||||
@ -290,6 +363,7 @@ static void free_master(struct master *master)
|
||||
struct component_match *match = master->match;
|
||||
int i;
|
||||
|
||||
component_master_debugfs_del(master);
|
||||
list_del(&master->node);
|
||||
|
||||
if (match) {
|
||||
@ -323,6 +397,7 @@ int component_master_add_with_match(struct device *dev,
|
||||
master->ops = ops;
|
||||
master->match = match;
|
||||
|
||||
component_master_debugfs_add(master);
|
||||
/* Add to the list of available masters. */
|
||||
mutex_lock(&component_mutex);
|
||||
list_add(&master->node, &masters);
|
||||
|
@ -1,12 +1,9 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* System bus type for containers.
|
||||
*
|
||||
* Copyright (C) 2013, Intel Corporation
|
||||
* Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/container.h>
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* drivers/base/core.c - core driver model code (device registration, etc)
|
||||
*
|
||||
@ -5,9 +6,6 @@
|
||||
* Copyright (c) 2002-3 Open Source Development Labs
|
||||
* Copyright (c) 2006 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
* Copyright (c) 2006 Novell, Inc.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
@ -2116,7 +2114,7 @@ int device_for_each_child(struct device *parent, void *data,
|
||||
return 0;
|
||||
|
||||
klist_iter_init(&parent->p->klist_children, &i);
|
||||
while ((child = next_device(&i)) && !error)
|
||||
while (!error && (child = next_device(&i)))
|
||||
error = fn(child, data);
|
||||
klist_iter_exit(&i);
|
||||
return error;
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* CPU subsystem support
|
||||
*/
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* drivers/base/dd.c - The core device/driver interactions.
|
||||
*
|
||||
@ -13,8 +14,6 @@
|
||||
* Copyright (c) 2002-3 Open Source Development Labs
|
||||
* Copyright (c) 2007-2009 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
* Copyright (c) 2007-2009 Novell Inc.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
@ -289,6 +288,18 @@ static void driver_bound(struct device *dev)
|
||||
kobject_uevent(&dev->kobj, KOBJ_BIND);
|
||||
}
|
||||
|
||||
static ssize_t coredump_store(struct device *dev, struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
device_lock(dev);
|
||||
if (dev->driver->coredump)
|
||||
dev->driver->coredump(dev);
|
||||
device_unlock(dev);
|
||||
|
||||
return count;
|
||||
}
|
||||
static DEVICE_ATTR_WO(coredump);
|
||||
|
||||
static int driver_sysfs_add(struct device *dev)
|
||||
{
|
||||
int ret;
|
||||
@ -298,14 +309,26 @@ static int driver_sysfs_add(struct device *dev)
|
||||
BUS_NOTIFY_BIND_DRIVER, dev);
|
||||
|
||||
ret = sysfs_create_link(&dev->driver->p->kobj, &dev->kobj,
|
||||
kobject_name(&dev->kobj));
|
||||
if (ret)
|
||||
goto fail;
|
||||
|
||||
ret = sysfs_create_link(&dev->kobj, &dev->driver->p->kobj,
|
||||
"driver");
|
||||
if (ret)
|
||||
goto rm_dev;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_DEV_COREDUMP) || !dev->driver->coredump ||
|
||||
!device_create_file(dev, &dev_attr_coredump))
|
||||
return 0;
|
||||
|
||||
sysfs_remove_link(&dev->kobj, "driver");
|
||||
|
||||
rm_dev:
|
||||
sysfs_remove_link(&dev->driver->p->kobj,
|
||||
kobject_name(&dev->kobj));
|
||||
if (ret == 0) {
|
||||
ret = sysfs_create_link(&dev->kobj, &dev->driver->p->kobj,
|
||||
"driver");
|
||||
if (ret)
|
||||
sysfs_remove_link(&dev->driver->p->kobj,
|
||||
kobject_name(&dev->kobj));
|
||||
}
|
||||
|
||||
fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -314,6 +337,8 @@ static void driver_sysfs_remove(struct device *dev)
|
||||
struct device_driver *drv = dev->driver;
|
||||
|
||||
if (drv) {
|
||||
if (drv->coredump)
|
||||
device_remove_file(dev, &dev_attr_coredump);
|
||||
sysfs_remove_link(&drv->p->kobj, kobject_name(&dev->kobj));
|
||||
sysfs_remove_link(&dev->kobj, "driver");
|
||||
}
|
||||
|
@ -1,23 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* This file is provided under the GPLv2 license.
|
||||
*
|
||||
* GPL LICENSE SUMMARY
|
||||
*
|
||||
* Copyright(c) 2014 Intel Mobile Communications GmbH
|
||||
* Copyright(c) 2015 Intel Deutschland GmbH
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution
|
||||
* in the file called COPYING.
|
||||
*
|
||||
* Contact Information:
|
||||
* Intel Linux Wireless <ilw@linux.intel.com>
|
||||
* Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
@ -1,10 +1,9 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* drivers/base/devres.c - device resource management
|
||||
*
|
||||
* Copyright (c) 2006 SUSE Linux Products GmbH
|
||||
* Copyright (c) 2006 Tejun Heo <teheo@suse.de>
|
||||
*
|
||||
* This file is released under the GPLv2.
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
|
@ -1,14 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Contiguous Memory Allocator for DMA mapping framework
|
||||
* Copyright (c) 2010-2011 by Samsung Electronics.
|
||||
* Written by:
|
||||
* Marek Szyprowski <m.szyprowski@samsung.com>
|
||||
* Michal Nazarewicz <mina86@mina86.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License or (at your optional) any later version of the license.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "cma: " fmt
|
||||
|
@ -1,10 +1,9 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* drivers/base/dma-mapping.c - arch-independent dma-mapping routines
|
||||
*
|
||||
* Copyright (c) 2006 SUSE Linux Products GmbH
|
||||
* Copyright (c) 2006 Tejun Heo <teheo@suse.de>
|
||||
*
|
||||
* This file is released under the GPLv2.
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* driver.c - centralized device driver management
|
||||
*
|
||||
@ -5,9 +6,6 @@
|
||||
* Copyright (c) 2002-3 Open Source Development Labs
|
||||
* Copyright (c) 2007 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
* Copyright (c) 2007 Novell Inc.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
@ -52,7 +50,7 @@ int driver_for_each_device(struct device_driver *drv, struct device *start,
|
||||
|
||||
klist_iter_init_node(&drv->p->klist_devices, &i,
|
||||
start ? &start->p->knode_driver : NULL);
|
||||
while ((dev = next_device(&i)) && !error)
|
||||
while (!error && (dev = next_device(&i)))
|
||||
error = fn(dev, data);
|
||||
klist_iter_exit(&i);
|
||||
return error;
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* firmware.c - firmware subsystem hoohaw.
|
||||
*
|
||||
@ -5,8 +6,6 @@
|
||||
* Copyright (c) 2002-3 Open Source Development Labs
|
||||
* Copyright (c) 2007 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
* Copyright (c) 2007 Novell Inc.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*/
|
||||
#include <linux/kobject.h>
|
||||
#include <linux/module.h>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* hypervisor.c - /sys/hypervisor subsystem.
|
||||
*
|
||||
* Copyright (C) IBM Corp. 2006
|
||||
* Copyright (C) 2007 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
* Copyright (C) 2007 Novell Inc.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*/
|
||||
|
||||
#include <linux/kobject.h>
|
||||
|
@ -1,8 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (c) 2002-3 Patrick Mochel
|
||||
* Copyright (c) 2002-3 Open Source Development Labs
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* ISA bus.
|
||||
*/
|
||||
|
@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* linux/drivers/base/map.c
|
||||
*
|
||||
* (C) Copyright Al Viro 2002,2003
|
||||
* Released under GPL v2.
|
||||
*
|
||||
* NOTE: data structure needs to be changed. It works, but for large dev_t
|
||||
* it will be too slow. It is isolated, though, so these changes will be
|
||||
|
@ -1,8 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* module.c - module sysfs fun for drivers
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
*/
|
||||
#include <linux/device.h>
|
||||
#include <linux/module.h>
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Driver core interface to the pinctrl subsystem.
|
||||
*
|
||||
@ -6,8 +7,6 @@
|
||||
* Based on bits of regulator core, gpio core and clk core
|
||||
*
|
||||
* Author: Linus Walleij <linus.walleij@linaro.org>
|
||||
*
|
||||
* License terms: GNU General Public License (GPL) version 2
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
|
@ -1,20 +1,9 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* MSI framework for platform devices
|
||||
*
|
||||
* Copyright (C) 2015 ARM Limited, All Rights Reserved.
|
||||
* Author: Marc Zyngier <marc.zyngier@arm.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <linux/device.h>
|
||||
|
@ -1,11 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* platform.c - platform 'pseudo' bus for legacy devices
|
||||
*
|
||||
* Copyright (c) 2002-3 Patrick Mochel
|
||||
* Copyright (c) 2002-3 Open Source Development Labs
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
* Please see Documentation/driver-model/platform.txt for more
|
||||
* information.
|
||||
*/
|
||||
|
@ -1,13 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* property.c - Unified device property interface.
|
||||
*
|
||||
* Copyright (C) 2014, Intel Corporation
|
||||
* Authors: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
* Mika Westerberg <mika.westerberg@linux.intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
@ -699,6 +696,23 @@ int fwnode_property_get_reference_args(const struct fwnode_handle *fwnode,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(fwnode_property_get_reference_args);
|
||||
|
||||
static void property_entry_free_data(const struct property_entry *p)
|
||||
{
|
||||
size_t i, nval;
|
||||
|
||||
if (p->is_array) {
|
||||
if (p->is_string && p->pointer.str) {
|
||||
nval = p->length / sizeof(const char *);
|
||||
for (i = 0; i < nval; i++)
|
||||
kfree(p->pointer.str[i]);
|
||||
}
|
||||
kfree(p->pointer.raw_data);
|
||||
} else if (p->is_string) {
|
||||
kfree(p->value.str);
|
||||
}
|
||||
kfree(p->name);
|
||||
}
|
||||
|
||||
static int property_copy_string_array(struct property_entry *dst,
|
||||
const struct property_entry *src)
|
||||
{
|
||||
@ -729,34 +743,24 @@ static int property_entry_copy_data(struct property_entry *dst,
|
||||
{
|
||||
int error;
|
||||
|
||||
dst->name = kstrdup(src->name, GFP_KERNEL);
|
||||
if (!dst->name)
|
||||
return -ENOMEM;
|
||||
|
||||
if (src->is_array) {
|
||||
if (!src->length) {
|
||||
error = -ENODATA;
|
||||
goto out_free_name;
|
||||
}
|
||||
if (!src->length)
|
||||
return -ENODATA;
|
||||
|
||||
if (src->is_string) {
|
||||
error = property_copy_string_array(dst, src);
|
||||
if (error)
|
||||
goto out_free_name;
|
||||
return error;
|
||||
} else {
|
||||
dst->pointer.raw_data = kmemdup(src->pointer.raw_data,
|
||||
src->length, GFP_KERNEL);
|
||||
if (!dst->pointer.raw_data) {
|
||||
error = -ENOMEM;
|
||||
goto out_free_name;
|
||||
}
|
||||
if (!dst->pointer.raw_data)
|
||||
return -ENOMEM;
|
||||
}
|
||||
} else if (src->is_string) {
|
||||
dst->value.str = kstrdup(src->value.str, GFP_KERNEL);
|
||||
if (!dst->value.str && src->value.str) {
|
||||
error = -ENOMEM;
|
||||
goto out_free_name;
|
||||
}
|
||||
if (!dst->value.str && src->value.str)
|
||||
return -ENOMEM;
|
||||
} else {
|
||||
dst->value.raw_data = src->value.raw_data;
|
||||
}
|
||||
@ -765,28 +769,15 @@ static int property_entry_copy_data(struct property_entry *dst,
|
||||
dst->is_array = src->is_array;
|
||||
dst->is_string = src->is_string;
|
||||
|
||||
dst->name = kstrdup(src->name, GFP_KERNEL);
|
||||
if (!dst->name)
|
||||
goto out_free_data;
|
||||
|
||||
return 0;
|
||||
|
||||
out_free_name:
|
||||
kfree(dst->name);
|
||||
return error;
|
||||
}
|
||||
|
||||
static void property_entry_free_data(const struct property_entry *p)
|
||||
{
|
||||
size_t i, nval;
|
||||
|
||||
if (p->is_array) {
|
||||
if (p->is_string && p->pointer.str) {
|
||||
nval = p->length / sizeof(const char *);
|
||||
for (i = 0; i < nval; i++)
|
||||
kfree(p->pointer.str[i]);
|
||||
}
|
||||
kfree(p->pointer.raw_data);
|
||||
} else if (p->is_string) {
|
||||
kfree(p->value.str);
|
||||
}
|
||||
kfree(p->name);
|
||||
out_free_data:
|
||||
property_entry_free_data(dst);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (C) ST-Ericsson SA 2011
|
||||
*
|
||||
* Author: Lee Jones <lee.jones@linaro.org> for ST-Ericsson.
|
||||
* License terms: GNU General Public License (GPL), version 2
|
||||
*/
|
||||
|
||||
#include <linux/sysfs.h>
|
||||
|
@ -1,9 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* syscore.c - Execution of system core operations.
|
||||
*
|
||||
* Copyright (C) 2011 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc.
|
||||
*
|
||||
* This file is released under the GPLv2.
|
||||
*/
|
||||
|
||||
#include <linux/syscore_ops.h>
|
||||
|
@ -1,14 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (C) 2014 Google, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
@ -1,3 +1,4 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* driver/base/topology.c - Populate sysfs with cpu topology information
|
||||
*
|
||||
@ -6,22 +7,6 @@
|
||||
* Copyright (C) 2006, Intel Corp.
|
||||
*
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
|
||||
* NON INFRINGEMENT. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*/
|
||||
#include <linux/mm.h>
|
||||
#include <linux/cpu.h>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user