Merge 4.9.291 into android-4.9-q
Changes in 4.9.291
binder: use euid from cred instead of using task
binder: use cred instead of task for selinux checks
xhci: Fix USB 3.1 enumeration issues by increasing roothub power-on-good delay
Input: elantench - fix misreporting trackpoint coordinates
Input: i8042 - Add quirk for Fujitsu Lifebook T725
libata: fix read log timeout value
ocfs2: fix data corruption on truncate
mmc: dw_mmc: Dont wait for DRTO on Write RSP error
parisc: Fix ptrace check on syscall return
media: ite-cir: IR receiver stop working after receive overflow
ALSA: ua101: fix division by zero at probe
ALSA: 6fire: fix control and bulk message timeouts
ALSA: line6: fix control and interrupt message timeouts
ALSA: synth: missing check for possible NULL after the call to kstrdup
ALSA: timer: Fix use-after-free problem
ALSA: timer: Unconditionally unlink slave instances, too
x86/irq: Ensure PI wakeup handler is unregistered before module unload
sfc: Don't use netif_info before net_device setup
hyperv/vmbus: include linux/bitops.h
mmc: winbond: don't build on M68K
bpf: Prevent increasing bpf_jit_limit above max
xen/netfront: stop tx queues during live migration
spi: spl022: fix Microwire full duplex mode
watchdog: Fix OMAP watchdog early handling
vmxnet3: do not stop tx queues after netif_device_detach()
btrfs: fix lost error handling when replaying directory deletes
hwmon: (pmbus/lm25066) Add offset coefficients
regulator: s5m8767: do not use reset value as DVS voltage if GPIO DVS is disabled
regulator: dt-bindings: samsung,s5m8767: correct s5m8767,pmic-buck-default-dvs-idx property
EDAC/sb_edac: Fix top-of-high-memory value for Broadwell/Haswell
mwifiex: fix division by zero in fw download path
ath6kl: fix division by zero in send path
ath6kl: fix control-message timeout
PCI: Mark Atheros QCA6174 to avoid bus reset
rtl8187: fix control-message timeouts
evm: mark evm_fixmode as __ro_after_init
wcn36xx: Fix HT40 capability for 2Ghz band
mwifiex: Read a PCI register after writing the TX ring write pointer
wcn36xx: handle connection loss indication
RDMA/qedr: Fix NULL deref for query_qp on the GSI QP
signal: Remove the bogus sigkill_pending in ptrace_stop
signal/mips: Update (_save|_restore)_fp_context to fail with -EFAULT
power: supply: max17042_battery: Prevent int underflow in set_soc_threshold
power: supply: max17042_battery: use VFSOC for capacity when no rsns
powerpc/85xx: Fix oops when mpc85xx_smp_guts_ids node cannot be found
serial: core: Fix initializing and restoring termios speed
ALSA: mixer: oss: Fix racy access to slots
ALSA: mixer: fix deadlock in snd_mixer_oss_set_volume
PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REG
quota: check block number when reading the block in quota file
quota: correct error number in free_dqentry()
iio: dac: ad5446: Fix ad5622_write() return value
USB: serial: keyspan: fix memleak on probe errors
USB: iowarrior: fix control-message timeouts
Bluetooth: sco: Fix lock_sock() blockage by memcpy_from_msg()
Bluetooth: fix use-after-free error in lock_sock_nested()
platform/x86: wmi: do not fail if disabling fails
MIPS: lantiq: dma: add small delay after reset
MIPS: lantiq: dma: reset correct number of channel
locking/lockdep: Avoid RCU-induced noinstr fail
smackfs: Fix use-after-free in netlbl_catmap_walk()
x86: Increase exception stack sizes
media: mt9p031: Fix corrupted frame after restarting stream
media: netup_unidvb: handle interrupt properly according to the firmware
media: uvcvideo: Set capability in s_param
media: s5p-mfc: fix possible null-pointer dereference in s5p_mfc_probe()
media: mceusb: return without resubmitting URB in case of -EPROTO error.
ia64: don't do IA64_CMPXCHG_DEBUG without CONFIG_PRINTK
ACPICA: Avoid evaluating methods too early during system resume
media: usb: dvd-usb: fix uninit-value bug in dibusb_read_eeprom_byte()
tracefs: Have tracefs directories not set OTH permission bits by default
ath: dfs_pattern_detector: Fix possible null-pointer dereference in channel_detector_create()
ACPI: battery: Accept charges over the design capacity as full
memstick: r592: Fix a UAF bug when removing the driver
lib/xz: Avoid overlapping memcpy() with invalid input with in-place decompression
lib/xz: Validate the value before assigning it to an enum variable
tracing/cfi: Fix cmp_entries_* functions signature mismatch
mwl8k: Fix use-after-free in mwl8k_fw_state_machine()
PM: hibernate: Get block device exclusively in swsusp_check()
iwlwifi: mvm: disable RX-diversity in powersave
smackfs: use __GFP_NOFAIL for smk_cipso_doi()
ARM: clang: Do not rely on lr register for stacktrace
ARM: 9136/1: ARMv7-M uses BE-8, not BE-32
spi: bcm-qspi: Fix missing clk_disable_unprepare() on error in bcm_qspi_probe()
parisc: fix warning in flush_tlb_all
parisc/kgdb: add kgdb_roundup() to make kgdb work with idle polling
cgroup: Make rebind_subsystems() disable v2 controllers all at once
media: dvb-usb: fix ununit-value in az6027_rc_query
media: mtk-vpu: Fix a resource leak in the error handling path of 'mtk_vpu_probe()'
media: si470x: Avoid card name truncation
cpuidle: Fix kobject memory leaks in error paths
ath9k: Fix potential interrupt storm on queue reset
crypto: qat - detect PFVF collision after ACK
crypto: qat - disregard spurious PFVF interrupts
b43legacy: fix a lower bounds test
b43: fix a lower bounds test
memstick: avoid out-of-range warning
memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host()
hwmon: Fix possible memleak in __hwmon_device_register()
ath10k: fix max antenna gain unit
drm/msm: uninitialized variable in msm_gem_import()
net: stream: don't purge sk_error_queue in sk_stream_kill_queues()
mmc: mxs-mmc: disable regulator on error and in the remove function
platform/x86: thinkpad_acpi: Fix bitwise vs. logical warning
mwifiex: Send DELBA requests according to spec
phy: micrel: ksz8041nl: do not use power down mode
smackfs: use netlbl_cfg_cipsov4_del() for deleting cipso_v4_doi
s390/gmap: don't unconditionally call pte_unmap_unlock() in __gmap_zap()
irq: mips: avoid nested irq_enter()
samples/kretprobes: Fix return value if register_kretprobe() failed
libertas_tf: Fix possible memory leak in probe and disconnect
libertas: Fix possible memory leak in probe and disconnect
crypto: pcrypt - Delay write to padata->info
RDMA/rxe: Fix wrong port_cap_flags
ARM: s3c: irq-s3c24xx: Fix return value check for s3c24xx_init_intc()
scsi: dc395: Fix error case unwinding
MIPS: loongson64: make CPU_LOONGSON64 depends on MIPS_FP_SUPPORT
JFS: fix memleak in jfs_mount
arm: dts: omap3-gta04a4: accelerometer irq fix
soc/tegra: Fix an error handling path in tegra_powergate_power_up()
memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe
video: fbdev: chipsfb: use memset_io() instead of memset()
serial: 8250_dw: Drop wrong use of ACPI_PTR()
usb: gadget: hid: fix error code in do_config()
power: supply: rt5033_battery: Change voltage values to µV
scsi: csiostor: Uninitialized data in csio_ln_vnp_read_cbfn()
RDMA/mlx4: Return missed an error if device doesn't support steering
serial: xilinx_uartps: Fix race condition causing stuck TX
power: supply: bq27xxx: Fix kernel crash on IRQ handler register error
pnfs/flexfiles: Fix misplaced barrier in nfs4_ff_layout_prepare_ds
drm/plane-helper: fix uninitialized variable reference
PCI: aardvark: Don't spam about PIO Response Status
fs: orangefs: fix error return code of orangefs_revalidate_lookup()
mtd: spi-nor: hisi-sfc: Remove excessive clk_disable_unprepare()
dmaengine: at_xdmac: fix AT_XDMAC_CC_PERID() macro
auxdisplay: img-ascii-lcd: Fix lock-up when displaying empty string
netfilter: nfnetlink_queue: fix OOB when mac header was cleared
dmaengine: dmaengine_desc_callback_valid(): Check for `callback_result`
m68k: set a default value for MEMORY_RESERVE
watchdog: f71808e_wdt: fix inaccurate report in WDIOC_GETTIMEOUT
scsi: qla2xxx: Turn off target reset during issue_lip
i2c: xlr: Fix a resource leak in the error handling path of 'xlr_i2c_probe()'
xen-pciback: Fix return in pm_ctrl_init()
net: davinci_emac: Fix interrupt pacing disable
ACPI: PMIC: Fix intel_pmic_regs_handler() read accesses
bonding: Fix a use-after-free problem when bond_sysfs_slave_add() failed
mm/zsmalloc.c: close race window between zs_pool_dec_isolated() and zs_unregister_migration()
llc: fix out-of-bound array index in llc_sk_dev_hash()
nfc: pn533: Fix double free when pn533_fill_fragment_skbs() fails
vsock: prevent unnecessary refcnt inc for nonblocking connect
USB: chipidea: fix interrupt deadlock
ARM: 9156/1: drop cc-option fallbacks for architecture selection
powerpc/bpf: Validate branch ranges
powerpc/bpf: Fix BPF_SUB when imm == 0x80000000
mm, oom: pagefault_out_of_memory: don't force global OOM for dying tasks
mm, oom: do not trigger out_of_memory from the #PF
PCI: Add PCI_EXP_DEVCTL_PAYLOAD_* macros
net: mdio-mux: fix unbalanced put_device
parisc/entry: fix trace test in syscall exit path
PCI/MSI: Destroy sysfs before freeing entries
scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
usb: musb: tusb6010: check return value after calling platform_get_resource()
scsi: advansys: Fix kernel pointer leak
ARM: dts: omap: fix gpmc,mux-add-data type
usb: host: ohci-tmio: check return value after calling platform_get_resource()
tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc
MIPS: sni: Fix the build
scsi: target: Fix ordered tag handling
scsi: target: Fix alua_tg_pt_gps_count tracking
powerpc/5200: dts: fix memory node unit name
ALSA: gus: fix null pointer dereference on pointer block
powerpc/dcr: Use cmplwi instead of 3-argument cmpli
sh: check return code of request_irq
maple: fix wrong return value of maple_bus_init().
sh: fix kconfig unmet dependency warning for FRAME_POINTER
sh: define __BIG_ENDIAN for math-emu
mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set
sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain()
net: bnx2x: fix variable dereferenced before check
iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset
mips: bcm63xx: add support for clk_get_parent()
platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()'
NFC: reorganize the functions in nci_request
NFC: reorder the logic in nfc_{un,}register_device
perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server
perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server
tun: fix bonding active backup with arp monitoring
hexagon: export raw I/O routines for modules
mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag
btrfs: fix memory ordering between normal and ordered work functions
parisc/sticon: fix reverse colors
cfg80211: call cfg80211_stop_ap when switch from P2P_GO type
drm/udl: fix control-message timeout
drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga and dvi connectors
batman-adv: Keep fragments equally sized
batman-adv: Fix own OGM check in aggregated OGMs
batman-adv: mcast: fix duplicate mcast packets in BLA backbone from LAN
batman-adv: mcast: fix duplicate mcast packets from BLA backbone to mesh
batman-adv: Consider fragmentation for needed_headroom
batman-adv: Reserve needed_*room for fragments
batman-adv: Don't always reallocate the fragmentation skb head
ASoC: DAPM: Cover regression by kctl change notification fix
usb: max-3421: Use driver data instead of maintaining a list of bound devices
soc/tegra: pmc: Fix imbalanced clock disabling in error code path
Linux 4.9.291
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I23d798c10aebab1e51add60ccb34a8b289d49a4d
This commit is contained in:
@@ -13,6 +13,14 @@ common regulator binding documented in:
|
|||||||
|
|
||||||
|
|
||||||
Required properties of the main device node (the parent!):
|
Required properties of the main device node (the parent!):
|
||||||
|
- s5m8767,pmic-buck-ds-gpios: GPIO specifiers for three host gpio's used
|
||||||
|
for selecting GPIO DVS lines. It is one-to-one mapped to dvs gpio lines.
|
||||||
|
|
||||||
|
[1] If either of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional
|
||||||
|
property is specified, then all the eight voltage values for the
|
||||||
|
's5m8767,pmic-buck[2/3/4]-dvs-voltage' should be specified.
|
||||||
|
|
||||||
|
Optional properties of the main device node (the parent!):
|
||||||
- s5m8767,pmic-buck2-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
|
- s5m8767,pmic-buck2-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
|
||||||
units for buck2 when changing voltage using gpio dvs. Refer to [1] below
|
units for buck2 when changing voltage using gpio dvs. Refer to [1] below
|
||||||
for additional information.
|
for additional information.
|
||||||
@@ -25,26 +33,13 @@ Required properties of the main device node (the parent!):
|
|||||||
units for buck4 when changing voltage using gpio dvs. Refer to [1] below
|
units for buck4 when changing voltage using gpio dvs. Refer to [1] below
|
||||||
for additional information.
|
for additional information.
|
||||||
|
|
||||||
- s5m8767,pmic-buck-ds-gpios: GPIO specifiers for three host gpio's used
|
|
||||||
for selecting GPIO DVS lines. It is one-to-one mapped to dvs gpio lines.
|
|
||||||
|
|
||||||
[1] If none of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional
|
|
||||||
property is specified, the 's5m8767,pmic-buck[2/3/4]-dvs-voltage'
|
|
||||||
property should specify atleast one voltage level (which would be a
|
|
||||||
safe operating voltage).
|
|
||||||
|
|
||||||
If either of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional
|
|
||||||
property is specified, then all the eight voltage values for the
|
|
||||||
's5m8767,pmic-buck[2/3/4]-dvs-voltage' should be specified.
|
|
||||||
|
|
||||||
Optional properties of the main device node (the parent!):
|
|
||||||
- s5m8767,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs.
|
- s5m8767,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs.
|
||||||
- s5m8767,pmic-buck3-uses-gpio-dvs: 'buck3' can be controlled by gpio dvs.
|
- s5m8767,pmic-buck3-uses-gpio-dvs: 'buck3' can be controlled by gpio dvs.
|
||||||
- s5m8767,pmic-buck4-uses-gpio-dvs: 'buck4' can be controlled by gpio dvs.
|
- s5m8767,pmic-buck4-uses-gpio-dvs: 'buck4' can be controlled by gpio dvs.
|
||||||
|
|
||||||
Additional properties required if either of the optional properties are used:
|
Additional properties required if either of the optional properties are used:
|
||||||
|
|
||||||
- s5m8767,pmic-buck234-default-dvs-idx: Default voltage setting selected from
|
- s5m8767,pmic-buck-default-dvs-idx: Default voltage setting selected from
|
||||||
the possible 8 options selectable by the dvs gpios. The value of this
|
the possible 8 options selectable by the dvs gpios. The value of this
|
||||||
property should be between 0 and 7. If not specified or if out of range, the
|
property should be between 0 and 7. If not specified or if out of range, the
|
||||||
default value of this property is set to 0.
|
default value of this property is set to 0.
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -1,6 +1,6 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 9
|
PATCHLEVEL = 9
|
||||||
SUBLEVEL = 290
|
SUBLEVEL = 291
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Roaring Lionus
|
NAME = Roaring Lionus
|
||||||
|
|
||||||
|
|||||||
@@ -64,15 +64,15 @@ KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra)
|
|||||||
# Note that GCC does not numerically define an architecture version
|
# Note that GCC does not numerically define an architecture version
|
||||||
# macro, but instead defines a whole series of macros which makes
|
# macro, but instead defines a whole series of macros which makes
|
||||||
# testing for a specific architecture or later rather impossible.
|
# testing for a specific architecture or later rather impossible.
|
||||||
arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m -Wa,-march=armv7-m
|
arch-$(CONFIG_CPU_32v7M) =-D__LINUX_ARM_ARCH__=7 -march=armv7-m
|
||||||
arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
|
arch-$(CONFIG_CPU_32v7) =-D__LINUX_ARM_ARCH__=7 -march=armv7-a
|
||||||
arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
|
arch-$(CONFIG_CPU_32v6) =-D__LINUX_ARM_ARCH__=6 -march=armv6
|
||||||
# Only override the compiler option if ARMv6. The ARMv6K extensions are
|
# Only override the compiler option if ARMv6. The ARMv6K extensions are
|
||||||
# always available in ARMv7
|
# always available in ARMv7
|
||||||
ifeq ($(CONFIG_CPU_32v6),y)
|
ifeq ($(CONFIG_CPU_32v6),y)
|
||||||
arch-$(CONFIG_CPU_32v6K) =-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k)
|
arch-$(CONFIG_CPU_32v6K) =-D__LINUX_ARM_ARCH__=6 -march=armv6k
|
||||||
endif
|
endif
|
||||||
arch-$(CONFIG_CPU_32v5) =-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t)
|
arch-$(CONFIG_CPU_32v5) =-D__LINUX_ARM_ARCH__=5 -march=armv5te
|
||||||
arch-$(CONFIG_CPU_32v4T) =-D__LINUX_ARM_ARCH__=4 -march=armv4t
|
arch-$(CONFIG_CPU_32v4T) =-D__LINUX_ARM_ARCH__=4 -march=armv4t
|
||||||
arch-$(CONFIG_CPU_32v4) =-D__LINUX_ARM_ARCH__=4 -march=armv4
|
arch-$(CONFIG_CPU_32v4) =-D__LINUX_ARM_ARCH__=4 -march=armv4
|
||||||
arch-$(CONFIG_CPU_32v3) =-D__LINUX_ARM_ARCH__=3 -march=armv3
|
arch-$(CONFIG_CPU_32v3) =-D__LINUX_ARM_ARCH__=3 -march=armv3
|
||||||
@@ -86,7 +86,7 @@ tune-$(CONFIG_CPU_ARM720T) =-mtune=arm7tdmi
|
|||||||
tune-$(CONFIG_CPU_ARM740T) =-mtune=arm7tdmi
|
tune-$(CONFIG_CPU_ARM740T) =-mtune=arm7tdmi
|
||||||
tune-$(CONFIG_CPU_ARM9TDMI) =-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM9TDMI) =-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_ARM940T) =-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM940T) =-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_ARM946E) =$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
|
tune-$(CONFIG_CPU_ARM946E) =-mtune=arm9e
|
||||||
tune-$(CONFIG_CPU_ARM920T) =-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM920T) =-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_ARM922T) =-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM922T) =-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_ARM925T) =-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_ARM925T) =-mtune=arm9tdmi
|
||||||
@@ -94,11 +94,11 @@ tune-$(CONFIG_CPU_ARM926T) =-mtune=arm9tdmi
|
|||||||
tune-$(CONFIG_CPU_FA526) =-mtune=arm9tdmi
|
tune-$(CONFIG_CPU_FA526) =-mtune=arm9tdmi
|
||||||
tune-$(CONFIG_CPU_SA110) =-mtune=strongarm110
|
tune-$(CONFIG_CPU_SA110) =-mtune=strongarm110
|
||||||
tune-$(CONFIG_CPU_SA1100) =-mtune=strongarm1100
|
tune-$(CONFIG_CPU_SA1100) =-mtune=strongarm1100
|
||||||
tune-$(CONFIG_CPU_XSCALE) =$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
|
tune-$(CONFIG_CPU_XSCALE) =-mtune=xscale
|
||||||
tune-$(CONFIG_CPU_XSC3) =$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
|
tune-$(CONFIG_CPU_XSC3) =-mtune=xscale
|
||||||
tune-$(CONFIG_CPU_FEROCEON) =$(call cc-option,-mtune=marvell-f,-mtune=xscale)
|
tune-$(CONFIG_CPU_FEROCEON) =-mtune=xscale
|
||||||
tune-$(CONFIG_CPU_V6) =$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
|
tune-$(CONFIG_CPU_V6) =-mtune=arm1136j-s
|
||||||
tune-$(CONFIG_CPU_V6K) =$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
|
tune-$(CONFIG_CPU_V6K) =-mtune=arm1136j-s
|
||||||
|
|
||||||
# Evaluate tune cc-option calls now
|
# Evaluate tune cc-option calls now
|
||||||
tune-y := $(tune-y)
|
tune-y := $(tune-y)
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
compatible = "smsc,lan9221","smsc,lan9115";
|
compatible = "smsc,lan9221","smsc,lan9115";
|
||||||
bank-width = <2>;
|
bank-width = <2>;
|
||||||
|
|
||||||
gpmc,mux-add-data;
|
gpmc,mux-add-data = <0>;
|
||||||
gpmc,cs-on-ns = <0>;
|
gpmc,cs-on-ns = <0>;
|
||||||
gpmc,cs-rd-off-ns = <42>;
|
gpmc,cs-rd-off-ns = <42>;
|
||||||
gpmc,cs-wr-off-ns = <36>;
|
gpmc,cs-wr-off-ns = <36>;
|
||||||
|
|||||||
@@ -352,7 +352,7 @@
|
|||||||
compatible = "bosch,bma180";
|
compatible = "bosch,bma180";
|
||||||
reg = <0x41>;
|
reg = <0x41>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pintcrl-0 = <&bma180_pins>;
|
pinctrl-0 = <&bma180_pins>;
|
||||||
interrupt-parent = <&gpio4>;
|
interrupt-parent = <&gpio4>;
|
||||||
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; /* GPIO_115 */
|
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; /* GPIO_115 */
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
compatible = "smsc,lan9221","smsc,lan9115";
|
compatible = "smsc,lan9221","smsc,lan9115";
|
||||||
bank-width = <2>;
|
bank-width = <2>;
|
||||||
|
|
||||||
gpmc,mux-add-data;
|
gpmc,mux-add-data = <0>;
|
||||||
gpmc,cs-on-ns = <0>;
|
gpmc,cs-on-ns = <0>;
|
||||||
gpmc,cs-rd-off-ns = <42>;
|
gpmc,cs-rd-off-ns = <42>;
|
||||||
gpmc,cs-wr-off-ns = <36>;
|
gpmc,cs-wr-off-ns = <36>;
|
||||||
|
|||||||
@@ -51,8 +51,7 @@ int notrace unwind_frame(struct stackframe *frame)
|
|||||||
|
|
||||||
frame->sp = frame->fp;
|
frame->sp = frame->fp;
|
||||||
frame->fp = *(unsigned long *)(fp);
|
frame->fp = *(unsigned long *)(fp);
|
||||||
frame->pc = frame->lr;
|
frame->pc = *(unsigned long *)(fp + 4);
|
||||||
frame->lr = *(unsigned long *)(fp + 4);
|
|
||||||
#else
|
#else
|
||||||
/* check current frame pointer is within bounds */
|
/* check current frame pointer is within bounds */
|
||||||
if (fp < low + 12 || fp > high - 4)
|
if (fp < low + 12 || fp > high - 4)
|
||||||
|
|||||||
@@ -731,7 +731,7 @@ config CPU_BIG_ENDIAN
|
|||||||
config CPU_ENDIAN_BE8
|
config CPU_ENDIAN_BE8
|
||||||
bool
|
bool
|
||||||
depends on CPU_BIG_ENDIAN
|
depends on CPU_BIG_ENDIAN
|
||||||
default CPU_V6 || CPU_V6K || CPU_V7
|
default CPU_V6 || CPU_V6K || CPU_V7 || CPU_V7M
|
||||||
help
|
help
|
||||||
Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors.
|
Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors.
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ void __raw_readsw(const void __iomem *addr, void *data, int len)
|
|||||||
*dst++ = *src;
|
*dst++ = *src;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__raw_readsw);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* __raw_writesw - read words a short at a time
|
* __raw_writesw - read words a short at a time
|
||||||
@@ -60,6 +61,7 @@ void __raw_writesw(void __iomem *addr, const void *data, int len)
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__raw_writesw);
|
||||||
|
|
||||||
/* Pretty sure len is pre-adjusted for the length of the access already */
|
/* Pretty sure len is pre-adjusted for the length of the access already */
|
||||||
void __raw_readsl(const void __iomem *addr, void *data, int len)
|
void __raw_readsl(const void __iomem *addr, void *data, int len)
|
||||||
@@ -75,6 +77,7 @@ void __raw_readsl(const void __iomem *addr, void *data, int len)
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__raw_readsl);
|
||||||
|
|
||||||
void __raw_writesl(void __iomem *addr, const void *data, int len)
|
void __raw_writesl(void __iomem *addr, const void *data, int len)
|
||||||
{
|
{
|
||||||
@@ -89,3 +92,4 @@ void __raw_writesl(void __iomem *addr, const void *data, int len)
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(__raw_writesl);
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ config DISABLE_VHPT
|
|||||||
|
|
||||||
config IA64_DEBUG_CMPXCHG
|
config IA64_DEBUG_CMPXCHG
|
||||||
bool "Turn on compare-and-exchange bug checking (slow!)"
|
bool "Turn on compare-and-exchange bug checking (slow!)"
|
||||||
depends on DEBUG_KERNEL
|
depends on DEBUG_KERNEL && PRINTK
|
||||||
help
|
help
|
||||||
Selecting this option turns on bug checking for the IA-64
|
Selecting this option turns on bug checking for the IA-64
|
||||||
compare-and-exchange instructions. This is slow! Itaniums
|
compare-and-exchange instructions. This is slow! Itaniums
|
||||||
|
|||||||
@@ -184,6 +184,7 @@ config INIT_LCD
|
|||||||
config MEMORY_RESERVE
|
config MEMORY_RESERVE
|
||||||
int "Memory reservation (MiB)"
|
int "Memory reservation (MiB)"
|
||||||
depends on (UCSIMM || UCDIMM)
|
depends on (UCSIMM || UCDIMM)
|
||||||
|
default 0
|
||||||
help
|
help
|
||||||
Reserve certain memory regions on 68x328 based boards.
|
Reserve certain memory regions on 68x328 based boards.
|
||||||
|
|
||||||
|
|||||||
@@ -267,6 +267,9 @@ config BCM63XX
|
|||||||
select SYS_SUPPORTS_32BIT_KERNEL
|
select SYS_SUPPORTS_32BIT_KERNEL
|
||||||
select SYS_SUPPORTS_BIG_ENDIAN
|
select SYS_SUPPORTS_BIG_ENDIAN
|
||||||
select SYS_HAS_EARLY_PRINTK
|
select SYS_HAS_EARLY_PRINTK
|
||||||
|
select SYS_HAS_CPU_BMIPS32_3300
|
||||||
|
select SYS_HAS_CPU_BMIPS4350
|
||||||
|
select SYS_HAS_CPU_BMIPS4380
|
||||||
select SWAP_IO_SPACE
|
select SWAP_IO_SPACE
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
select HAVE_CLK
|
select HAVE_CLK
|
||||||
@@ -1373,6 +1376,7 @@ config CPU_LOONGSON3
|
|||||||
select WEAK_REORDERING_BEYOND_LLSC
|
select WEAK_REORDERING_BEYOND_LLSC
|
||||||
select MIPS_PGD_C0_CONTEXT
|
select MIPS_PGD_C0_CONTEXT
|
||||||
select MIPS_L1_CACHE_SHIFT_6
|
select MIPS_L1_CACHE_SHIFT_6
|
||||||
|
select MIPS_FP_SUPPORT
|
||||||
select GPIOLIB
|
select GPIOLIB
|
||||||
help
|
help
|
||||||
The Loongson 3 processor implements the MIPS64R2 instruction
|
The Loongson 3 processor implements the MIPS64R2 instruction
|
||||||
|
|||||||
@@ -336,6 +336,12 @@ void clk_disable(struct clk *clk)
|
|||||||
|
|
||||||
EXPORT_SYMBOL(clk_disable);
|
EXPORT_SYMBOL(clk_disable);
|
||||||
|
|
||||||
|
struct clk *clk_get_parent(struct clk *clk)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(clk_get_parent);
|
||||||
|
|
||||||
unsigned long clk_get_rate(struct clk *clk)
|
unsigned long clk_get_rate(struct clk *clk)
|
||||||
{
|
{
|
||||||
return clk->rate;
|
return clk->rate;
|
||||||
|
|||||||
@@ -27,8 +27,8 @@
|
|||||||
#define EX2(a,b) \
|
#define EX2(a,b) \
|
||||||
9: a,##b; \
|
9: a,##b; \
|
||||||
.section __ex_table,"a"; \
|
.section __ex_table,"a"; \
|
||||||
PTR 9b,bad_stack; \
|
PTR 9b,fault; \
|
||||||
PTR 9b+4,bad_stack; \
|
PTR 9b+4,fault; \
|
||||||
.previous
|
.previous
|
||||||
|
|
||||||
.set noreorder
|
.set noreorder
|
||||||
|
|||||||
@@ -244,12 +244,3 @@ SYSCALL_DEFINE3(cachectl, char *, addr, int, nbytes, int, op)
|
|||||||
{
|
{
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* If we ever come here the user sp is bad. Zap the process right away.
|
|
||||||
* Due to the bad stack signaling wouldn't work.
|
|
||||||
*/
|
|
||||||
asmlinkage void bad_stack(void)
|
|
||||||
{
|
|
||||||
do_exit(SIGSEGV);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
|
|
||||||
#include <lantiq_soc.h>
|
#include <lantiq_soc.h>
|
||||||
@@ -39,6 +40,7 @@
|
|||||||
#define LTQ_DMA_PCTRL 0x44
|
#define LTQ_DMA_PCTRL 0x44
|
||||||
#define LTQ_DMA_IRNEN 0xf4
|
#define LTQ_DMA_IRNEN 0xf4
|
||||||
|
|
||||||
|
#define DMA_ID_CHNR GENMASK(26, 20) /* channel number */
|
||||||
#define DMA_DESCPT BIT(3) /* descriptor complete irq */
|
#define DMA_DESCPT BIT(3) /* descriptor complete irq */
|
||||||
#define DMA_TX BIT(8) /* TX channel direction */
|
#define DMA_TX BIT(8) /* TX channel direction */
|
||||||
#define DMA_CHAN_ON BIT(0) /* channel on / off bit */
|
#define DMA_CHAN_ON BIT(0) /* channel on / off bit */
|
||||||
@@ -49,7 +51,6 @@
|
|||||||
#define DMA_POLL BIT(31) /* turn on channel polling */
|
#define DMA_POLL BIT(31) /* turn on channel polling */
|
||||||
#define DMA_CLK_DIV4 BIT(6) /* polling clock divider */
|
#define DMA_CLK_DIV4 BIT(6) /* polling clock divider */
|
||||||
#define DMA_2W_BURST BIT(1) /* 2 word burst length */
|
#define DMA_2W_BURST BIT(1) /* 2 word burst length */
|
||||||
#define DMA_MAX_CHANNEL 20 /* the soc has 20 channels */
|
|
||||||
#define DMA_ETOP_ENDIANNESS (0xf << 8) /* endianness swap etop channels */
|
#define DMA_ETOP_ENDIANNESS (0xf << 8) /* endianness swap etop channels */
|
||||||
#define DMA_WEIGHT (BIT(17) | BIT(16)) /* default channel wheight */
|
#define DMA_WEIGHT (BIT(17) | BIT(16)) /* default channel wheight */
|
||||||
|
|
||||||
@@ -216,7 +217,7 @@ ltq_dma_init(struct platform_device *pdev)
|
|||||||
{
|
{
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
unsigned id;
|
unsigned int id, nchannels;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
@@ -232,21 +233,24 @@ ltq_dma_init(struct platform_device *pdev)
|
|||||||
clk_enable(clk);
|
clk_enable(clk);
|
||||||
ltq_dma_w32_mask(0, DMA_RESET, LTQ_DMA_CTRL);
|
ltq_dma_w32_mask(0, DMA_RESET, LTQ_DMA_CTRL);
|
||||||
|
|
||||||
|
usleep_range(1, 10);
|
||||||
|
|
||||||
/* disable all interrupts */
|
/* disable all interrupts */
|
||||||
ltq_dma_w32(0, LTQ_DMA_IRNEN);
|
ltq_dma_w32(0, LTQ_DMA_IRNEN);
|
||||||
|
|
||||||
/* reset/configure each channel */
|
/* reset/configure each channel */
|
||||||
for (i = 0; i < DMA_MAX_CHANNEL; i++) {
|
id = ltq_dma_r32(LTQ_DMA_ID);
|
||||||
|
nchannels = ((id & DMA_ID_CHNR) >> 20);
|
||||||
|
for (i = 0; i < nchannels; i++) {
|
||||||
ltq_dma_w32(i, LTQ_DMA_CS);
|
ltq_dma_w32(i, LTQ_DMA_CS);
|
||||||
ltq_dma_w32(DMA_CHAN_RST, LTQ_DMA_CCTRL);
|
ltq_dma_w32(DMA_CHAN_RST, LTQ_DMA_CCTRL);
|
||||||
ltq_dma_w32(DMA_POLL | DMA_CLK_DIV4, LTQ_DMA_CPOLL);
|
ltq_dma_w32(DMA_POLL | DMA_CLK_DIV4, LTQ_DMA_CPOLL);
|
||||||
ltq_dma_w32_mask(DMA_CHAN_ON, 0, LTQ_DMA_CCTRL);
|
ltq_dma_w32_mask(DMA_CHAN_ON, 0, LTQ_DMA_CCTRL);
|
||||||
}
|
}
|
||||||
|
|
||||||
id = ltq_dma_r32(LTQ_DMA_ID);
|
|
||||||
dev_info(&pdev->dev,
|
dev_info(&pdev->dev,
|
||||||
"Init done - hw rev: %X, ports: %d, channels: %d\n",
|
"Init done - hw rev: %X, ports: %d, channels: %d\n",
|
||||||
id & 0x1f, (id >> 16) & 0xf, id >> 20);
|
id & 0x1f, (id >> 16) & 0xf, nchannels);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,14 +17,14 @@ static int a20r_set_periodic(struct clock_event_device *evt)
|
|||||||
{
|
{
|
||||||
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0x34;
|
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0x34;
|
||||||
wmb();
|
wmb();
|
||||||
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV;
|
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV & 0xff;
|
||||||
wmb();
|
wmb();
|
||||||
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV >> 8;
|
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV >> 8;
|
||||||
wmb();
|
wmb();
|
||||||
|
|
||||||
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0xb4;
|
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 12) = 0xb4;
|
||||||
wmb();
|
wmb();
|
||||||
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV;
|
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV & 0xff;
|
||||||
wmb();
|
wmb();
|
||||||
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV >> 8;
|
*(volatile u8 *)(A20R_PT_CLOCK_BASE + 8) = SNI_COUNTER2_DIV >> 8;
|
||||||
wmb();
|
wmb();
|
||||||
|
|||||||
@@ -1849,8 +1849,8 @@ syscall_restore:
|
|||||||
LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1
|
LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r1
|
||||||
|
|
||||||
/* Are we being ptraced? */
|
/* Are we being ptraced? */
|
||||||
ldw TASK_FLAGS(%r1),%r19
|
LDREG TI_FLAGS-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r19
|
||||||
ldi _TIF_SYSCALL_TRACE_MASK,%r2
|
ldi _TIF_SINGLESTEP|_TIF_BLOCKSTEP,%r2
|
||||||
and,COND(=) %r19,%r2,%r0
|
and,COND(=) %r19,%r2,%r0
|
||||||
b,n syscall_restore_rfi
|
b,n syscall_restore_rfi
|
||||||
|
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
#include <linux/ftrace.h>
|
#include <linux/ftrace.h>
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
|
#include <linux/kgdb.h>
|
||||||
|
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
#include <asm/current.h>
|
#include <asm/current.h>
|
||||||
@@ -74,7 +75,10 @@ enum ipi_message_type {
|
|||||||
IPI_CALL_FUNC,
|
IPI_CALL_FUNC,
|
||||||
IPI_CPU_START,
|
IPI_CPU_START,
|
||||||
IPI_CPU_STOP,
|
IPI_CPU_STOP,
|
||||||
IPI_CPU_TEST
|
IPI_CPU_TEST,
|
||||||
|
#ifdef CONFIG_KGDB
|
||||||
|
IPI_ENTER_KGDB,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -170,7 +174,12 @@ ipi_interrupt(int irq, void *dev_id)
|
|||||||
case IPI_CPU_TEST:
|
case IPI_CPU_TEST:
|
||||||
smp_debug(100, KERN_DEBUG "CPU%d is alive!\n", this_cpu);
|
smp_debug(100, KERN_DEBUG "CPU%d is alive!\n", this_cpu);
|
||||||
break;
|
break;
|
||||||
|
#ifdef CONFIG_KGDB
|
||||||
|
case IPI_ENTER_KGDB:
|
||||||
|
smp_debug(100, KERN_DEBUG "CPU%d ENTER_KGDB\n", this_cpu);
|
||||||
|
kgdb_nmicallback(raw_smp_processor_id(), get_irq_regs());
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
printk(KERN_CRIT "Unknown IPI num on CPU%d: %lu\n",
|
printk(KERN_CRIT "Unknown IPI num on CPU%d: %lu\n",
|
||||||
this_cpu, which);
|
this_cpu, which);
|
||||||
@@ -226,6 +235,12 @@ send_IPI_allbutself(enum ipi_message_type op)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_KGDB
|
||||||
|
void kgdb_roundup_cpus(void)
|
||||||
|
{
|
||||||
|
send_IPI_allbutself(IPI_ENTER_KGDB);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
smp_send_stop(void) { send_IPI_allbutself(IPI_CPU_STOP); }
|
smp_send_stop(void) { send_IPI_allbutself(IPI_CPU_STOP); }
|
||||||
|
|||||||
@@ -940,9 +940,9 @@ void flush_tlb_all(void)
|
|||||||
{
|
{
|
||||||
int do_recycle;
|
int do_recycle;
|
||||||
|
|
||||||
__inc_irq_stat(irq_tlb_count);
|
|
||||||
do_recycle = 0;
|
do_recycle = 0;
|
||||||
spin_lock(&sid_lock);
|
spin_lock(&sid_lock);
|
||||||
|
__inc_irq_stat(irq_tlb_count);
|
||||||
if (dirty_space_ids > RECYCLE_THRESHOLD) {
|
if (dirty_space_ids > RECYCLE_THRESHOLD) {
|
||||||
BUG_ON(recycle_inuse); /* FIXME: Use a semaphore/wait queue here */
|
BUG_ON(recycle_inuse); /* FIXME: Use a semaphore/wait queue here */
|
||||||
get_dirty_sids(&recycle_ndirty,recycle_dirty_array);
|
get_dirty_sids(&recycle_ndirty,recycle_dirty_array);
|
||||||
@@ -961,8 +961,8 @@ void flush_tlb_all(void)
|
|||||||
#else
|
#else
|
||||||
void flush_tlb_all(void)
|
void flush_tlb_all(void)
|
||||||
{
|
{
|
||||||
__inc_irq_stat(irq_tlb_count);
|
|
||||||
spin_lock(&sid_lock);
|
spin_lock(&sid_lock);
|
||||||
|
__inc_irq_stat(irq_tlb_count);
|
||||||
flush_tlb_all_local(NULL);
|
flush_tlb_all_local(NULL);
|
||||||
recycle_sids();
|
recycle_sids();
|
||||||
spin_unlock(&sid_lock);
|
spin_unlock(&sid_lock);
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x08000000>; // 128MB
|
reg = <0x00000000 0x08000000>; // 128MB
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
model = "intercontrol,digsy-mtc";
|
model = "intercontrol,digsy-mtc";
|
||||||
compatible = "intercontrol,digsy-mtc";
|
compatible = "intercontrol,digsy-mtc";
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
reg = <0x00000000 0x02000000>; // 32MB
|
reg = <0x00000000 0x02000000>; // 32MB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x04000000>; // 64MB
|
reg = <0x00000000 0x04000000>; // 64MB
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
led4 { gpios = <&gpio_simple 2 1>; };
|
led4 { gpios = <&gpio_simple 2 1>; };
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
reg = <0x00000000 0x10000000>; // 256MB
|
reg = <0x00000000 0x10000000>; // 256MB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
reg = <0x00000000 0x08000000>; // 128MB RAM
|
reg = <0x00000000 0x08000000>; // 128MB RAM
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory: memory {
|
memory: memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x04000000>; // 64MB
|
reg = <0x00000000 0x04000000>; // 64MB
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
model = "ifm,o2d";
|
model = "ifm,o2d";
|
||||||
compatible = "ifm,o2d";
|
compatible = "ifm,o2d";
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
reg = <0x00000000 0x08000000>; // 128MB
|
reg = <0x00000000 0x08000000>; // 128MB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
model = "ifm,o2d";
|
model = "ifm,o2d";
|
||||||
compatible = "ifm,o2d";
|
compatible = "ifm,o2d";
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
reg = <0x00000000 0x04000000>; // 64MB
|
reg = <0x00000000 0x04000000>; // 64MB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
model = "ifm,o2dnt2";
|
model = "ifm,o2dnt2";
|
||||||
compatible = "ifm,o2d";
|
compatible = "ifm,o2d";
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
reg = <0x00000000 0x08000000>; // 128MB
|
reg = <0x00000000 0x08000000>; // 128MB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
model = "ifm,o3dnt";
|
model = "ifm,o3dnt";
|
||||||
compatible = "ifm,o2d";
|
compatible = "ifm,o2d";
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
reg = <0x00000000 0x04000000>; // 64MB
|
reg = <0x00000000 0x04000000>; // 64MB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
model = "phytec,pcm032";
|
model = "phytec,pcm032";
|
||||||
compatible = "phytec,pcm032";
|
compatible = "phytec,pcm032";
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
reg = <0x00000000 0x08000000>; // 128MB
|
reg = <0x00000000 0x08000000>; // 128MB
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory@0 {
|
||||||
device_type = "memory";
|
device_type = "memory";
|
||||||
reg = <0x00000000 0x04000000>; // 64MB
|
reg = <0x00000000 0x04000000>; // 64MB
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -177,13 +177,26 @@
|
|||||||
#define PPC_NEG(d, a) EMIT(PPC_INST_NEG | ___PPC_RT(d) | ___PPC_RA(a))
|
#define PPC_NEG(d, a) EMIT(PPC_INST_NEG | ___PPC_RT(d) | ___PPC_RA(a))
|
||||||
|
|
||||||
/* Long jump; (unconditional 'branch') */
|
/* Long jump; (unconditional 'branch') */
|
||||||
#define PPC_JMP(dest) EMIT(PPC_INST_BRANCH | \
|
#define PPC_JMP(dest) \
|
||||||
(((dest) - (ctx->idx * 4)) & 0x03fffffc))
|
do { \
|
||||||
|
long offset = (long)(dest) - (ctx->idx * 4); \
|
||||||
|
if (offset < -0x2000000 || offset > 0x1fffffc || offset & 0x3) { \
|
||||||
|
pr_err_ratelimited("Branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx); \
|
||||||
|
return -ERANGE; \
|
||||||
|
} \
|
||||||
|
EMIT(PPC_INST_BRANCH | (offset & 0x03fffffc)); \
|
||||||
|
} while (0)
|
||||||
/* "cond" here covers BO:BI fields. */
|
/* "cond" here covers BO:BI fields. */
|
||||||
#define PPC_BCC_SHORT(cond, dest) EMIT(PPC_INST_BRANCH_COND | \
|
#define PPC_BCC_SHORT(cond, dest) \
|
||||||
(((cond) & 0x3ff) << 16) | \
|
do { \
|
||||||
(((dest) - (ctx->idx * 4)) & \
|
long offset = (long)(dest) - (ctx->idx * 4); \
|
||||||
0xfffc))
|
if (offset < -0x8000 || offset > 0x7fff || offset & 0x3) { \
|
||||||
|
pr_err_ratelimited("Conditional branch offset 0x%lx (@%u) out of range\n", offset, ctx->idx); \
|
||||||
|
return -ERANGE; \
|
||||||
|
} \
|
||||||
|
EMIT(PPC_INST_BRANCH_COND | (((cond) & 0x3ff) << 16) | (offset & 0xfffc)); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
/* Sign-extended 32-bit immediate load */
|
/* Sign-extended 32-bit immediate load */
|
||||||
#define PPC_LI32(d, i) do { \
|
#define PPC_LI32(d, i) do { \
|
||||||
if ((int)(uintptr_t)(i) >= -32768 && \
|
if ((int)(uintptr_t)(i) >= -32768 && \
|
||||||
|
|||||||
@@ -239,7 +239,7 @@ static void bpf_jit_emit_func_call(u32 *image, struct codegen_context *ctx, u64
|
|||||||
PPC_BLRL();
|
PPC_BLRL();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 out)
|
static int bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32 out)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* By now, the eBPF program has already setup parameters in r3, r4 and r5
|
* By now, the eBPF program has already setup parameters in r3, r4 and r5
|
||||||
@@ -300,7 +300,9 @@ static void bpf_jit_emit_tail_call(u32 *image, struct codegen_context *ctx, u32
|
|||||||
bpf_jit_emit_common_epilogue(image, ctx);
|
bpf_jit_emit_common_epilogue(image, ctx);
|
||||||
|
|
||||||
PPC_BCTR();
|
PPC_BCTR();
|
||||||
|
|
||||||
/* out: */
|
/* out: */
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Assemble the body code between the prologue & epilogue */
|
/* Assemble the body code between the prologue & epilogue */
|
||||||
@@ -310,7 +312,7 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
|
|||||||
{
|
{
|
||||||
const struct bpf_insn *insn = fp->insnsi;
|
const struct bpf_insn *insn = fp->insnsi;
|
||||||
int flen = fp->len;
|
int flen = fp->len;
|
||||||
int i;
|
int i, ret;
|
||||||
|
|
||||||
/* Start of epilogue code - will only be valid 2nd pass onwards */
|
/* Start of epilogue code - will only be valid 2nd pass onwards */
|
||||||
u32 exit_addr = addrs[flen];
|
u32 exit_addr = addrs[flen];
|
||||||
@@ -361,18 +363,25 @@ static int bpf_jit_build_body(struct bpf_prog *fp, u32 *image,
|
|||||||
PPC_SUB(dst_reg, dst_reg, src_reg);
|
PPC_SUB(dst_reg, dst_reg, src_reg);
|
||||||
goto bpf_alu32_trunc;
|
goto bpf_alu32_trunc;
|
||||||
case BPF_ALU | BPF_ADD | BPF_K: /* (u32) dst += (u32) imm */
|
case BPF_ALU | BPF_ADD | BPF_K: /* (u32) dst += (u32) imm */
|
||||||
case BPF_ALU | BPF_SUB | BPF_K: /* (u32) dst -= (u32) imm */
|
|
||||||
case BPF_ALU64 | BPF_ADD | BPF_K: /* dst += imm */
|
case BPF_ALU64 | BPF_ADD | BPF_K: /* dst += imm */
|
||||||
|
if (!imm) {
|
||||||
|
goto bpf_alu32_trunc;
|
||||||
|
} else if (imm >= -32768 && imm < 32768) {
|
||||||
|
PPC_ADDI(dst_reg, dst_reg, IMM_L(imm));
|
||||||
|
} else {
|
||||||
|
PPC_LI32(b2p[TMP_REG_1], imm);
|
||||||
|
PPC_ADD(dst_reg, dst_reg, b2p[TMP_REG_1]);
|
||||||
|
}
|
||||||
|
goto bpf_alu32_trunc;
|
||||||
|
case BPF_ALU | BPF_SUB | BPF_K: /* (u32) dst -= (u32) imm */
|
||||||
case BPF_ALU64 | BPF_SUB | BPF_K: /* dst -= imm */
|
case BPF_ALU64 | BPF_SUB | BPF_K: /* dst -= imm */
|
||||||
if (BPF_OP(code) == BPF_SUB)
|
if (!imm) {
|
||||||
imm = -imm;
|
goto bpf_alu32_trunc;
|
||||||
if (imm) {
|
} else if (imm > -32768 && imm <= 32768) {
|
||||||
if (imm >= -32768 && imm < 32768)
|
PPC_ADDI(dst_reg, dst_reg, IMM_L(-imm));
|
||||||
PPC_ADDI(dst_reg, dst_reg, IMM_L(imm));
|
} else {
|
||||||
else {
|
PPC_LI32(b2p[TMP_REG_1], imm);
|
||||||
PPC_LI32(b2p[TMP_REG_1], imm);
|
PPC_SUB(dst_reg, dst_reg, b2p[TMP_REG_1]);
|
||||||
PPC_ADD(dst_reg, dst_reg, b2p[TMP_REG_1]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
goto bpf_alu32_trunc;
|
goto bpf_alu32_trunc;
|
||||||
case BPF_ALU | BPF_MUL | BPF_X: /* (u32) dst *= (u32) src */
|
case BPF_ALU | BPF_MUL | BPF_X: /* (u32) dst *= (u32) src */
|
||||||
@@ -938,7 +947,9 @@ common_load:
|
|||||||
*/
|
*/
|
||||||
case BPF_JMP | BPF_CALL | BPF_X:
|
case BPF_JMP | BPF_CALL | BPF_X:
|
||||||
ctx->seen |= SEEN_TAILCALL;
|
ctx->seen |= SEEN_TAILCALL;
|
||||||
bpf_jit_emit_tail_call(image, ctx, addrs[i + 1]);
|
ret = bpf_jit_emit_tail_call(image, ctx, addrs[i + 1]);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -98,9 +98,8 @@ int __init mpc85xx_setup_pmc(void)
|
|||||||
pr_err("Could not map guts node address\n");
|
pr_err("Could not map guts node address\n");
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
qoriq_pm_ops = &mpc85xx_pm_ops;
|
||||||
}
|
}
|
||||||
|
|
||||||
qoriq_pm_ops = &mpc85xx_pm_ops;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
#include <asm/export.h>
|
#include <asm/export.h>
|
||||||
|
|
||||||
#define DCR_ACCESS_PROLOG(table) \
|
#define DCR_ACCESS_PROLOG(table) \
|
||||||
cmpli cr0,r3,1024; \
|
cmplwi cr0,r3,1024; \
|
||||||
rlwinm r3,r3,4,18,27; \
|
rlwinm r3,r3,4,18,27; \
|
||||||
lis r5,table@h; \
|
lis r5,table@h; \
|
||||||
ori r5,r5,table@l; \
|
ori r5,r5,table@l; \
|
||||||
|
|||||||
@@ -662,9 +662,10 @@ void __gmap_zap(struct gmap *gmap, unsigned long gaddr)
|
|||||||
vmaddr |= gaddr & ~PMD_MASK;
|
vmaddr |= gaddr & ~PMD_MASK;
|
||||||
/* Get pointer to the page table entry */
|
/* Get pointer to the page table entry */
|
||||||
ptep = get_locked_pte(gmap->mm, vmaddr, &ptl);
|
ptep = get_locked_pte(gmap->mm, vmaddr, &ptl);
|
||||||
if (likely(ptep))
|
if (likely(ptep)) {
|
||||||
ptep_zap_unused(gmap->mm, vmaddr, ptep, 0);
|
ptep_zap_unused(gmap->mm, vmaddr, ptep, 0);
|
||||||
pte_unmap_unlock(ptep, ptl);
|
pte_unmap_unlock(ptep, ptl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(__gmap_zap);
|
EXPORT_SYMBOL_GPL(__gmap_zap);
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ config DUMP_CODE
|
|||||||
|
|
||||||
config DWARF_UNWINDER
|
config DWARF_UNWINDER
|
||||||
bool "Enable the DWARF unwinder for stacktraces"
|
bool "Enable the DWARF unwinder for stacktraces"
|
||||||
|
depends on DEBUG_KERNEL
|
||||||
select FRAME_POINTER
|
select FRAME_POINTER
|
||||||
depends on SUPERH32
|
depends on SUPERH32
|
||||||
default n
|
default n
|
||||||
|
|||||||
@@ -25,6 +25,14 @@
|
|||||||
#ifndef _SFP_MACHINE_H
|
#ifndef _SFP_MACHINE_H
|
||||||
#define _SFP_MACHINE_H
|
#define _SFP_MACHINE_H
|
||||||
|
|
||||||
|
#ifdef __BIG_ENDIAN__
|
||||||
|
#define __BYTE_ORDER __BIG_ENDIAN
|
||||||
|
#define __LITTLE_ENDIAN 0
|
||||||
|
#else
|
||||||
|
#define __BYTE_ORDER __LITTLE_ENDIAN
|
||||||
|
#define __BIG_ENDIAN 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#define _FP_W_TYPE_SIZE 32
|
#define _FP_W_TYPE_SIZE 32
|
||||||
#define _FP_W_TYPE unsigned long
|
#define _FP_W_TYPE unsigned long
|
||||||
#define _FP_WS_TYPE signed long
|
#define _FP_WS_TYPE signed long
|
||||||
|
|||||||
@@ -76,8 +76,9 @@ static void shx3_prepare_cpus(unsigned int max_cpus)
|
|||||||
BUILD_BUG_ON(SMP_MSG_NR >= 8);
|
BUILD_BUG_ON(SMP_MSG_NR >= 8);
|
||||||
|
|
||||||
for (i = 0; i < SMP_MSG_NR; i++)
|
for (i = 0; i < SMP_MSG_NR; i++)
|
||||||
request_irq(104 + i, ipi_interrupt_handler,
|
if (request_irq(104 + i, ipi_interrupt_handler,
|
||||||
IRQF_PERCPU, "IPI", (void *)(long)i);
|
IRQF_PERCPU, "IPI", (void *)(long)i))
|
||||||
|
pr_err("Failed to request irq %d\n", i);
|
||||||
|
|
||||||
for (i = 0; i < max_cpus; i++)
|
for (i = 0; i < max_cpus; i++)
|
||||||
set_cpu_present(i, true);
|
set_cpu_present(i, true);
|
||||||
|
|||||||
@@ -3363,6 +3363,9 @@ static int skx_cha_hw_config(struct intel_uncore_box *box, struct perf_event *ev
|
|||||||
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
|
struct hw_perf_event_extra *reg1 = &event->hw.extra_reg;
|
||||||
struct extra_reg *er;
|
struct extra_reg *er;
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
|
/* Any of the CHA events may be filtered by Thread/Core-ID.*/
|
||||||
|
if (event->hw.config & SNBEP_CBO_PMON_CTL_TID_EN)
|
||||||
|
idx = SKX_CHA_MSR_PMON_BOX_FILTER_TID;
|
||||||
|
|
||||||
for (er = skx_uncore_cha_extra_regs; er->msr; er++) {
|
for (er = skx_uncore_cha_extra_regs; er->msr; er++) {
|
||||||
if (er->event != (event->hw.config & er->config_mask))
|
if (er->event != (event->hw.config & er->config_mask))
|
||||||
@@ -3430,6 +3433,7 @@ static struct event_constraint skx_uncore_iio_constraints[] = {
|
|||||||
UNCORE_EVENT_CONSTRAINT(0xc0, 0xc),
|
UNCORE_EVENT_CONSTRAINT(0xc0, 0xc),
|
||||||
UNCORE_EVENT_CONSTRAINT(0xc5, 0xc),
|
UNCORE_EVENT_CONSTRAINT(0xc5, 0xc),
|
||||||
UNCORE_EVENT_CONSTRAINT(0xd4, 0xc),
|
UNCORE_EVENT_CONSTRAINT(0xd4, 0xc),
|
||||||
|
UNCORE_EVENT_CONSTRAINT(0xd5, 0xc),
|
||||||
EVENT_CONSTRAINT_END
|
EVENT_CONSTRAINT_END
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
#define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)
|
#define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)
|
||||||
#define CURRENT_MASK (~(THREAD_SIZE - 1))
|
#define CURRENT_MASK (~(THREAD_SIZE - 1))
|
||||||
|
|
||||||
#define EXCEPTION_STACK_ORDER (0 + KASAN_STACK_ORDER)
|
#define EXCEPTION_STACK_ORDER (1 + KASAN_STACK_ORDER)
|
||||||
#define EXCEPTION_STKSZ (PAGE_SIZE << EXCEPTION_STACK_ORDER)
|
#define EXCEPTION_STKSZ (PAGE_SIZE << EXCEPTION_STACK_ORDER)
|
||||||
|
|
||||||
#define DEBUG_STACK_ORDER (EXCEPTION_STACK_ORDER + 1)
|
#define DEBUG_STACK_ORDER (EXCEPTION_STACK_ORDER + 1)
|
||||||
|
|||||||
@@ -284,8 +284,10 @@ void kvm_set_posted_intr_wakeup_handler(void (*handler)(void))
|
|||||||
{
|
{
|
||||||
if (handler)
|
if (handler)
|
||||||
kvm_posted_intr_wakeup_handler = handler;
|
kvm_posted_intr_wakeup_handler = handler;
|
||||||
else
|
else {
|
||||||
kvm_posted_intr_wakeup_handler = dummy_handler;
|
kvm_posted_intr_wakeup_handler = dummy_handler;
|
||||||
|
synchronize_rcu();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(kvm_set_posted_intr_wakeup_handler);
|
EXPORT_SYMBOL_GPL(kvm_set_posted_intr_wakeup_handler);
|
||||||
|
|
||||||
|
|||||||
@@ -138,12 +138,14 @@ static void pcrypt_aead_enc(struct padata_priv *padata)
|
|||||||
{
|
{
|
||||||
struct pcrypt_request *preq = pcrypt_padata_request(padata);
|
struct pcrypt_request *preq = pcrypt_padata_request(padata);
|
||||||
struct aead_request *req = pcrypt_request_ctx(preq);
|
struct aead_request *req = pcrypt_request_ctx(preq);
|
||||||
|
int ret;
|
||||||
|
|
||||||
padata->info = crypto_aead_encrypt(req);
|
ret = crypto_aead_encrypt(req);
|
||||||
|
|
||||||
if (padata->info == -EINPROGRESS)
|
if (ret == -EINPROGRESS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
padata->info = ret;
|
||||||
padata_do_serial(padata);
|
padata_do_serial(padata);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,12 +182,14 @@ static void pcrypt_aead_dec(struct padata_priv *padata)
|
|||||||
{
|
{
|
||||||
struct pcrypt_request *preq = pcrypt_padata_request(padata);
|
struct pcrypt_request *preq = pcrypt_padata_request(padata);
|
||||||
struct aead_request *req = pcrypt_request_ctx(preq);
|
struct aead_request *req = pcrypt_request_ctx(preq);
|
||||||
|
int ret;
|
||||||
|
|
||||||
padata->info = crypto_aead_decrypt(req);
|
ret = crypto_aead_decrypt(req);
|
||||||
|
|
||||||
if (padata->info == -EINPROGRESS)
|
if (ret == -EINPROGRESS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
padata->info = ret;
|
||||||
padata_do_serial(padata);
|
padata_do_serial(padata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -259,6 +259,8 @@ extern struct acpi_bit_register_info
|
|||||||
|
|
||||||
ACPI_GLOBAL(u8, acpi_gbl_sleep_type_a);
|
ACPI_GLOBAL(u8, acpi_gbl_sleep_type_a);
|
||||||
ACPI_GLOBAL(u8, acpi_gbl_sleep_type_b);
|
ACPI_GLOBAL(u8, acpi_gbl_sleep_type_b);
|
||||||
|
ACPI_GLOBAL(u8, acpi_gbl_sleep_type_a_s0);
|
||||||
|
ACPI_GLOBAL(u8, acpi_gbl_sleep_type_b_s0);
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -184,17 +184,13 @@ acpi_status acpi_hw_extended_sleep(u8 sleep_state)
|
|||||||
|
|
||||||
acpi_status acpi_hw_extended_wake_prep(u8 sleep_state)
|
acpi_status acpi_hw_extended_wake_prep(u8 sleep_state)
|
||||||
{
|
{
|
||||||
acpi_status status;
|
|
||||||
u8 sleep_type_value;
|
u8 sleep_type_value;
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE(hw_extended_wake_prep);
|
ACPI_FUNCTION_TRACE(hw_extended_wake_prep);
|
||||||
|
|
||||||
status = acpi_get_sleep_type_data(ACPI_STATE_S0,
|
if (acpi_gbl_sleep_type_a_s0 != ACPI_SLEEP_TYPE_INVALID) {
|
||||||
&acpi_gbl_sleep_type_a,
|
|
||||||
&acpi_gbl_sleep_type_b);
|
|
||||||
if (ACPI_SUCCESS(status)) {
|
|
||||||
sleep_type_value =
|
sleep_type_value =
|
||||||
((acpi_gbl_sleep_type_a << ACPI_X_SLEEP_TYPE_POSITION) &
|
((acpi_gbl_sleep_type_a_s0 << ACPI_X_SLEEP_TYPE_POSITION) &
|
||||||
ACPI_X_SLEEP_TYPE_MASK);
|
ACPI_X_SLEEP_TYPE_MASK);
|
||||||
|
|
||||||
(void)acpi_write((u64)(sleep_type_value | ACPI_X_SLEEP_ENABLE),
|
(void)acpi_write((u64)(sleep_type_value | ACPI_X_SLEEP_ENABLE),
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ acpi_status acpi_hw_legacy_sleep(u8 sleep_state)
|
|||||||
|
|
||||||
acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
|
acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
|
||||||
{
|
{
|
||||||
acpi_status status;
|
acpi_status status = AE_OK;
|
||||||
struct acpi_bit_register_info *sleep_type_reg_info;
|
struct acpi_bit_register_info *sleep_type_reg_info;
|
||||||
struct acpi_bit_register_info *sleep_enable_reg_info;
|
struct acpi_bit_register_info *sleep_enable_reg_info;
|
||||||
u32 pm1a_control;
|
u32 pm1a_control;
|
||||||
@@ -230,10 +230,7 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
|
|||||||
* This is unclear from the ACPI Spec, but it is required
|
* This is unclear from the ACPI Spec, but it is required
|
||||||
* by some machines.
|
* by some machines.
|
||||||
*/
|
*/
|
||||||
status = acpi_get_sleep_type_data(ACPI_STATE_S0,
|
if (acpi_gbl_sleep_type_a_s0 != ACPI_SLEEP_TYPE_INVALID) {
|
||||||
&acpi_gbl_sleep_type_a,
|
|
||||||
&acpi_gbl_sleep_type_b);
|
|
||||||
if (ACPI_SUCCESS(status)) {
|
|
||||||
sleep_type_reg_info =
|
sleep_type_reg_info =
|
||||||
acpi_hw_get_bit_register_info(ACPI_BITREG_SLEEP_TYPE);
|
acpi_hw_get_bit_register_info(ACPI_BITREG_SLEEP_TYPE);
|
||||||
sleep_enable_reg_info =
|
sleep_enable_reg_info =
|
||||||
@@ -254,9 +251,9 @@ acpi_status acpi_hw_legacy_wake_prep(u8 sleep_state)
|
|||||||
|
|
||||||
/* Insert the SLP_TYP bits */
|
/* Insert the SLP_TYP bits */
|
||||||
|
|
||||||
pm1a_control |= (acpi_gbl_sleep_type_a <<
|
pm1a_control |= (acpi_gbl_sleep_type_a_s0 <<
|
||||||
sleep_type_reg_info->bit_position);
|
sleep_type_reg_info->bit_position);
|
||||||
pm1b_control |= (acpi_gbl_sleep_type_b <<
|
pm1b_control |= (acpi_gbl_sleep_type_b_s0 <<
|
||||||
sleep_type_reg_info->bit_position);
|
sleep_type_reg_info->bit_position);
|
||||||
|
|
||||||
/* Write the control registers and ignore any errors */
|
/* Write the control registers and ignore any errors */
|
||||||
|
|||||||
@@ -315,6 +315,13 @@ acpi_status acpi_enter_sleep_state_prep(u8 sleep_state)
|
|||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status = acpi_get_sleep_type_data(ACPI_STATE_S0,
|
||||||
|
&acpi_gbl_sleep_type_a_s0,
|
||||||
|
&acpi_gbl_sleep_type_b_s0);
|
||||||
|
if (ACPI_FAILURE(status)) {
|
||||||
|
acpi_gbl_sleep_type_a_s0 = ACPI_SLEEP_TYPE_INVALID;
|
||||||
|
}
|
||||||
|
|
||||||
/* Execute the _PTS method (Prepare To Sleep) */
|
/* Execute the _PTS method (Prepare To Sleep) */
|
||||||
|
|
||||||
arg_list.count = 1;
|
arg_list.count = 1;
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ static int acpi_battery_is_charged(struct acpi_battery *battery)
|
|||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* fallback to using design values for broken batteries */
|
/* fallback to using design values for broken batteries */
|
||||||
if (battery->design_capacity == battery->capacity_now)
|
if (battery->design_capacity <= battery->capacity_now)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* we don't do any sort of metric based on percentages */
|
/* we don't do any sort of metric based on percentages */
|
||||||
|
|||||||
@@ -216,31 +216,36 @@ static acpi_status intel_pmic_regs_handler(u32 function,
|
|||||||
void *handler_context, void *region_context)
|
void *handler_context, void *region_context)
|
||||||
{
|
{
|
||||||
struct intel_pmic_opregion *opregion = region_context;
|
struct intel_pmic_opregion *opregion = region_context;
|
||||||
int result = 0;
|
int result = -EINVAL;
|
||||||
|
|
||||||
switch (address) {
|
if (function == ACPI_WRITE) {
|
||||||
case 0:
|
switch (address) {
|
||||||
return AE_OK;
|
case 0:
|
||||||
case 1:
|
return AE_OK;
|
||||||
opregion->ctx.addr |= (*value64 & 0xff) << 8;
|
case 1:
|
||||||
return AE_OK;
|
opregion->ctx.addr |= (*value64 & 0xff) << 8;
|
||||||
case 2:
|
return AE_OK;
|
||||||
opregion->ctx.addr |= *value64 & 0xff;
|
case 2:
|
||||||
return AE_OK;
|
opregion->ctx.addr |= *value64 & 0xff;
|
||||||
case 3:
|
return AE_OK;
|
||||||
opregion->ctx.val = *value64 & 0xff;
|
case 3:
|
||||||
return AE_OK;
|
opregion->ctx.val = *value64 & 0xff;
|
||||||
case 4:
|
return AE_OK;
|
||||||
if (*value64) {
|
case 4:
|
||||||
result = regmap_write(opregion->regmap, opregion->ctx.addr,
|
if (*value64) {
|
||||||
opregion->ctx.val);
|
result = regmap_write(opregion->regmap, opregion->ctx.addr,
|
||||||
} else {
|
opregion->ctx.val);
|
||||||
result = regmap_read(opregion->regmap, opregion->ctx.addr,
|
} else {
|
||||||
&opregion->ctx.val);
|
result = regmap_read(opregion->regmap, opregion->ctx.addr,
|
||||||
if (result == 0)
|
&opregion->ctx.val);
|
||||||
*value64 = opregion->ctx.val;
|
}
|
||||||
|
opregion->ctx.addr = 0;
|
||||||
}
|
}
|
||||||
memset(&opregion->ctx, 0x00, sizeof(opregion->ctx));
|
}
|
||||||
|
|
||||||
|
if (function == ACPI_READ && address == 3) {
|
||||||
|
*value64 = opregion->ctx.val;
|
||||||
|
return AE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (result < 0) {
|
if (result < 0) {
|
||||||
|
|||||||
@@ -114,6 +114,12 @@ static const unsigned long ata_eh_identify_timeouts[] = {
|
|||||||
ULONG_MAX,
|
ULONG_MAX,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const unsigned long ata_eh_revalidate_timeouts[] = {
|
||||||
|
15000, /* Some drives are slow to read log pages when waking-up */
|
||||||
|
15000, /* combined time till here is enough even for media access */
|
||||||
|
ULONG_MAX,
|
||||||
|
};
|
||||||
|
|
||||||
static const unsigned long ata_eh_flush_timeouts[] = {
|
static const unsigned long ata_eh_flush_timeouts[] = {
|
||||||
15000, /* be generous with flush */
|
15000, /* be generous with flush */
|
||||||
15000, /* ditto */
|
15000, /* ditto */
|
||||||
@@ -150,6 +156,8 @@ static const struct ata_eh_cmd_timeout_ent
|
|||||||
ata_eh_cmd_timeout_table[ATA_EH_CMD_TIMEOUT_TABLE_SIZE] = {
|
ata_eh_cmd_timeout_table[ATA_EH_CMD_TIMEOUT_TABLE_SIZE] = {
|
||||||
{ .commands = CMDS(ATA_CMD_ID_ATA, ATA_CMD_ID_ATAPI),
|
{ .commands = CMDS(ATA_CMD_ID_ATA, ATA_CMD_ID_ATAPI),
|
||||||
.timeouts = ata_eh_identify_timeouts, },
|
.timeouts = ata_eh_identify_timeouts, },
|
||||||
|
{ .commands = CMDS(ATA_CMD_READ_LOG_EXT, ATA_CMD_READ_LOG_DMA_EXT),
|
||||||
|
.timeouts = ata_eh_revalidate_timeouts, },
|
||||||
{ .commands = CMDS(ATA_CMD_READ_NATIVE_MAX, ATA_CMD_READ_NATIVE_MAX_EXT),
|
{ .commands = CMDS(ATA_CMD_READ_NATIVE_MAX, ATA_CMD_READ_NATIVE_MAX_EXT),
|
||||||
.timeouts = ata_eh_other_timeouts, },
|
.timeouts = ata_eh_other_timeouts, },
|
||||||
{ .commands = CMDS(ATA_CMD_SET_MAX, ATA_CMD_SET_MAX_EXT),
|
{ .commands = CMDS(ATA_CMD_SET_MAX, ATA_CMD_SET_MAX_EXT),
|
||||||
|
|||||||
@@ -283,6 +283,16 @@ static int img_ascii_lcd_display(struct img_ascii_lcd_ctx *ctx,
|
|||||||
if (msg[count - 1] == '\n')
|
if (msg[count - 1] == '\n')
|
||||||
count--;
|
count--;
|
||||||
|
|
||||||
|
if (!count) {
|
||||||
|
/* clear the LCD */
|
||||||
|
devm_kfree(&ctx->pdev->dev, ctx->message);
|
||||||
|
ctx->message = NULL;
|
||||||
|
ctx->message_len = 0;
|
||||||
|
memset(ctx->curr, ' ', ctx->cfg->num_chars);
|
||||||
|
ctx->cfg->update(ctx);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
new_msg = devm_kmalloc(&ctx->pdev->dev, count + 1, GFP_KERNEL);
|
new_msg = devm_kmalloc(&ctx->pdev->dev, count + 1, GFP_KERNEL);
|
||||||
if (!new_msg)
|
if (!new_msg)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|||||||
@@ -413,6 +413,7 @@ static int cpuidle_add_state_sysfs(struct cpuidle_device *device)
|
|||||||
&kdev->kobj, "state%d", i);
|
&kdev->kobj, "state%d", i);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
kobject_put(&kobj->kobj);
|
kobject_put(&kobj->kobj);
|
||||||
|
kfree(kobj);
|
||||||
goto error_state;
|
goto error_state;
|
||||||
}
|
}
|
||||||
kobject_uevent(&kobj->kobj, KOBJ_ADD);
|
kobject_uevent(&kobj->kobj, KOBJ_ADD);
|
||||||
@@ -543,6 +544,7 @@ static int cpuidle_add_driver_sysfs(struct cpuidle_device *dev)
|
|||||||
&kdev->kobj, "driver");
|
&kdev->kobj, "driver");
|
||||||
if (ret) {
|
if (ret) {
|
||||||
kobject_put(&kdrv->kobj);
|
kobject_put(&kdrv->kobj);
|
||||||
|
kfree(kdrv);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -629,7 +631,6 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)
|
|||||||
if (!kdev)
|
if (!kdev)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
kdev->dev = dev;
|
kdev->dev = dev;
|
||||||
dev->kobj_dev = kdev;
|
|
||||||
|
|
||||||
init_completion(&kdev->kobj_unregister);
|
init_completion(&kdev->kobj_unregister);
|
||||||
|
|
||||||
@@ -637,9 +638,11 @@ int cpuidle_add_sysfs(struct cpuidle_device *dev)
|
|||||||
"cpuidle");
|
"cpuidle");
|
||||||
if (error) {
|
if (error) {
|
||||||
kobject_put(&kdev->kobj);
|
kobject_put(&kdev->kobj);
|
||||||
|
kfree(kdev);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dev->kobj_dev = kdev;
|
||||||
kobject_uevent(&kdev->kobj, KOBJ_ADD);
|
kobject_uevent(&kdev->kobj, KOBJ_ADD);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -195,6 +195,13 @@ static int __adf_iov_putmsg(struct adf_accel_dev *accel_dev, u32 msg, u8 vf_nr)
|
|||||||
val = ADF_CSR_RD(pmisc_bar_addr, pf2vf_offset);
|
val = ADF_CSR_RD(pmisc_bar_addr, pf2vf_offset);
|
||||||
} while ((val & int_bit) && (count++ < ADF_IOV_MSG_ACK_MAX_RETRY));
|
} while ((val & int_bit) && (count++ < ADF_IOV_MSG_ACK_MAX_RETRY));
|
||||||
|
|
||||||
|
if (val != msg) {
|
||||||
|
dev_dbg(&GET_DEV(accel_dev),
|
||||||
|
"Collision - PFVF CSR overwritten by remote function\n");
|
||||||
|
ret = -EIO;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (val & int_bit) {
|
if (val & int_bit) {
|
||||||
dev_dbg(&GET_DEV(accel_dev), "ACK not received from remote\n");
|
dev_dbg(&GET_DEV(accel_dev), "ACK not received from remote\n");
|
||||||
val &= ~int_bit;
|
val &= ~int_bit;
|
||||||
@@ -243,6 +250,11 @@ void adf_vf2pf_req_hndl(struct adf_accel_vf_info *vf_info)
|
|||||||
|
|
||||||
/* Read message from the VF */
|
/* Read message from the VF */
|
||||||
msg = ADF_CSR_RD(pmisc_addr, hw_data->get_pf2vf_offset(vf_nr));
|
msg = ADF_CSR_RD(pmisc_addr, hw_data->get_pf2vf_offset(vf_nr));
|
||||||
|
if (!(msg & ADF_VF2PF_INT)) {
|
||||||
|
dev_info(&GET_DEV(accel_dev),
|
||||||
|
"Spurious VF2PF interrupt, msg %X. Ignored\n", msg);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
/* To ACK, clear the VF2PFINT bit */
|
/* To ACK, clear the VF2PFINT bit */
|
||||||
msg &= ~ADF_VF2PF_INT;
|
msg &= ~ADF_VF2PF_INT;
|
||||||
@@ -326,6 +338,7 @@ void adf_vf2pf_req_hndl(struct adf_accel_vf_info *vf_info)
|
|||||||
if (resp && adf_iov_putmsg(accel_dev, resp, vf_nr))
|
if (resp && adf_iov_putmsg(accel_dev, resp, vf_nr))
|
||||||
dev_err(&GET_DEV(accel_dev), "Failed to send response to VF\n");
|
dev_err(&GET_DEV(accel_dev), "Failed to send response to VF\n");
|
||||||
|
|
||||||
|
out:
|
||||||
/* re-enable interrupt on PF from this VF */
|
/* re-enable interrupt on PF from this VF */
|
||||||
adf_enable_vf2pf_interrupts(accel_dev, (1 << vf_nr));
|
adf_enable_vf2pf_interrupts(accel_dev, (1 << vf_nr));
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -123,6 +123,11 @@ static void adf_pf2vf_bh_handler(void *data)
|
|||||||
|
|
||||||
/* Read the message from PF */
|
/* Read the message from PF */
|
||||||
msg = ADF_CSR_RD(pmisc_bar_addr, hw_data->get_pf2vf_offset(0));
|
msg = ADF_CSR_RD(pmisc_bar_addr, hw_data->get_pf2vf_offset(0));
|
||||||
|
if (!(msg & ADF_PF2VF_INT)) {
|
||||||
|
dev_info(&GET_DEV(accel_dev),
|
||||||
|
"Spurious PF2VF interrupt, msg %X. Ignored\n", msg);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(msg & ADF_PF2VF_MSGORIGIN_SYSTEM))
|
if (!(msg & ADF_PF2VF_MSGORIGIN_SYSTEM))
|
||||||
/* Ignore legacy non-system (non-kernel) PF2VF messages */
|
/* Ignore legacy non-system (non-kernel) PF2VF messages */
|
||||||
@@ -171,6 +176,7 @@ static void adf_pf2vf_bh_handler(void *data)
|
|||||||
msg &= ~BIT(0);
|
msg &= ~BIT(0);
|
||||||
ADF_CSR_WR(pmisc_bar_addr, hw_data->get_pf2vf_offset(0), msg);
|
ADF_CSR_WR(pmisc_bar_addr, hw_data->get_pf2vf_offset(0), msg);
|
||||||
|
|
||||||
|
out:
|
||||||
/* Re-enable PF2VF interrupts */
|
/* Re-enable PF2VF interrupts */
|
||||||
adf_enable_pf2vf_interrupts(accel_dev);
|
adf_enable_pf2vf_interrupts(accel_dev);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -156,7 +156,7 @@
|
|||||||
#define AT_XDMAC_CC_WRIP (0x1 << 23) /* Write in Progress (read only) */
|
#define AT_XDMAC_CC_WRIP (0x1 << 23) /* Write in Progress (read only) */
|
||||||
#define AT_XDMAC_CC_WRIP_DONE (0x0 << 23)
|
#define AT_XDMAC_CC_WRIP_DONE (0x0 << 23)
|
||||||
#define AT_XDMAC_CC_WRIP_IN_PROGRESS (0x1 << 23)
|
#define AT_XDMAC_CC_WRIP_IN_PROGRESS (0x1 << 23)
|
||||||
#define AT_XDMAC_CC_PERID(i) (0x7f & (i) << 24) /* Channel Peripheral Identifier */
|
#define AT_XDMAC_CC_PERID(i) ((0x7f & (i)) << 24) /* Channel Peripheral Identifier */
|
||||||
#define AT_XDMAC_CDS_MSP 0x2C /* Channel Data Stride Memory Set Pattern */
|
#define AT_XDMAC_CDS_MSP 0x2C /* Channel Data Stride Memory Set Pattern */
|
||||||
#define AT_XDMAC_CSUS 0x30 /* Channel Source Microblock Stride */
|
#define AT_XDMAC_CSUS 0x30 /* Channel Source Microblock Stride */
|
||||||
#define AT_XDMAC_CDUS 0x34 /* Channel Destination Microblock Stride */
|
#define AT_XDMAC_CDUS 0x34 /* Channel Destination Microblock Stride */
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ dmaengine_desc_get_callback_invoke(struct dma_async_tx_descriptor *tx,
|
|||||||
static inline bool
|
static inline bool
|
||||||
dmaengine_desc_callback_valid(struct dmaengine_desc_callback *cb)
|
dmaengine_desc_callback_valid(struct dmaengine_desc_callback *cb)
|
||||||
{
|
{
|
||||||
return (cb->callback) ? true : false;
|
return cb->callback || cb->callback_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1009,7 +1009,7 @@ static u64 haswell_get_tohm(struct sbridge_pvt *pvt)
|
|||||||
pci_read_config_dword(pvt->info.pci_vtd, HASWELL_TOHM_1, ®);
|
pci_read_config_dword(pvt->info.pci_vtd, HASWELL_TOHM_1, ®);
|
||||||
rc = ((reg << 6) | rc) << 26;
|
rc = ((reg << 6) | rc) << 26;
|
||||||
|
|
||||||
return rc | 0x1ffffff;
|
return rc | 0x3ffffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u64 knl_get_tolm(struct sbridge_pvt *pvt)
|
static u64 knl_get_tolm(struct sbridge_pvt *pvt)
|
||||||
|
|||||||
@@ -844,6 +844,7 @@ static int amdgpu_connector_vga_get_modes(struct drm_connector *connector)
|
|||||||
|
|
||||||
amdgpu_connector_get_edid(connector);
|
amdgpu_connector_get_edid(connector);
|
||||||
ret = amdgpu_connector_ddc_get_modes(connector);
|
ret = amdgpu_connector_ddc_get_modes(connector);
|
||||||
|
amdgpu_get_native_mode(connector);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -246,7 +246,6 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
|
|||||||
.crtc_w = drm_rect_width(dst),
|
.crtc_w = drm_rect_width(dst),
|
||||||
.crtc_h = drm_rect_height(dst),
|
.crtc_h = drm_rect_height(dst),
|
||||||
.rotation = rotation,
|
.rotation = rotation,
|
||||||
.visible = *visible,
|
|
||||||
};
|
};
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
|||||||
@@ -871,7 +871,7 @@ struct drm_gem_object *msm_gem_new(struct drm_device *dev,
|
|||||||
|
|
||||||
ret = msm_gem_new_impl(dev, size, flags, NULL, &obj);
|
ret = msm_gem_new_impl(dev, size, flags, NULL, &obj);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto fail;
|
return ERR_PTR(ret);
|
||||||
|
|
||||||
if (use_pages(obj)) {
|
if (use_pages(obj)) {
|
||||||
ret = drm_gem_object_init(dev, obj, size);
|
ret = drm_gem_object_init(dev, obj, size);
|
||||||
@@ -910,7 +910,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
|
|||||||
mutex_unlock(&dev->struct_mutex);
|
mutex_unlock(&dev->struct_mutex);
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
goto fail;
|
return ERR_PTR(ret);
|
||||||
|
|
||||||
drm_gem_private_object_init(dev, obj, size);
|
drm_gem_private_object_init(dev, obj, size);
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ static u8 *udl_get_edid(struct udl_device *udl)
|
|||||||
ret = usb_control_msg(udl->udev,
|
ret = usb_control_msg(udl->udev,
|
||||||
usb_rcvctrlpipe(udl->udev, 0), (0x02),
|
usb_rcvctrlpipe(udl->udev, 0), (0x02),
|
||||||
(0x80 | (0x02 << 5)), i << 8, 0xA1, rbuf, 2,
|
(0x80 | (0x02 << 5)), i << 8, 0xA1, rbuf, 2,
|
||||||
HZ);
|
1000);
|
||||||
if (ret < 1) {
|
if (ret < 1) {
|
||||||
DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret);
|
DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret);
|
||||||
goto error;
|
goto error;
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#define _HYPERV_VMBUS_H
|
#define _HYPERV_VMBUS_H
|
||||||
|
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
|
#include <linux/bitops.h>
|
||||||
#include <asm/sync_bitops.h>
|
#include <asm/sync_bitops.h>
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
#include <linux/hyperv.h>
|
#include <linux/hyperv.h>
|
||||||
|
|||||||
@@ -592,8 +592,10 @@ __hwmon_device_register(struct device *dev, const char *name, void *drvdata,
|
|||||||
dev_set_drvdata(hdev, drvdata);
|
dev_set_drvdata(hdev, drvdata);
|
||||||
dev_set_name(hdev, HWMON_ID_FORMAT, id);
|
dev_set_name(hdev, HWMON_ID_FORMAT, id);
|
||||||
err = device_register(hdev);
|
err = device_register(hdev);
|
||||||
if (err)
|
if (err) {
|
||||||
goto free_hwmon;
|
put_device(hdev);
|
||||||
|
goto ida_remove;
|
||||||
|
}
|
||||||
|
|
||||||
if (chip && chip->ops->is_visible && chip->ops->read &&
|
if (chip && chip->ops->is_visible && chip->ops->read &&
|
||||||
chip->info[0]->type == hwmon_chip &&
|
chip->info[0]->type == hwmon_chip &&
|
||||||
|
|||||||
@@ -69,22 +69,27 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
|
|||||||
[lm25056] = {
|
[lm25056] = {
|
||||||
[PSC_VOLTAGE_IN] = {
|
[PSC_VOLTAGE_IN] = {
|
||||||
.m = 16296,
|
.m = 16296,
|
||||||
|
.b = 1343,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_CURRENT_IN] = {
|
[PSC_CURRENT_IN] = {
|
||||||
.m = 13797,
|
.m = 13797,
|
||||||
|
.b = -1833,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_CURRENT_IN_L] = {
|
[PSC_CURRENT_IN_L] = {
|
||||||
.m = 6726,
|
.m = 6726,
|
||||||
|
.b = -537,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_POWER] = {
|
[PSC_POWER] = {
|
||||||
.m = 5501,
|
.m = 5501,
|
||||||
|
.b = -2908,
|
||||||
.R = -3,
|
.R = -3,
|
||||||
},
|
},
|
||||||
[PSC_POWER_L] = {
|
[PSC_POWER_L] = {
|
||||||
.m = 26882,
|
.m = 26882,
|
||||||
|
.b = -5646,
|
||||||
.R = -4,
|
.R = -4,
|
||||||
},
|
},
|
||||||
[PSC_TEMPERATURE] = {
|
[PSC_TEMPERATURE] = {
|
||||||
@@ -96,26 +101,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
|
|||||||
[lm25066] = {
|
[lm25066] = {
|
||||||
[PSC_VOLTAGE_IN] = {
|
[PSC_VOLTAGE_IN] = {
|
||||||
.m = 22070,
|
.m = 22070,
|
||||||
|
.b = -1800,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_VOLTAGE_OUT] = {
|
[PSC_VOLTAGE_OUT] = {
|
||||||
.m = 22070,
|
.m = 22070,
|
||||||
|
.b = -1800,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_CURRENT_IN] = {
|
[PSC_CURRENT_IN] = {
|
||||||
.m = 13661,
|
.m = 13661,
|
||||||
|
.b = -5200,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_CURRENT_IN_L] = {
|
[PSC_CURRENT_IN_L] = {
|
||||||
.m = 6852,
|
.m = 6852,
|
||||||
|
.b = -3100,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_POWER] = {
|
[PSC_POWER] = {
|
||||||
.m = 736,
|
.m = 736,
|
||||||
|
.b = -3300,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_POWER_L] = {
|
[PSC_POWER_L] = {
|
||||||
.m = 369,
|
.m = 369,
|
||||||
|
.b = -1900,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_TEMPERATURE] = {
|
[PSC_TEMPERATURE] = {
|
||||||
@@ -155,26 +166,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
|
|||||||
[lm5064] = {
|
[lm5064] = {
|
||||||
[PSC_VOLTAGE_IN] = {
|
[PSC_VOLTAGE_IN] = {
|
||||||
.m = 4611,
|
.m = 4611,
|
||||||
|
.b = -642,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_VOLTAGE_OUT] = {
|
[PSC_VOLTAGE_OUT] = {
|
||||||
.m = 4621,
|
.m = 4621,
|
||||||
|
.b = 423,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_CURRENT_IN] = {
|
[PSC_CURRENT_IN] = {
|
||||||
.m = 10742,
|
.m = 10742,
|
||||||
|
.b = 1552,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_CURRENT_IN_L] = {
|
[PSC_CURRENT_IN_L] = {
|
||||||
.m = 5456,
|
.m = 5456,
|
||||||
|
.b = 2118,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_POWER] = {
|
[PSC_POWER] = {
|
||||||
.m = 1204,
|
.m = 1204,
|
||||||
|
.b = 8524,
|
||||||
.R = -3,
|
.R = -3,
|
||||||
},
|
},
|
||||||
[PSC_POWER_L] = {
|
[PSC_POWER_L] = {
|
||||||
.m = 612,
|
.m = 612,
|
||||||
|
.b = 11202,
|
||||||
.R = -3,
|
.R = -3,
|
||||||
},
|
},
|
||||||
[PSC_TEMPERATURE] = {
|
[PSC_TEMPERATURE] = {
|
||||||
@@ -184,26 +201,32 @@ static struct __coeff lm25066_coeff[5][PSC_NUM_CLASSES + 2] = {
|
|||||||
[lm5066] = {
|
[lm5066] = {
|
||||||
[PSC_VOLTAGE_IN] = {
|
[PSC_VOLTAGE_IN] = {
|
||||||
.m = 4587,
|
.m = 4587,
|
||||||
|
.b = -1200,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_VOLTAGE_OUT] = {
|
[PSC_VOLTAGE_OUT] = {
|
||||||
.m = 4587,
|
.m = 4587,
|
||||||
|
.b = -2400,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_CURRENT_IN] = {
|
[PSC_CURRENT_IN] = {
|
||||||
.m = 10753,
|
.m = 10753,
|
||||||
|
.b = -1200,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_CURRENT_IN_L] = {
|
[PSC_CURRENT_IN_L] = {
|
||||||
.m = 5405,
|
.m = 5405,
|
||||||
|
.b = -600,
|
||||||
.R = -2,
|
.R = -2,
|
||||||
},
|
},
|
||||||
[PSC_POWER] = {
|
[PSC_POWER] = {
|
||||||
.m = 1204,
|
.m = 1204,
|
||||||
|
.b = -6000,
|
||||||
.R = -3,
|
.R = -3,
|
||||||
},
|
},
|
||||||
[PSC_POWER_L] = {
|
[PSC_POWER_L] = {
|
||||||
.m = 605,
|
.m = 605,
|
||||||
|
.b = -8000,
|
||||||
.R = -3,
|
.R = -3,
|
||||||
},
|
},
|
||||||
[PSC_TEMPERATURE] = {
|
[PSC_TEMPERATURE] = {
|
||||||
|
|||||||
@@ -434,11 +434,15 @@ static int xlr_i2c_probe(struct platform_device *pdev)
|
|||||||
i2c_set_adapdata(&priv->adap, priv);
|
i2c_set_adapdata(&priv->adap, priv);
|
||||||
ret = i2c_add_numbered_adapter(&priv->adap);
|
ret = i2c_add_numbered_adapter(&priv->adap);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
goto err_unprepare_clk;
|
||||||
|
|
||||||
platform_set_drvdata(pdev, priv);
|
platform_set_drvdata(pdev, priv);
|
||||||
dev_info(&priv->adap.dev, "Added I2C Bus.\n");
|
dev_info(&priv->adap.dev, "Added I2C Bus.\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_unprepare_clk:
|
||||||
|
clk_unprepare(clk);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int xlr_i2c_remove(struct platform_device *pdev)
|
static int xlr_i2c_remove(struct platform_device *pdev)
|
||||||
|
|||||||
@@ -510,8 +510,15 @@ static int ad5622_write(struct ad5446_state *st, unsigned val)
|
|||||||
{
|
{
|
||||||
struct i2c_client *client = to_i2c_client(st->dev);
|
struct i2c_client *client = to_i2c_client(st->dev);
|
||||||
__be16 data = cpu_to_be16(val);
|
__be16 data = cpu_to_be16(val);
|
||||||
|
int ret;
|
||||||
|
|
||||||
return i2c_master_send(client, (char *)&data, sizeof(data));
|
ret = i2c_master_send(client, (char *)&data, sizeof(data));
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
if (ret != sizeof(data))
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -773,8 +773,10 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
|
|||||||
if (dev->steering_support ==
|
if (dev->steering_support ==
|
||||||
MLX4_STEERING_MODE_DEVICE_MANAGED)
|
MLX4_STEERING_MODE_DEVICE_MANAGED)
|
||||||
qp->flags |= MLX4_IB_QP_NETIF;
|
qp->flags |= MLX4_IB_QP_NETIF;
|
||||||
else
|
else {
|
||||||
|
err = -EINVAL;
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(&backup_cap, &init_attr->cap, sizeof(backup_cap));
|
memcpy(&backup_cap, &init_attr->cap, sizeof(backup_cap));
|
||||||
|
|||||||
@@ -2015,15 +2015,18 @@ int qedr_query_qp(struct ib_qp *ibqp,
|
|||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
memset(¶ms, 0, sizeof(params));
|
memset(¶ms, 0, sizeof(params));
|
||||||
|
|
||||||
rc = dev->ops->rdma_query_qp(dev->rdma_ctx, qp->qed_qp, ¶ms);
|
|
||||||
if (rc)
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
memset(qp_attr, 0, sizeof(*qp_attr));
|
memset(qp_attr, 0, sizeof(*qp_attr));
|
||||||
memset(qp_init_attr, 0, sizeof(*qp_init_attr));
|
memset(qp_init_attr, 0, sizeof(*qp_init_attr));
|
||||||
|
|
||||||
qp_attr->qp_state = qedr_get_ibqp_state(params.state);
|
if (qp->qp_type != IB_QPT_GSI) {
|
||||||
|
rc = dev->ops->rdma_query_qp(dev->rdma_ctx, qp->qed_qp, ¶ms);
|
||||||
|
if (rc)
|
||||||
|
goto err;
|
||||||
|
qp_attr->qp_state = qedr_get_ibqp_state(params.state);
|
||||||
|
} else {
|
||||||
|
qp_attr->qp_state = qedr_get_ibqp_state(QED_ROCE_QP_STATE_RTS);
|
||||||
|
}
|
||||||
|
|
||||||
qp_attr->cur_qp_state = qedr_get_ibqp_state(params.state);
|
qp_attr->cur_qp_state = qedr_get_ibqp_state(params.state);
|
||||||
qp_attr->path_mtu = iboe_get_mtu(params.mtu);
|
qp_attr->path_mtu = iboe_get_mtu(params.mtu);
|
||||||
qp_attr->path_mig_state = IB_MIG_MIGRATED;
|
qp_attr->path_mig_state = IB_MIG_MIGRATED;
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ enum rxe_port_param {
|
|||||||
RXE_PORT_MAX_MTU = IB_MTU_4096,
|
RXE_PORT_MAX_MTU = IB_MTU_4096,
|
||||||
RXE_PORT_ACTIVE_MTU = IB_MTU_256,
|
RXE_PORT_ACTIVE_MTU = IB_MTU_256,
|
||||||
RXE_PORT_GID_TBL_LEN = 1024,
|
RXE_PORT_GID_TBL_LEN = 1024,
|
||||||
RXE_PORT_PORT_CAP_FLAGS = RDMA_CORE_CAP_PROT_ROCE_UDP_ENCAP,
|
RXE_PORT_PORT_CAP_FLAGS = IB_PORT_CM_SUP,
|
||||||
RXE_PORT_MAX_MSG_SZ = 0x800000,
|
RXE_PORT_MAX_MSG_SZ = 0x800000,
|
||||||
RXE_PORT_BAD_PKEY_CNTR = 0,
|
RXE_PORT_BAD_PKEY_CNTR = 0,
|
||||||
RXE_PORT_QKEY_VIOL_CNTR = 0,
|
RXE_PORT_QKEY_VIOL_CNTR = 0,
|
||||||
|
|||||||
@@ -431,6 +431,19 @@ static void elantech_report_trackpoint(struct psmouse *psmouse,
|
|||||||
case 0x16008020U:
|
case 0x16008020U:
|
||||||
case 0x26800010U:
|
case 0x26800010U:
|
||||||
case 0x36808000U:
|
case 0x36808000U:
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This firmware misreport coordinates for trackpoint
|
||||||
|
* occasionally. Discard packets outside of [-127, 127] range
|
||||||
|
* to prevent cursor jumps.
|
||||||
|
*/
|
||||||
|
if (packet[4] == 0x80 || packet[5] == 0x80 ||
|
||||||
|
packet[1] >> 7 == packet[4] >> 7 ||
|
||||||
|
packet[2] >> 7 == packet[5] >> 7) {
|
||||||
|
elantech_debug("discarding packet [%6ph]\n", packet);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
x = packet[4] - (int)((packet[1]^0x80) << 1);
|
x = packet[4] - (int)((packet[1]^0x80) << 1);
|
||||||
y = (int)((packet[2]^0x80) << 1) - packet[5];
|
y = (int)((packet[2]^0x80) << 1) - packet[5];
|
||||||
|
|
||||||
|
|||||||
@@ -276,6 +276,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nomux_table[] = {
|
|||||||
DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "LifeBook S6230"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/* Fujitsu Lifebook T725 laptop */
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
/* Fujitsu Lifebook U745 */
|
/* Fujitsu Lifebook U745 */
|
||||||
.matches = {
|
.matches = {
|
||||||
@@ -916,6 +923,13 @@ static const struct dmi_system_id __initconst i8042_dmi_notimeout_table[] = {
|
|||||||
DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK AH544"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/* Fujitsu Lifebook T725 laptop */
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK T725"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
/* Fujitsu U574 laptop */
|
/* Fujitsu U574 laptop */
|
||||||
/* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
|
/* https://bugzilla.kernel.org/show_bug.cgi?id=69731 */
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ static void bcm6345_l1_irq_handle(struct irq_desc *desc)
|
|||||||
for_each_set_bit(hwirq, &pending, IRQS_PER_WORD) {
|
for_each_set_bit(hwirq, &pending, IRQS_PER_WORD) {
|
||||||
irq = irq_linear_revmap(intc->domain, base + hwirq);
|
irq = irq_linear_revmap(intc->domain, base + hwirq);
|
||||||
if (irq)
|
if (irq)
|
||||||
do_IRQ(irq);
|
generic_handle_irq(irq);
|
||||||
else
|
else
|
||||||
spurious_interrupt();
|
spurious_interrupt();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -368,11 +368,25 @@ static inline int s3c24xx_handle_intc(struct s3c_irq_intc *intc,
|
|||||||
asmlinkage void __exception_irq_entry s3c24xx_handle_irq(struct pt_regs *regs)
|
asmlinkage void __exception_irq_entry s3c24xx_handle_irq(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
if (likely(s3c_intc[0]))
|
/*
|
||||||
if (s3c24xx_handle_intc(s3c_intc[0], regs, 0))
|
* For platform based machines, neither ERR nor NULL can happen here.
|
||||||
continue;
|
* The s3c24xx_handle_irq() will be set as IRQ handler iff this succeeds:
|
||||||
|
*
|
||||||
|
* s3c_intc[0] = s3c24xx_init_intc()
|
||||||
|
*
|
||||||
|
* If this fails, the next calls to s3c24xx_init_intc() won't be executed.
|
||||||
|
*
|
||||||
|
* For DT machine, s3c_init_intc_of() could set the IRQ handler without
|
||||||
|
* setting s3c_intc[0] only if it was called with num_ctrl=0. There is no
|
||||||
|
* such code path, so again the s3c_intc[0] will have a valid pointer if
|
||||||
|
* set_handle_irq() is called.
|
||||||
|
*
|
||||||
|
* Therefore in s3c24xx_handle_irq(), the s3c_intc[0] is always something.
|
||||||
|
*/
|
||||||
|
if (s3c24xx_handle_intc(s3c_intc[0], regs, 0))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (s3c_intc[2])
|
if (!IS_ERR_OR_NULL(s3c_intc[2]))
|
||||||
if (s3c24xx_handle_intc(s3c_intc[2], regs, 64))
|
if (s3c24xx_handle_intc(s3c_intc[2], regs, 64))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,9 @@
|
|||||||
#define MT9P031_PIXEL_CLOCK_INVERT (1 << 15)
|
#define MT9P031_PIXEL_CLOCK_INVERT (1 << 15)
|
||||||
#define MT9P031_PIXEL_CLOCK_SHIFT(n) ((n) << 8)
|
#define MT9P031_PIXEL_CLOCK_SHIFT(n) ((n) << 8)
|
||||||
#define MT9P031_PIXEL_CLOCK_DIVIDE(n) ((n) << 0)
|
#define MT9P031_PIXEL_CLOCK_DIVIDE(n) ((n) << 0)
|
||||||
#define MT9P031_FRAME_RESTART 0x0b
|
#define MT9P031_RESTART 0x0b
|
||||||
|
#define MT9P031_FRAME_PAUSE_RESTART (1 << 1)
|
||||||
|
#define MT9P031_FRAME_RESTART (1 << 0)
|
||||||
#define MT9P031_SHUTTER_DELAY 0x0c
|
#define MT9P031_SHUTTER_DELAY 0x0c
|
||||||
#define MT9P031_RST 0x0d
|
#define MT9P031_RST 0x0d
|
||||||
#define MT9P031_RST_ENABLE 1
|
#define MT9P031_RST_ENABLE 1
|
||||||
@@ -448,9 +450,23 @@ static int mt9p031_set_params(struct mt9p031 *mt9p031)
|
|||||||
static int mt9p031_s_stream(struct v4l2_subdev *subdev, int enable)
|
static int mt9p031_s_stream(struct v4l2_subdev *subdev, int enable)
|
||||||
{
|
{
|
||||||
struct mt9p031 *mt9p031 = to_mt9p031(subdev);
|
struct mt9p031 *mt9p031 = to_mt9p031(subdev);
|
||||||
|
struct i2c_client *client = v4l2_get_subdevdata(subdev);
|
||||||
|
int val;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!enable) {
|
if (!enable) {
|
||||||
|
/* enable pause restart */
|
||||||
|
val = MT9P031_FRAME_PAUSE_RESTART;
|
||||||
|
ret = mt9p031_write(client, MT9P031_RESTART, val);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
/* enable restart + keep pause restart set */
|
||||||
|
val |= MT9P031_FRAME_RESTART;
|
||||||
|
ret = mt9p031_write(client, MT9P031_RESTART, val);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
/* Stop sensor readout */
|
/* Stop sensor readout */
|
||||||
ret = mt9p031_set_output_control(mt9p031,
|
ret = mt9p031_set_output_control(mt9p031,
|
||||||
MT9P031_OUTPUT_CONTROL_CEN, 0);
|
MT9P031_OUTPUT_CONTROL_CEN, 0);
|
||||||
@@ -470,6 +486,16 @@ static int mt9p031_s_stream(struct v4l2_subdev *subdev, int enable)
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* - clear pause restart
|
||||||
|
* - don't clear restart as clearing restart manually can cause
|
||||||
|
* undefined behavior
|
||||||
|
*/
|
||||||
|
val = MT9P031_FRAME_RESTART;
|
||||||
|
ret = mt9p031_write(client, MT9P031_RESTART, val);
|
||||||
|
if (ret < 0)
|
||||||
|
return ret;
|
||||||
|
|
||||||
return mt9p031_pll_enable(mt9p031);
|
return mt9p031_pll_enable(mt9p031);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -266,19 +266,24 @@ static irqreturn_t netup_unidvb_isr(int irq, void *dev_id)
|
|||||||
if ((reg40 & AVL_IRQ_ASSERTED) != 0) {
|
if ((reg40 & AVL_IRQ_ASSERTED) != 0) {
|
||||||
/* IRQ is being signaled */
|
/* IRQ is being signaled */
|
||||||
reg_isr = readw(ndev->bmmio0 + REG_ISR);
|
reg_isr = readw(ndev->bmmio0 + REG_ISR);
|
||||||
if (reg_isr & NETUP_UNIDVB_IRQ_I2C0) {
|
if (reg_isr & NETUP_UNIDVB_IRQ_SPI)
|
||||||
iret = netup_i2c_interrupt(&ndev->i2c[0]);
|
|
||||||
} else if (reg_isr & NETUP_UNIDVB_IRQ_I2C1) {
|
|
||||||
iret = netup_i2c_interrupt(&ndev->i2c[1]);
|
|
||||||
} else if (reg_isr & NETUP_UNIDVB_IRQ_SPI) {
|
|
||||||
iret = netup_spi_interrupt(ndev->spi);
|
iret = netup_spi_interrupt(ndev->spi);
|
||||||
} else if (reg_isr & NETUP_UNIDVB_IRQ_DMA1) {
|
else if (!ndev->old_fw) {
|
||||||
iret = netup_dma_interrupt(&ndev->dma[0]);
|
if (reg_isr & NETUP_UNIDVB_IRQ_I2C0) {
|
||||||
} else if (reg_isr & NETUP_UNIDVB_IRQ_DMA2) {
|
iret = netup_i2c_interrupt(&ndev->i2c[0]);
|
||||||
iret = netup_dma_interrupt(&ndev->dma[1]);
|
} else if (reg_isr & NETUP_UNIDVB_IRQ_I2C1) {
|
||||||
} else if (reg_isr & NETUP_UNIDVB_IRQ_CI) {
|
iret = netup_i2c_interrupt(&ndev->i2c[1]);
|
||||||
iret = netup_ci_interrupt(ndev);
|
} else if (reg_isr & NETUP_UNIDVB_IRQ_DMA1) {
|
||||||
|
iret = netup_dma_interrupt(&ndev->dma[0]);
|
||||||
|
} else if (reg_isr & NETUP_UNIDVB_IRQ_DMA2) {
|
||||||
|
iret = netup_dma_interrupt(&ndev->dma[1]);
|
||||||
|
} else if (reg_isr & NETUP_UNIDVB_IRQ_CI) {
|
||||||
|
iret = netup_ci_interrupt(ndev);
|
||||||
|
} else {
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
err:
|
||||||
dev_err(&pci_dev->dev,
|
dev_err(&pci_dev->dev,
|
||||||
"%s(): unknown interrupt 0x%x\n",
|
"%s(): unknown interrupt 0x%x\n",
|
||||||
__func__, reg_isr);
|
__func__, reg_isr);
|
||||||
|
|||||||
@@ -801,7 +801,8 @@ static int mtk_vpu_probe(struct platform_device *pdev)
|
|||||||
vpu->wdt.wq = create_singlethread_workqueue("vpu_wdt");
|
vpu->wdt.wq = create_singlethread_workqueue("vpu_wdt");
|
||||||
if (!vpu->wdt.wq) {
|
if (!vpu->wdt.wq) {
|
||||||
dev_err(dev, "initialize wdt workqueue failed\n");
|
dev_err(dev, "initialize wdt workqueue failed\n");
|
||||||
return -ENOMEM;
|
ret = -ENOMEM;
|
||||||
|
goto clk_unprepare;
|
||||||
}
|
}
|
||||||
INIT_WORK(&vpu->wdt.ws, vpu_wdt_reset_func);
|
INIT_WORK(&vpu->wdt.ws, vpu_wdt_reset_func);
|
||||||
mutex_init(&vpu->vpu_mutex);
|
mutex_init(&vpu->vpu_mutex);
|
||||||
@@ -900,6 +901,8 @@ disable_vpu_clk:
|
|||||||
vpu_clock_disable(vpu);
|
vpu_clock_disable(vpu);
|
||||||
workqueue_destroy:
|
workqueue_destroy:
|
||||||
destroy_workqueue(vpu->wdt.wq);
|
destroy_workqueue(vpu->wdt.wq);
|
||||||
|
clk_unprepare:
|
||||||
|
clk_unprepare(vpu->clk);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1160,7 +1160,7 @@ static int s5p_mfc_probe(struct platform_device *pdev)
|
|||||||
spin_lock_init(&dev->condlock);
|
spin_lock_init(&dev->condlock);
|
||||||
dev->plat_dev = pdev;
|
dev->plat_dev = pdev;
|
||||||
if (!dev->plat_dev) {
|
if (!dev->plat_dev) {
|
||||||
dev_err(&pdev->dev, "No platform data specified\n");
|
mfc_err("No platform data specified\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
/* driver definitions */
|
/* driver definitions */
|
||||||
#define DRIVER_AUTHOR "Joonyoung Shim <jy0922.shim@samsung.com>";
|
#define DRIVER_AUTHOR "Joonyoung Shim <jy0922.shim@samsung.com>";
|
||||||
#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver"
|
#define DRIVER_CARD "Silicon Labs Si470x FM Radio"
|
||||||
#define DRIVER_DESC "I2C radio driver for Si470x FM Radio Receivers"
|
#define DRIVER_DESC "I2C radio driver for Si470x FM Radio Receivers"
|
||||||
#define DRIVER_VERSION "1.0.2"
|
#define DRIVER_VERSION "1.0.2"
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
/* driver definitions */
|
/* driver definitions */
|
||||||
#define DRIVER_AUTHOR "Tobias Lorenz <tobias.lorenz@gmx.net>"
|
#define DRIVER_AUTHOR "Tobias Lorenz <tobias.lorenz@gmx.net>"
|
||||||
#define DRIVER_CARD "Silicon Labs Si470x FM Radio Receiver"
|
#define DRIVER_CARD "Silicon Labs Si470x FM Radio"
|
||||||
#define DRIVER_DESC "USB radio driver for Si470x FM Radio Receivers"
|
#define DRIVER_DESC "USB radio driver for Si470x FM Radio Receivers"
|
||||||
#define DRIVER_VERSION "1.0.10"
|
#define DRIVER_VERSION "1.0.10"
|
||||||
|
|
||||||
|
|||||||
@@ -299,7 +299,7 @@ static irqreturn_t ite_cir_isr(int irq, void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* check for the receive interrupt */
|
/* check for the receive interrupt */
|
||||||
if (iflags & ITE_IRQ_RX_FIFO) {
|
if (iflags & (ITE_IRQ_RX_FIFO | ITE_IRQ_RX_FIFO_OVERRUN)) {
|
||||||
/* read the FIFO bytes */
|
/* read the FIFO bytes */
|
||||||
rx_bytes =
|
rx_bytes =
|
||||||
dev->params.get_rx_bytes(dev, rx_buf,
|
dev->params.get_rx_bytes(dev, rx_buf,
|
||||||
|
|||||||
@@ -1090,6 +1090,7 @@ static void mceusb_dev_recv(struct urb *urb)
|
|||||||
case -ECONNRESET:
|
case -ECONNRESET:
|
||||||
case -ENOENT:
|
case -ENOENT:
|
||||||
case -EILSEQ:
|
case -EILSEQ:
|
||||||
|
case -EPROTO:
|
||||||
case -ESHUTDOWN:
|
case -ESHUTDOWN:
|
||||||
usb_unlink_urb(urb);
|
usb_unlink_urb(urb);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -394,6 +394,7 @@ static struct rc_map_table rc_map_az6027_table[] = {
|
|||||||
/* remote control stuff (does not work with my box) */
|
/* remote control stuff (does not work with my box) */
|
||||||
static int az6027_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
|
static int az6027_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
|
||||||
{
|
{
|
||||||
|
*state = REMOTE_NO_KEY_PRESSED;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -226,7 +226,7 @@ int dibusb_read_eeprom_byte(struct dvb_usb_device *d, u8 offs, u8 *val)
|
|||||||
u8 *buf;
|
u8 *buf;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
buf = kmalloc(2, GFP_KERNEL);
|
buf = kzalloc(2, GFP_KERNEL);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|||||||
@@ -451,10 +451,13 @@ static int uvc_v4l2_set_streamparm(struct uvc_streaming *stream,
|
|||||||
uvc_simplify_fraction(&timeperframe.numerator,
|
uvc_simplify_fraction(&timeperframe.numerator,
|
||||||
&timeperframe.denominator, 8, 333);
|
&timeperframe.denominator, 8, 333);
|
||||||
|
|
||||||
if (parm->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
|
if (parm->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) {
|
||||||
parm->parm.capture.timeperframe = timeperframe;
|
parm->parm.capture.timeperframe = timeperframe;
|
||||||
else
|
parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
|
||||||
|
} else {
|
||||||
parm->parm.output.timeperframe = timeperframe;
|
parm->parm.output.timeperframe = timeperframe;
|
||||||
|
parm->parm.output.capability = V4L2_CAP_TIMEPERFRAME;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -276,7 +276,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)
|
|||||||
|
|
||||||
ret = fsl_ifc_ctrl_init(fsl_ifc_ctrl_dev);
|
ret = fsl_ifc_ctrl_init(fsl_ifc_ctrl_dev);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto err;
|
goto err_unmap_nandirq;
|
||||||
|
|
||||||
init_waitqueue_head(&fsl_ifc_ctrl_dev->nand_wait);
|
init_waitqueue_head(&fsl_ifc_ctrl_dev->nand_wait);
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)
|
|||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
dev_err(&dev->dev, "failed to install irq (%d)\n",
|
dev_err(&dev->dev, "failed to install irq (%d)\n",
|
||||||
fsl_ifc_ctrl_dev->irq);
|
fsl_ifc_ctrl_dev->irq);
|
||||||
goto err_irq;
|
goto err_unmap_nandirq;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fsl_ifc_ctrl_dev->nand_irq) {
|
if (fsl_ifc_ctrl_dev->nand_irq) {
|
||||||
@@ -294,17 +294,16 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev)
|
|||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
dev_err(&dev->dev, "failed to install irq (%d)\n",
|
dev_err(&dev->dev, "failed to install irq (%d)\n",
|
||||||
fsl_ifc_ctrl_dev->nand_irq);
|
fsl_ifc_ctrl_dev->nand_irq);
|
||||||
goto err_nandirq;
|
goto err_free_irq;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_nandirq:
|
err_free_irq:
|
||||||
free_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev);
|
|
||||||
irq_dispose_mapping(fsl_ifc_ctrl_dev->nand_irq);
|
|
||||||
err_irq:
|
|
||||||
free_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev);
|
free_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev);
|
||||||
|
err_unmap_nandirq:
|
||||||
|
irq_dispose_mapping(fsl_ifc_ctrl_dev->nand_irq);
|
||||||
irq_dispose_mapping(fsl_ifc_ctrl_dev->irq);
|
irq_dispose_mapping(fsl_ifc_ctrl_dev->irq);
|
||||||
err:
|
err:
|
||||||
iounmap(fsl_ifc_ctrl_dev->gregs);
|
iounmap(fsl_ifc_ctrl_dev->gregs);
|
||||||
|
|||||||
@@ -1730,7 +1730,7 @@ static int msb_init_card(struct memstick_dev *card)
|
|||||||
msb->pages_in_block = boot_block->attr.block_size * 2;
|
msb->pages_in_block = boot_block->attr.block_size * 2;
|
||||||
msb->block_size = msb->page_size * msb->pages_in_block;
|
msb->block_size = msb->page_size * msb->pages_in_block;
|
||||||
|
|
||||||
if (msb->page_size > PAGE_SIZE) {
|
if ((size_t)msb->page_size > PAGE_SIZE) {
|
||||||
/* this isn't supported by linux at all, anyway*/
|
/* this isn't supported by linux at all, anyway*/
|
||||||
dbg("device page %d size isn't supported", msb->page_size);
|
dbg("device page %d size isn't supported", msb->page_size);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|||||||
@@ -905,7 +905,7 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt)
|
|||||||
|
|
||||||
iounmap(host->addr);
|
iounmap(host->addr);
|
||||||
err_out_free:
|
err_out_free:
|
||||||
kfree(msh);
|
memstick_free_host(msh);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -841,15 +841,15 @@ static void r592_remove(struct pci_dev *pdev)
|
|||||||
}
|
}
|
||||||
memstick_remove_host(dev->host);
|
memstick_remove_host(dev->host);
|
||||||
|
|
||||||
|
if (dev->dummy_dma_page)
|
||||||
|
dma_free_coherent(&pdev->dev, PAGE_SIZE, dev->dummy_dma_page,
|
||||||
|
dev->dummy_dma_page_physical_address);
|
||||||
|
|
||||||
free_irq(dev->irq, dev);
|
free_irq(dev->irq, dev);
|
||||||
iounmap(dev->mmio);
|
iounmap(dev->mmio);
|
||||||
pci_release_regions(pdev);
|
pci_release_regions(pdev);
|
||||||
pci_disable_device(pdev);
|
pci_disable_device(pdev);
|
||||||
memstick_free_host(dev->host);
|
memstick_free_host(dev->host);
|
||||||
|
|
||||||
if (dev->dummy_dma_page)
|
|
||||||
dma_free_coherent(&pdev->dev, PAGE_SIZE, dev->dummy_dma_page,
|
|
||||||
dev->dummy_dma_page_physical_address);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
|
|||||||
@@ -367,7 +367,7 @@ config MMC_OMAP_HS
|
|||||||
|
|
||||||
config MMC_WBSD
|
config MMC_WBSD
|
||||||
tristate "Winbond W83L51xD SD/MMC Card Interface support"
|
tristate "Winbond W83L51xD SD/MMC Card Interface support"
|
||||||
depends on ISA_DMA_API
|
depends on ISA_DMA_API && !M68K
|
||||||
help
|
help
|
||||||
This selects the Winbond(R) W83L51xD Secure digital and
|
This selects the Winbond(R) W83L51xD Secure digital and
|
||||||
Multimedia card Interface.
|
Multimedia card Interface.
|
||||||
|
|||||||
@@ -1862,7 +1862,8 @@ static void dw_mci_tasklet_func(unsigned long priv)
|
|||||||
* delayed. Allowing the transfer to take place
|
* delayed. Allowing the transfer to take place
|
||||||
* avoids races and keeps things simple.
|
* avoids races and keeps things simple.
|
||||||
*/
|
*/
|
||||||
if (err != -ETIMEDOUT) {
|
if (err != -ETIMEDOUT &&
|
||||||
|
host->dir_status == DW_MCI_RECV_STATUS) {
|
||||||
state = STATE_SENDING_DATA;
|
state = STATE_SENDING_DATA;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -571,6 +571,11 @@ static const struct of_device_id mxs_mmc_dt_ids[] = {
|
|||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, mxs_mmc_dt_ids);
|
MODULE_DEVICE_TABLE(of, mxs_mmc_dt_ids);
|
||||||
|
|
||||||
|
static void mxs_mmc_regulator_disable(void *regulator)
|
||||||
|
{
|
||||||
|
regulator_disable(regulator);
|
||||||
|
}
|
||||||
|
|
||||||
static int mxs_mmc_probe(struct platform_device *pdev)
|
static int mxs_mmc_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
const struct of_device_id *of_id =
|
const struct of_device_id *of_id =
|
||||||
@@ -614,6 +619,11 @@ static int mxs_mmc_probe(struct platform_device *pdev)
|
|||||||
"Failed to enable vmmc regulator: %d\n", ret);
|
"Failed to enable vmmc regulator: %d\n", ret);
|
||||||
goto out_mmc_free;
|
goto out_mmc_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = devm_add_action_or_reset(&pdev->dev, mxs_mmc_regulator_disable,
|
||||||
|
reg_vmmc);
|
||||||
|
if (ret)
|
||||||
|
goto out_mmc_free;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssp->clk = devm_clk_get(&pdev->dev, NULL);
|
ssp->clk = devm_clk_get(&pdev->dev, NULL);
|
||||||
|
|||||||
@@ -467,7 +467,6 @@ static int hisi_spi_nor_remove(struct platform_device *pdev)
|
|||||||
|
|
||||||
hisi_spi_nor_unregister_all(host);
|
hisi_spi_nor_unregister_all(host);
|
||||||
mutex_destroy(&host->lock);
|
mutex_destroy(&host->lock);
|
||||||
clk_disable_unprepare(host->clk);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -112,15 +112,15 @@ static ssize_t ad_partner_oper_port_state_show(struct slave *slave, char *buf)
|
|||||||
}
|
}
|
||||||
static SLAVE_ATTR_RO(ad_partner_oper_port_state);
|
static SLAVE_ATTR_RO(ad_partner_oper_port_state);
|
||||||
|
|
||||||
static const struct slave_attribute *slave_attrs[] = {
|
static const struct attribute *slave_attrs[] = {
|
||||||
&slave_attr_state,
|
&slave_attr_state.attr,
|
||||||
&slave_attr_mii_status,
|
&slave_attr_mii_status.attr,
|
||||||
&slave_attr_link_failure_count,
|
&slave_attr_link_failure_count.attr,
|
||||||
&slave_attr_perm_hwaddr,
|
&slave_attr_perm_hwaddr.attr,
|
||||||
&slave_attr_queue_id,
|
&slave_attr_queue_id.attr,
|
||||||
&slave_attr_ad_aggregator_id,
|
&slave_attr_ad_aggregator_id.attr,
|
||||||
&slave_attr_ad_actor_oper_port_state,
|
&slave_attr_ad_actor_oper_port_state.attr,
|
||||||
&slave_attr_ad_partner_oper_port_state,
|
&slave_attr_ad_partner_oper_port_state.attr,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -141,24 +141,10 @@ const struct sysfs_ops slave_sysfs_ops = {
|
|||||||
|
|
||||||
int bond_sysfs_slave_add(struct slave *slave)
|
int bond_sysfs_slave_add(struct slave *slave)
|
||||||
{
|
{
|
||||||
const struct slave_attribute **a;
|
return sysfs_create_files(&slave->kobj, slave_attrs);
|
||||||
int err;
|
|
||||||
|
|
||||||
for (a = slave_attrs; *a; ++a) {
|
|
||||||
err = sysfs_create_file(&slave->kobj, &((*a)->attr));
|
|
||||||
if (err) {
|
|
||||||
kobject_put(&slave->kobj);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void bond_sysfs_slave_del(struct slave *slave)
|
void bond_sysfs_slave_del(struct slave *slave)
|
||||||
{
|
{
|
||||||
const struct slave_attribute **a;
|
sysfs_remove_files(&slave->kobj, slave_attrs);
|
||||||
|
|
||||||
for (a = slave_attrs; *a; ++a)
|
|
||||||
sysfs_remove_file(&slave->kobj, &((*a)->attr));
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -635,11 +635,13 @@ static int bnx2x_ilt_client_mem_op(struct bnx2x *bp, int cli_num,
|
|||||||
{
|
{
|
||||||
int i, rc;
|
int i, rc;
|
||||||
struct bnx2x_ilt *ilt = BP_ILT(bp);
|
struct bnx2x_ilt *ilt = BP_ILT(bp);
|
||||||
struct ilt_client_info *ilt_cli = &ilt->clients[cli_num];
|
struct ilt_client_info *ilt_cli;
|
||||||
|
|
||||||
if (!ilt || !ilt->lines)
|
if (!ilt || !ilt->lines)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
ilt_cli = &ilt->clients[cli_num];
|
||||||
|
|
||||||
if (ilt_cli->flags & (ILT_CLIENT_SKIP_INIT | ILT_CLIENT_SKIP_MEM))
|
if (ilt_cli->flags & (ILT_CLIENT_SKIP_INIT | ILT_CLIENT_SKIP_MEM))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|||||||
@@ -1889,7 +1889,7 @@ static void i40evf_adminq_task(struct work_struct *work)
|
|||||||
|
|
||||||
/* check for error indications */
|
/* check for error indications */
|
||||||
val = rd32(hw, hw->aq.arq.len);
|
val = rd32(hw, hw->aq.arq.len);
|
||||||
if (val == 0xdeadbeef) /* indicates device in reset */
|
if (val == 0xdeadbeef || val == 0xffffffff) /* device in reset */
|
||||||
goto freedom;
|
goto freedom;
|
||||||
oldval = val;
|
oldval = val;
|
||||||
if (val & I40E_VF_ARQLEN1_ARQVFE_MASK) {
|
if (val & I40E_VF_ARQLEN1_ARQVFE_MASK) {
|
||||||
|
|||||||
@@ -494,7 +494,7 @@ static int efx_ptp_get_attributes(struct efx_nic *efx)
|
|||||||
} else if (rc == -EINVAL) {
|
} else if (rc == -EINVAL) {
|
||||||
fmt = MC_CMD_PTP_OUT_GET_ATTRIBUTES_SECONDS_NANOSECONDS;
|
fmt = MC_CMD_PTP_OUT_GET_ATTRIBUTES_SECONDS_NANOSECONDS;
|
||||||
} else if (rc == -EPERM) {
|
} else if (rc == -EPERM) {
|
||||||
netif_info(efx, probe, efx->net_dev, "no PTP support\n");
|
pci_info(efx->pci_dev, "no PTP support\n");
|
||||||
return rc;
|
return rc;
|
||||||
} else {
|
} else {
|
||||||
efx_mcdi_display_error(efx, MC_CMD_PTP, sizeof(inbuf),
|
efx_mcdi_display_error(efx, MC_CMD_PTP, sizeof(inbuf),
|
||||||
@@ -613,7 +613,7 @@ static int efx_ptp_disable(struct efx_nic *efx)
|
|||||||
* should only have been called during probe.
|
* should only have been called during probe.
|
||||||
*/
|
*/
|
||||||
if (rc == -ENOSYS || rc == -EPERM)
|
if (rc == -ENOSYS || rc == -EPERM)
|
||||||
netif_info(efx, probe, efx->net_dev, "no PTP support\n");
|
pci_info(efx->pci_dev, "no PTP support\n");
|
||||||
else if (rc)
|
else if (rc)
|
||||||
efx_mcdi_display_error(efx, MC_CMD_PTP,
|
efx_mcdi_display_error(efx, MC_CMD_PTP,
|
||||||
MC_CMD_PTP_IN_DISABLE_LEN,
|
MC_CMD_PTP_IN_DISABLE_LEN,
|
||||||
|
|||||||
@@ -1059,7 +1059,7 @@ void efx_siena_sriov_probe(struct efx_nic *efx)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (efx_siena_sriov_cmd(efx, false, &efx->vi_scale, &count)) {
|
if (efx_siena_sriov_cmd(efx, false, &efx->vi_scale, &count)) {
|
||||||
netif_info(efx, probe, efx->net_dev, "no SR-IOV VFs probed\n");
|
pci_info(efx->pci_dev, "no SR-IOV VFs probed\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (count > 0 && count > max_vfs)
|
if (count > 0 && count > max_vfs)
|
||||||
|
|||||||
@@ -426,8 +426,20 @@ static int emac_set_coalesce(struct net_device *ndev,
|
|||||||
u32 int_ctrl, num_interrupts = 0;
|
u32 int_ctrl, num_interrupts = 0;
|
||||||
u32 prescale = 0, addnl_dvdr = 1, coal_intvl = 0;
|
u32 prescale = 0, addnl_dvdr = 1, coal_intvl = 0;
|
||||||
|
|
||||||
if (!coal->rx_coalesce_usecs)
|
if (!coal->rx_coalesce_usecs) {
|
||||||
return -EINVAL;
|
priv->coal_intvl = 0;
|
||||||
|
|
||||||
|
switch (priv->version) {
|
||||||
|
case EMAC_VERSION_2:
|
||||||
|
emac_ctrl_write(EMAC_DM646X_CMINTCTRL, 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
emac_ctrl_write(EMAC_CTRL_EWINTTCNT, 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
coal_intvl = coal->rx_coalesce_usecs;
|
coal_intvl = coal->rx_coalesce_usecs;
|
||||||
|
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ int mdio_mux_init(struct device *dev,
|
|||||||
} else {
|
} else {
|
||||||
parent_bus_node = NULL;
|
parent_bus_node = NULL;
|
||||||
parent_bus = mux_bus;
|
parent_bus = mux_bus;
|
||||||
|
get_device(&parent_bus->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
pb = devm_kzalloc(dev, sizeof(*pb), GFP_KERNEL);
|
pb = devm_kzalloc(dev, sizeof(*pb), GFP_KERNEL);
|
||||||
@@ -182,9 +183,7 @@ int mdio_mux_init(struct device *dev,
|
|||||||
|
|
||||||
devm_kfree(dev, pb);
|
devm_kfree(dev, pb);
|
||||||
err_pb_kz:
|
err_pb_kz:
|
||||||
/* balance the reference of_mdio_find_bus() took */
|
put_device(&parent_bus->dev);
|
||||||
if (!mux_bus)
|
|
||||||
put_device(&parent_bus->dev);
|
|
||||||
err_parent_bus:
|
err_parent_bus:
|
||||||
of_node_put(parent_bus_node);
|
of_node_put(parent_bus_node);
|
||||||
return ret_val;
|
return ret_val;
|
||||||
@@ -202,7 +201,6 @@ void mdio_mux_uninit(void *mux_handle)
|
|||||||
cb = cb->next;
|
cb = cb->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* balance the reference of_mdio_find_bus() in mdio_mux_init() took */
|
|
||||||
put_device(&pb->mii_bus->dev);
|
put_device(&pb->mii_bus->dev);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(mdio_mux_uninit);
|
EXPORT_SYMBOL_GPL(mdio_mux_uninit);
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user