mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
This is the 4.14.326 stable release
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAmUOphQACgkQONu9yGCS aT48SA//UAwiChca8ejeMfb5naUV7yr0r7Vpe32I7+Z+vY+YmuKO2UWOdBi4rvrY +PYIFCA7nfLpp6hXZg14ljX3w1Qh8WftXwlIeml5PJX+/IpyGT2FAx+CcYXAKdQk KqANTdDAogw4wfPF+jY0hqRUP0NuIW2jzPU9cMQHm6/reRs8sSqs9wHo5tqlLLBN YF66O+MyI/FZRwD3HxSeVlaNk1Rrk6I7CtdnXaUqMo7CosagayoiODn5vPMUJXZW I7WOz4hFYJJhvnJKYKCoMUwmpsEQrQwxyeBipfXsoCjdSOn7TBJaTNEqo0cTq1aQ kD34afHBY5cZaS2d0EKFcCYVxRwtzh0N73RuimPNTT3Rfkot9ARFwQjk+eOHrJDh UQlx4aWq2vX400V68LeE6nSxwAoml888mISVrVqeLu4Xzt9dl4JlLD99GC0tu2GG xKZp3BZ2spxEUciGT4Hby3f6PEGO3oJ/m8MSTNsn5wqdeZMbTUQ4O8yWLQZPaacc M+FEHK/beW5inq5mi2hy0rs2uvhbSQoLV79jbS0EeN2x5Z6MTyWfifRqLx1VzvgF oZHw7AeSv97oJGQfqF5j9BIUOC8jMzMircmxY5z/MmWvvjpkoMtTi0Fm66KbR6c/ Ydm83ptyuPg0XotdjlGAc1tGkVQatx7c1XzYqeOhKDBxvY4l13A= =RCAu -----END PGP SIGNATURE----- Merge 4.14.326 into android-4.14-stable Changes in 4.14.326 ARM: pxa: remove use of symbol_get() mmc: au1xmmc: force non-modular build and remove symbol_get usage rtc: ds1685: use EXPORT_SYMBOL_GPL for ds1685_rtc_poweroff modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules USB: serial: option: add Quectel EM05G variant (0x030e) USB: serial: option: add FOXCONN T99W368/T99W373 product HID: wacom: remove the battery when the EKR is off Bluetooth: btsdio: fix use after free bug in btsdio_remove due to race condition serial: sc16is7xx: fix bug when first setting GPIO direction nilfs2: fix general protection fault in nilfs_lookup_dirty_data_buffers() nilfs2: fix WARNING in mark_buffer_dirty due to discarded buffer reuse pinctrl: amd: Don't show `Invalid config param` errors lib/ubsan: remove returns-nonnull-attribute checks 9p: virtio: make sure 'offs' is initialized in zc_request ASoC: da7219: Flush pending AAD IRQ when suspending ethernet: atheros: fix return value check in atl1c_tso_csum() m68k: Fix invalid .section syntax s390/dasd: use correct number of retries for ERP requests fs/nls: make load_nls() take a const parameter ASoc: codecs: ES8316: Fix DMIC config security: keys: perform capable check only on privileged operations net: usb: qmi_wwan: add Quectel EM05GV2 idmaengine: make FSL_EDMA and INTEL_IDMA64 depends on HAS_IOMEM scsi: qedi: Fix potential deadlock on &qedi_percpu->p_work_lock netlabel: fix shift wrapping bug in netlbl_catmap_setlong() bnx2x: fix page fault following EEH recovery sctp: handle invalid error codes without calling BUG() cifs: add a warning when the in-flight count goes negative ALSA: seq: oss: Fix racy open/close of MIDI devices powerpc/32: Include .branch_lt in data section powerpc/32s: Fix assembler warning about r0 udf: Check consistency of Space Bitmap Descriptor udf: Handle error when adding extent to a file Revert "net: macsec: preserve ingress frame ordering" reiserfs: Check the return value from __getblk() fs: Fix error checking for d_hash_and_lookup() cpufreq: powernow-k8: Use related_cpus instead of cpus in driver.exit() regmap: rbtree: Use alloc_flags for memory allocations spi: tegra20-sflash: fix to check return value of platform_get_irq() in tegra_sflash_probe() can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also in case of OOM wifi: mwifiex: Fix OOB and integer underflow when rx packets Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe() net: tcp: fix unexcepted socket die when snd_wnd is 0 crypto: caam - fix unchecked return value error lwt: Check LWTUNNEL_XMIT_CONTINUE strictly fs: ocfs2: namei: check return value of ocfs2_add_entry() wifi: mwifiex: fix memory leak in mwifiex_histogram_read() wifi: mwifiex: Fix missed return in oob checks failed path wifi: ath9k: protect WMI command response buffer replacement with a lock wifi: mwifiex: avoid possible NULL skb pointer dereference wifi: ath9k: use IS_ERR() with debugfs_create_dir() net: arcnet: Do not call kfree_skb() under local_irq_disable() netrom: Deny concurrent connect(). ARM: dts: BCM53573: Add cells sizes to PCIe node ARM: dts: samsung: s3c6410-mini6410: correct ethernet reg addresses (split) ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split) drm: adv7511: Fix low refresh rate register for ADV7533/5 of: unittest: fix null pointer dereferencing in of_unittest_find_node_by_name() smackfs: Prevent underflow in smk_set_cipso() audit: fix possible soft lockup in __audit_inode_child() ALSA: ac97: Fix possible error value of *rac97 drivers: clk: keystone: Fix parameter judgment in _of_pll_clk_init() clk: sunxi-ng: Modify mismatched function name PCI: Mark NVIDIA T4 GPUs to avoid bus reset PCI: pciehp: Use RMW accessors for changing LNKCTL wifi: ath10k: Use RMW accessors for changing LNKCTL nfs/blocklayout: Use the passed in gfp flags powerpc/iommu: Fix notifiers being shared by PCI and VIO buses jfs: validate max amount of blocks before allocation. fs: lockd: avoid possible wrong NULL parameter NFSD: da_addr_body field missing in some GETDEVICEINFO replies drivers: usb: smsusb: fix error handling code in smsusb_init_device media: dib7000p: Fix potential division by zero media: dvb-usb: m920x: Fix a potential memory leak in m920x_i2c_xfer() media: cx24120: Add retval check for cx24120_message_send() media: mediatek: vcodec: Return NULL if no vdec_fb is found usb: phy: mxs: fix getting wrong state with mxs_phy_is_otg_host() scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param() scsi: be2iscsi: Add length check when parsing nlattrs scsi: qla4xxx: Add length check when parsing nlattrs x86/APM: drop the duplicate APM_MINOR_DEV macro scsi: qedf: Do not touch __user pointer in qedf_dbg_stop_io_on_error_cmd_read() directly scsi: qedf: Do not touch __user pointer in qedf_dbg_fp_int_cmd_read() directly dma-buf/sync_file: Fix docs syntax media: go7007: Remove redundant if statement USB: gadget: f_mass_storage: Fix unused variable warning cgroup:namespace: Remove unused cgroup_namespaces_init() scsi: core: Use 32-bit hostnum in scsi_host_lookup() scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock serial: tegra: handle clk prepare error in tegra_uart_hw_init() amba: bus: fix refcount leak Revert "IB/isert: Fix incorrect release of isert connection" HID: multitouch: Correct devm device reference for hidinput input_dev name rpmsg: glink: Add check for kstrdup dmaengine: ste_dma40: Add missing IRQ check in d40_probe igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c netfilter: xt_u32: validate user space input netfilter: xt_sctp: validate the flag_info count igb: set max size RX buffer when store bad packet is enabled PM / devfreq: Fix leak in devfreq_dev_release() ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl ARM: OMAP2+: Fix -Warray-bounds warning in _pwrdm_state_switch() backlight/gpio_backlight: Compare against struct fb_info.device backlight/bd6107: Compare against struct fb_info.device backlight/lv5207lp: Compare against struct fb_info.device media: dvb: symbol fixup for dvb_attach() ntb: Drop packets when qp link is down ntb: Clean up tx tail index on link down ntb: Fix calculation ntb_transport_tx_free_entry() Revert "PCI: Mark NVIDIA T4 GPUs to avoid bus reset" procfs: block chmod on /proc/thread-self/comm parisc: Fix /proc/cpuinfo output for lscpu dccp: Fix out of bounds access in DCCP error handler X.509: if signature is unsupported skip validation net: handle ARPHRD_PPP in dev_is_mac_header_xmit() pstore/ram: Check start of empty przs during init crypto: stm32 - fix loop iterating through scatterlist for DMA scsi: qla2xxx: fix inconsistent TMF timeout scsi: qla2xxx: Turn off noisy message log fbdev/ep93xx-fb: Do not assign to struct fb_info.dev drm/ast: Fix DRAM init on AST2200 parisc: led: Fix LAN receive and transmit LEDs parisc: led: Reduce CPU overhead for disk & lan LED computation clk: qcom: gcc-mdm9615: use proper parent for pll0_vote clock NFSv4/pnfs: minor fix for cleanup path in nfs4_get_device_info x86/virt: Drop unnecessary check on extended CPUID level in cpu_has_svm() watchdog: intel-mid_wdt: add MODULE_ALIAS() to allow auto-load pwm: lpc32xx: Remove handling of PWM channels net: read sk->sk_family once in sk_mc_loop() igb: disable virtualization features on 82580 net: ipv6/addrconf: avoid integer underflow in ipv6_create_tempaddr af_unix: Fix data-races around user->unix_inflight. af_unix: Fix data-race around unix_tot_inflight. af_unix: Fix data-races around sk->sk_shutdown. af_unix: Fix data race around sk->sk_err. net: sched: sch_qfq: Fix UAF in qfq_dequeue() kcm: Destroy mutex in kcm_exit_net() igbvf: Change IGBVF_MIN to allow set rx/tx value between 64 and 80 igb: Change IGB_MIN to allow set rx/tx value between 64 and 80 ata: sata_gemini: Add missing MODULE_DESCRIPTION ata: pata_ftide010: Add missing MODULE_DESCRIPTION net: ethernet: mtk_eth_soc: fix possible NULL pointer dereference in mtk_hwlro_get_fdir_all() kcm: Fix memory leak in error path of kcm_sendmsg() ixgbe: fix timestamp configuration code kcm: Fix error handling for SOCK_DGRAM in kcm_sendmsg(). parisc: Drop loops_per_jiffy from per_cpu struct autofs: fix memory leak of waitqueues in autofs_catatonic_mode btrfs: output extra debug info if we failed to find an inline backref ACPICA: Add AML_NO_OPERAND_RESOLVE flag to Timer ACPI: video: Add backlight=native DMI quirk for Lenovo Ideapad Z470 hw_breakpoint: fix single-stepping when using bpf_overflow_handler wifi: ath9k: fix printk specifier wifi: mwifiex: fix fortify warning crypto: lib/mpi - avoid null pointer deref in mpi_cmp_ui() tpm_tis: Resend command to recover from data transfer errors alx: fix OOB-read compiler warning drm/exynos: fix a possible null-pointer dereference due to data race in exynos_drm_crtc_atomic_disable() md: raid1: fix potential OOB in raid1_remove_disk() ext2: fix datatype of block number in ext2_xattr_set2() fs/jfs: prevent double-free in dbUnmount() after failed jfs_remount() jfs: fix invalid free of JFS_IP(ipimap)->i_imap in diUnmount powerpc/pseries: fix possible memory leak in ibmebus_bus_init() media: dvb-usb-v2: af9035: Fix null-ptr-deref in af9035_i2c_master_xfer media: dw2102: Fix null-ptr-deref in dw2102_i2c_transfer() media: af9005: Fix null-ptr-deref in af9005_i2c_xfer media: anysee: fix null-ptr-deref in anysee_master_xfer media: az6007: Fix null-ptr-deref in az6007_i2c_xfer() iio: core: Use min() instead of min_t() to make code more robust media: tuners: qt1010: replace BUG_ON with a regular error media: pci: cx23885: replace BUG with error return usb: gadget: fsl_qe_udc: validate endpoint index for ch9 udc scsi: target: iscsi: Fix buffer overflow in lio_target_nacl_info_show() serial: cpm_uart: Avoid suspicious locking kobject: Add sanity check for kset->kobj.ktype in kset_register() md/raid1: fix error: ISO C90 forbids mixed declarations attr: block mode changes of symlinks btrfs: fix lockdep splat and potential deadlock after failure running delayed items nfsd: fix change_info in NFSv4 RENAME replies mtd: rawnand: brcmnand: Fix crash during the panic_write mtd: rawnand: brcmnand: Fix potential false time out warning mtd: rawnand: brcmnand: Fix ECC level field setting for v7.2 controller mtd: rawnand: brcmnand: Fix potential out-of-bounds access in oob write net/sched: cls_fw: No longer copy tcf_result on update to avoid use-after-free net/sched: Retire rsvp classifier Linux 4.14.326 Change-Id: I22815ecf1b4b346f889ccaa561b7cb9a20f204ce Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
commit
3b3807ea9f
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 14
|
||||
SUBLEVEL = 325
|
||||
SUBLEVEL = 326
|
||||
EXTRAVERSION =
|
||||
NAME = Petit Gorille
|
||||
|
||||
|
@ -119,6 +119,9 @@
|
||||
|
||||
pcie0: pcie@2000 {
|
||||
reg = <0x00002000 0x1000>;
|
||||
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
};
|
||||
|
||||
usb2: usb2@4000 {
|
||||
|
@ -61,7 +61,7 @@
|
||||
|
||||
ethernet@18000000 {
|
||||
compatible = "davicom,dm9000";
|
||||
reg = <0x18000000 0x2 0x18000004 0x2>;
|
||||
reg = <0x18000000 0x2>, <0x18000004 0x2>;
|
||||
interrupt-parent = <&gpn>;
|
||||
interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
|
||||
davicom,no-eeprom;
|
||||
|
@ -36,7 +36,7 @@
|
||||
|
||||
ethernet@18000000 {
|
||||
compatible = "davicom,dm9000";
|
||||
reg = <0xA8000000 0x2 0xA8000002 0x2>;
|
||||
reg = <0xa8000000 0x2>, <0xa8000002 0x2>;
|
||||
interrupt-parent = <&gph1>;
|
||||
interrupts = <1 4>;
|
||||
local-mac-address = [00 00 de ad be ef];
|
||||
|
@ -631,7 +631,7 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp)
|
||||
info->address &= ~alignment_mask;
|
||||
info->ctrl.len <<= offset;
|
||||
|
||||
if (is_default_overflow_handler(bp)) {
|
||||
if (uses_default_overflow_handler(bp)) {
|
||||
/*
|
||||
* Mismatch breakpoints are required for single-stepping
|
||||
* breakpoints.
|
||||
@ -803,7 +803,7 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr,
|
||||
* Otherwise, insert a temporary mismatch breakpoint so that
|
||||
* we can single-step over the watchpoint trigger.
|
||||
*/
|
||||
if (!is_default_overflow_handler(wp))
|
||||
if (!uses_default_overflow_handler(wp))
|
||||
continue;
|
||||
step:
|
||||
enable_single_step(wp, instruction_pointer(regs));
|
||||
@ -816,7 +816,7 @@ step:
|
||||
info->trigger = addr;
|
||||
pr_debug("watchpoint fired: address = 0x%x\n", info->trigger);
|
||||
perf_bp_event(wp, regs);
|
||||
if (is_default_overflow_handler(wp))
|
||||
if (uses_default_overflow_handler(wp))
|
||||
enable_single_step(wp, instruction_pointer(regs));
|
||||
}
|
||||
|
||||
@ -891,7 +891,7 @@ static void breakpoint_handler(unsigned long unknown, struct pt_regs *regs)
|
||||
info->trigger = addr;
|
||||
pr_debug("breakpoint fired: address = 0x%x\n", addr);
|
||||
perf_bp_event(bp, regs);
|
||||
if (is_default_overflow_handler(bp))
|
||||
if (uses_default_overflow_handler(bp))
|
||||
enable_single_step(bp, addr);
|
||||
goto unlock;
|
||||
}
|
||||
|
@ -173,7 +173,7 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag)
|
||||
break;
|
||||
case PWRDM_STATE_PREV:
|
||||
prev = pwrdm_read_prev_pwrst(pwrdm);
|
||||
if (pwrdm->state != prev)
|
||||
if (prev >= 0 && pwrdm->state != prev)
|
||||
pwrdm->state_counter[prev]++;
|
||||
if (prev == PWRDM_POWER_RET)
|
||||
_update_logic_membank_counters(pwrdm);
|
||||
|
@ -224,8 +224,6 @@ void sharpsl_battery_kick(void)
|
||||
{
|
||||
schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(125));
|
||||
}
|
||||
EXPORT_SYMBOL(sharpsl_battery_kick);
|
||||
|
||||
|
||||
static void sharpsl_battery_thread(struct work_struct *private_)
|
||||
{
|
||||
|
@ -13,7 +13,6 @@
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h> /* symbol_get ; symbol_put */
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
@ -517,17 +516,6 @@ static struct pxa2xx_spi_chip spitz_ads7846_chip = {
|
||||
.gpio_cs = SPITZ_GPIO_ADS7846_CS,
|
||||
};
|
||||
|
||||
static void spitz_bl_kick_battery(void)
|
||||
{
|
||||
void (*kick_batt)(void);
|
||||
|
||||
kick_batt = symbol_get(sharpsl_battery_kick);
|
||||
if (kick_batt) {
|
||||
kick_batt();
|
||||
symbol_put(sharpsl_battery_kick);
|
||||
}
|
||||
}
|
||||
|
||||
static struct corgi_lcd_platform_data spitz_lcdcon_info = {
|
||||
.init_mode = CORGI_LCD_MODE_VGA,
|
||||
.max_intensity = 0x2f,
|
||||
@ -535,7 +523,7 @@ static struct corgi_lcd_platform_data spitz_lcdcon_info = {
|
||||
.limit_mask = 0x0b,
|
||||
.gpio_backlight_cont = SPITZ_GPIO_BACKLIGHT_CONT,
|
||||
.gpio_backlight_on = SPITZ_GPIO_BACKLIGHT_ON,
|
||||
.kick_battery = spitz_bl_kick_battery,
|
||||
.kick_battery = sharpsl_battery_kick,
|
||||
};
|
||||
|
||||
static struct pxa2xx_spi_chip spitz_lcdcon_chip = {
|
||||
|
@ -662,7 +662,7 @@ static int breakpoint_handler(unsigned long unused, unsigned int esr,
|
||||
perf_bp_event(bp, regs);
|
||||
|
||||
/* Do we need to handle the stepping? */
|
||||
if (is_default_overflow_handler(bp))
|
||||
if (uses_default_overflow_handler(bp))
|
||||
step = 1;
|
||||
unlock:
|
||||
rcu_read_unlock();
|
||||
@ -741,7 +741,7 @@ static u64 get_distance_from_watchpoint(unsigned long addr, u64 val,
|
||||
static int watchpoint_report(struct perf_event *wp, unsigned long addr,
|
||||
struct pt_regs *regs)
|
||||
{
|
||||
int step = is_default_overflow_handler(wp);
|
||||
int step = uses_default_overflow_handler(wp);
|
||||
struct arch_hw_breakpoint *info = counter_arch_bp(wp);
|
||||
|
||||
info->trigger = addr;
|
||||
|
@ -499,12 +499,12 @@ in_ea:
|
||||
dbf %d0,morein
|
||||
rts
|
||||
|
||||
.section .fixup,#alloc,#execinstr
|
||||
.section .fixup,"ax"
|
||||
.even
|
||||
1:
|
||||
jbra fpsp040_die
|
||||
|
||||
.section __ex_table,#alloc
|
||||
.section __ex_table,"a"
|
||||
.align 4
|
||||
|
||||
.long in_ea,1b
|
||||
|
@ -379,11 +379,11 @@ _060_real_access:
|
||||
|
||||
|
||||
| Execption handling for movs access to illegal memory
|
||||
.section .fixup,#alloc,#execinstr
|
||||
.section .fixup,"ax"
|
||||
.even
|
||||
1: moveq #-1,%d1
|
||||
rts
|
||||
.section __ex_table,#alloc
|
||||
.section __ex_table,"a"
|
||||
.align 4
|
||||
.long dmrbuae,1b
|
||||
.long dmrwuae,1b
|
||||
|
@ -26,7 +26,7 @@ ENTRY(relocate_new_kernel)
|
||||
lea %pc@(.Lcopy),%a4
|
||||
2: addl #0x00000000,%a4 /* virt_to_phys() */
|
||||
|
||||
.section ".m68k_fixup","aw"
|
||||
.section .m68k_fixup,"aw"
|
||||
.long M68K_FIXUP_MEMOFFSET, 2b+2
|
||||
.previous
|
||||
|
||||
@ -49,7 +49,7 @@ ENTRY(relocate_new_kernel)
|
||||
lea %pc@(.Lcont040),%a4
|
||||
5: addl #0x00000000,%a4 /* virt_to_phys() */
|
||||
|
||||
.section ".m68k_fixup","aw"
|
||||
.section .m68k_fixup,"aw"
|
||||
.long M68K_FIXUP_MEMOFFSET, 5b+2
|
||||
.previous
|
||||
|
||||
|
@ -26,7 +26,6 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/spi/spi.h>
|
||||
@ -175,12 +174,7 @@ static struct platform_device db1x00_audio_dev = {
|
||||
|
||||
static irqreturn_t db1100_mmc_cd(int irq, void *ptr)
|
||||
{
|
||||
void (*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
/* link against CONFIG_MMC=m */
|
||||
mmc_cd = symbol_get(mmc_detect_change);
|
||||
mmc_cd(ptr, msecs_to_jiffies(500));
|
||||
symbol_put(mmc_detect_change);
|
||||
|
||||
mmc_detect_change(ptr, msecs_to_jiffies(500));
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/leds.h>
|
||||
@ -355,14 +354,7 @@ static irqreturn_t db1200_mmc_cd(int irq, void *ptr)
|
||||
|
||||
static irqreturn_t db1200_mmc_cdfn(int irq, void *ptr)
|
||||
{
|
||||
void (*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
|
||||
/* link against CONFIG_MMC=m */
|
||||
mmc_cd = symbol_get(mmc_detect_change);
|
||||
if (mmc_cd) {
|
||||
mmc_cd(ptr, msecs_to_jiffies(200));
|
||||
symbol_put(mmc_detect_change);
|
||||
}
|
||||
mmc_detect_change(ptr, msecs_to_jiffies(200));
|
||||
|
||||
msleep(100); /* debounce */
|
||||
if (irq == DB1200_SD0_INSERT_INT)
|
||||
@ -446,14 +438,7 @@ static irqreturn_t pb1200_mmc1_cd(int irq, void *ptr)
|
||||
|
||||
static irqreturn_t pb1200_mmc1_cdfn(int irq, void *ptr)
|
||||
{
|
||||
void (*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
|
||||
/* link against CONFIG_MMC=m */
|
||||
mmc_cd = symbol_get(mmc_detect_change);
|
||||
if (mmc_cd) {
|
||||
mmc_cd(ptr, msecs_to_jiffies(200));
|
||||
symbol_put(mmc_detect_change);
|
||||
}
|
||||
mmc_detect_change(ptr, msecs_to_jiffies(200));
|
||||
|
||||
msleep(100); /* debounce */
|
||||
if (irq == PB1200_SD1_INSERT_INT)
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/ata_platform.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/rawnand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
@ -457,14 +456,7 @@ static irqreturn_t db1300_mmc_cd(int irq, void *ptr)
|
||||
|
||||
static irqreturn_t db1300_mmc_cdfn(int irq, void *ptr)
|
||||
{
|
||||
void (*mmc_cd)(struct mmc_host *, unsigned long);
|
||||
|
||||
/* link against CONFIG_MMC=m. We can only be called once MMC core has
|
||||
* initialized the controller, so symbol_get() should always succeed.
|
||||
*/
|
||||
mmc_cd = symbol_get(mmc_detect_change);
|
||||
mmc_cd(ptr, msecs_to_jiffies(200));
|
||||
symbol_put(mmc_detect_change);
|
||||
mmc_detect_change(ptr, msecs_to_jiffies(200));
|
||||
|
||||
msleep(100); /* debounce */
|
||||
if (irq == DB1300_SD1_INSERT_INT)
|
||||
|
@ -11,8 +11,8 @@
|
||||
#define LED1 0x02
|
||||
#define LED0 0x01 /* bottom (or furthest left) LED */
|
||||
|
||||
#define LED_LAN_TX LED0 /* for LAN transmit activity */
|
||||
#define LED_LAN_RCV LED1 /* for LAN receive activity */
|
||||
#define LED_LAN_RCV LED0 /* for LAN receive activity */
|
||||
#define LED_LAN_TX LED1 /* for LAN transmit activity */
|
||||
#define LED_DISK_IO LED2 /* for disk activity */
|
||||
#define LED_HEARTBEAT LED3 /* heartbeat */
|
||||
|
||||
|
@ -108,7 +108,6 @@ struct cpuinfo_parisc {
|
||||
unsigned long cpu_loc; /* CPU location from PAT firmware */
|
||||
unsigned int state;
|
||||
struct parisc_device *dev;
|
||||
unsigned long loops_per_jiffy;
|
||||
};
|
||||
|
||||
extern struct system_cpuinfo_parisc boot_cpu_data;
|
||||
|
@ -177,7 +177,6 @@ static int __init processor_probe(struct parisc_device *dev)
|
||||
if (cpuid)
|
||||
memset(p, 0, sizeof(struct cpuinfo_parisc));
|
||||
|
||||
p->loops_per_jiffy = loops_per_jiffy;
|
||||
p->dev = dev; /* Save IODC data in case we need it */
|
||||
p->hpa = dev->hpa.start; /* save CPU hpa */
|
||||
p->cpuid = cpuid; /* save CPU id */
|
||||
@ -370,10 +369,18 @@ int
|
||||
show_cpuinfo (struct seq_file *m, void *v)
|
||||
{
|
||||
unsigned long cpu;
|
||||
char cpu_name[60], *p;
|
||||
|
||||
/* strip PA path from CPU name to not confuse lscpu */
|
||||
strlcpy(cpu_name, per_cpu(cpu_data, 0).dev->name, sizeof(cpu_name));
|
||||
p = strrchr(cpu_name, '[');
|
||||
if (p)
|
||||
*(--p) = 0;
|
||||
|
||||
for_each_online_cpu(cpu) {
|
||||
const struct cpuinfo_parisc *cpuinfo = &per_cpu(cpu_data, cpu);
|
||||
#ifdef CONFIG_SMP
|
||||
const struct cpuinfo_parisc *cpuinfo = &per_cpu(cpu_data, cpu);
|
||||
|
||||
if (0 == cpuinfo->hpa)
|
||||
continue;
|
||||
#endif
|
||||
@ -410,8 +417,7 @@ show_cpuinfo (struct seq_file *m, void *v)
|
||||
|
||||
seq_printf(m, "model\t\t: %s - %s\n",
|
||||
boot_cpu_data.pdc.sys_model_name,
|
||||
cpuinfo->dev ?
|
||||
cpuinfo->dev->name : "Unknown");
|
||||
cpu_name);
|
||||
|
||||
seq_printf(m, "hversion\t: 0x%08x\n"
|
||||
"sversion\t: 0x%08x\n",
|
||||
@ -422,8 +428,8 @@ show_cpuinfo (struct seq_file *m, void *v)
|
||||
show_cache_info(m);
|
||||
|
||||
seq_printf(m, "bogomips\t: %lu.%02lu\n",
|
||||
cpuinfo->loops_per_jiffy / (500000 / HZ),
|
||||
(cpuinfo->loops_per_jiffy / (5000 / HZ)) % 100);
|
||||
loops_per_jiffy / (500000 / HZ),
|
||||
loops_per_jiffy / (5000 / HZ) % 100);
|
||||
|
||||
seq_printf(m, "software id\t: %ld\n\n",
|
||||
boot_cpu_data.pdc.model.sw_id);
|
||||
|
@ -986,7 +986,7 @@ start_here:
|
||||
*/
|
||||
lis r5, abatron_pteptrs@h
|
||||
ori r5, r5, abatron_pteptrs@l
|
||||
stw r5, 0xf0(r0) /* This much match your Abatron config */
|
||||
stw r5, 0xf0(0) /* This much match your Abatron config */
|
||||
lis r6, swapper_pg_dir@h
|
||||
ori r6, r6, swapper_pg_dir@l
|
||||
tophys(r5, r5)
|
||||
|
@ -145,17 +145,28 @@ static int fail_iommu_bus_notify(struct notifier_block *nb,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct notifier_block fail_iommu_bus_notifier = {
|
||||
/*
|
||||
* PCI and VIO buses need separate notifier_block structs, since they're linked
|
||||
* list nodes. Sharing a notifier_block would mean that any notifiers later
|
||||
* registered for PCI buses would also get called by VIO buses and vice versa.
|
||||
*/
|
||||
static struct notifier_block fail_iommu_pci_bus_notifier = {
|
||||
.notifier_call = fail_iommu_bus_notify
|
||||
};
|
||||
|
||||
#ifdef CONFIG_IBMVIO
|
||||
static struct notifier_block fail_iommu_vio_bus_notifier = {
|
||||
.notifier_call = fail_iommu_bus_notify
|
||||
};
|
||||
#endif
|
||||
|
||||
static int __init fail_iommu_setup(void)
|
||||
{
|
||||
#ifdef CONFIG_PCI
|
||||
bus_register_notifier(&pci_bus_type, &fail_iommu_bus_notifier);
|
||||
bus_register_notifier(&pci_bus_type, &fail_iommu_pci_bus_notifier);
|
||||
#endif
|
||||
#ifdef CONFIG_IBMVIO
|
||||
bus_register_notifier(&vio_bus_type, &fail_iommu_bus_notifier);
|
||||
bus_register_notifier(&vio_bus_type, &fail_iommu_vio_bus_notifier);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
@ -322,6 +322,7 @@ SECTIONS
|
||||
*(.sdata2)
|
||||
*(.got.plt) *(.got)
|
||||
*(.plt)
|
||||
*(.branch_lt)
|
||||
}
|
||||
#else
|
||||
.data : AT(ADDR(.data) - LOAD_OFFSET) {
|
||||
|
@ -452,6 +452,7 @@ static int __init ibmebus_bus_init(void)
|
||||
if (err) {
|
||||
printk(KERN_WARNING "%s: device_register returned %i\n",
|
||||
__func__, err);
|
||||
put_device(&ibmebus_bus_device);
|
||||
bus_unregister(&ibmebus_bus_type);
|
||||
|
||||
return err;
|
||||
|
@ -89,12 +89,6 @@ static inline int cpu_has_svm(const char **msg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (boot_cpu_data.extended_cpuid_level < SVM_CPUID_FUNC) {
|
||||
if (msg)
|
||||
*msg = "can't execute cpuid_8000000a";
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!boot_cpu_has(X86_FEATURE_SVM)) {
|
||||
if (msg)
|
||||
*msg = "svm not available";
|
||||
|
@ -246,12 +246,6 @@
|
||||
extern int (*console_blank_hook)(int);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The apm_bios device is one of the misc char devices.
|
||||
* This is its minor number.
|
||||
*/
|
||||
#define APM_MINOR_DEV 134
|
||||
|
||||
/*
|
||||
* Various options can be changed at boot time as follows:
|
||||
* (We allow underscores for compatibility with the modules code)
|
||||
|
@ -138,6 +138,11 @@ int x509_check_for_self_signed(struct x509_certificate *cert)
|
||||
if (strcmp(cert->pub->pkey_algo, cert->sig->pkey_algo) != 0)
|
||||
goto out;
|
||||
|
||||
if (cert->unsupported_sig) {
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = public_key_verify_signature(cert->pub, cert->sig);
|
||||
if (ret < 0) {
|
||||
if (ret == -ENOPKG) {
|
||||
|
@ -637,7 +637,7 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = {
|
||||
|
||||
/* 7E */ ACPI_OP("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY,
|
||||
AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R,
|
||||
AML_FLAGS_EXEC_0A_0T_1R),
|
||||
AML_FLAGS_EXEC_0A_0T_1R | AML_NO_OPERAND_RESOLVE),
|
||||
|
||||
/* ACPI 5.0 opcodes */
|
||||
|
||||
|
@ -294,6 +294,15 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
|
||||
DMI_MATCH(DMI_BOARD_NAME, "Lenovo IdeaPad S405"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* https://bugzilla.suse.com/show_bug.cgi?id=1208724 */
|
||||
.callback = video_detect_force_native,
|
||||
/* Lenovo Ideapad Z470 */
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_VERSION, "IdeaPad Z470"),
|
||||
},
|
||||
},
|
||||
{
|
||||
/* https://bugzilla.redhat.com/show_bug.cgi?id=1187004 */
|
||||
.callback = video_detect_force_native,
|
||||
|
@ -344,6 +344,7 @@ static void amba_device_release(struct device *dev)
|
||||
{
|
||||
struct amba_device *d = to_amba_device(dev);
|
||||
|
||||
of_node_put(d->dev.of_node);
|
||||
if (d->res.parent)
|
||||
release_resource(&d->res);
|
||||
kfree(d);
|
||||
|
@ -569,6 +569,7 @@ static struct platform_driver pata_ftide010_driver = {
|
||||
};
|
||||
module_platform_driver(pata_ftide010_driver);
|
||||
|
||||
MODULE_DESCRIPTION("low level driver for Faraday Technology FTIDE010");
|
||||
MODULE_AUTHOR("Linus Walleij <linus.walleij@linaro.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS("platform:" DRV_NAME);
|
||||
|
@ -434,6 +434,7 @@ static struct platform_driver gemini_sata_driver = {
|
||||
};
|
||||
module_platform_driver(gemini_sata_driver);
|
||||
|
||||
MODULE_DESCRIPTION("low level driver for Cortina Systems Gemini SATA bridge");
|
||||
MODULE_AUTHOR("Linus Walleij <linus.walleij@linaro.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_ALIAS("platform:" DRV_NAME);
|
||||
|
@ -291,7 +291,7 @@ static int regcache_rbtree_insert_to_block(struct regmap *map,
|
||||
|
||||
blk = krealloc(rbnode->block,
|
||||
blklen * map->cache_word_size,
|
||||
GFP_KERNEL);
|
||||
map->alloc_flags);
|
||||
if (!blk)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -300,7 +300,7 @@ static int regcache_rbtree_insert_to_block(struct regmap *map,
|
||||
if (BITS_TO_LONGS(blklen) > BITS_TO_LONGS(rbnode->blklen)) {
|
||||
present = krealloc(rbnode->cache_present,
|
||||
BITS_TO_LONGS(blklen) * sizeof(*present),
|
||||
GFP_KERNEL);
|
||||
map->alloc_flags);
|
||||
if (!present)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -334,7 +334,7 @@ regcache_rbtree_node_alloc(struct regmap *map, unsigned int reg)
|
||||
const struct regmap_range *range;
|
||||
int i;
|
||||
|
||||
rbnode = kzalloc(sizeof(*rbnode), GFP_KERNEL);
|
||||
rbnode = kzalloc(sizeof(*rbnode), map->alloc_flags);
|
||||
if (!rbnode)
|
||||
return NULL;
|
||||
|
||||
@ -360,13 +360,13 @@ regcache_rbtree_node_alloc(struct regmap *map, unsigned int reg)
|
||||
}
|
||||
|
||||
rbnode->block = kmalloc_array(rbnode->blklen, map->cache_word_size,
|
||||
GFP_KERNEL);
|
||||
map->alloc_flags);
|
||||
if (!rbnode->block)
|
||||
goto err_free;
|
||||
|
||||
rbnode->cache_present = kcalloc(BITS_TO_LONGS(rbnode->blklen),
|
||||
sizeof(*rbnode->cache_present),
|
||||
GFP_KERNEL);
|
||||
map->alloc_flags);
|
||||
if (!rbnode->cache_present)
|
||||
goto err_free_block;
|
||||
|
||||
|
@ -356,6 +356,7 @@ static void btsdio_remove(struct sdio_func *func)
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
cancel_work_sync(&data->work);
|
||||
hdev = data->hdev;
|
||||
|
||||
sdio_set_drvdata(func, NULL);
|
||||
|
@ -746,7 +746,11 @@ static int nokia_bluetooth_serdev_probe(struct serdev_device *serdev)
|
||||
return err;
|
||||
}
|
||||
|
||||
clk_prepare_enable(sysclk);
|
||||
err = clk_prepare_enable(sysclk);
|
||||
if (err) {
|
||||
dev_err(dev, "could not enable sysclk: %d", err);
|
||||
return err;
|
||||
}
|
||||
btdev->sysclk_speed = clk_get_rate(sysclk);
|
||||
clk_disable_unprepare(sysclk);
|
||||
|
||||
|
@ -364,10 +364,17 @@ static int tpm_tis_send_main(struct tpm_chip *chip, const u8 *buf, size_t len)
|
||||
int rc;
|
||||
u32 ordinal;
|
||||
unsigned long dur;
|
||||
unsigned int try;
|
||||
|
||||
rc = tpm_tis_send_data(chip, buf, len);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
for (try = 0; try < TPM_RETRY; try++) {
|
||||
rc = tpm_tis_send_data(chip, buf, len);
|
||||
if (rc >= 0)
|
||||
/* Data transfer done successfully */
|
||||
break;
|
||||
else if (rc != -EIO)
|
||||
/* Data transfer failed, not recoverable */
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* go and do it */
|
||||
rc = tpm_tis_write8(priv, TPM_STS(priv->locality), TPM_STS_GO);
|
||||
|
@ -213,7 +213,7 @@ static void __init _of_pll_clk_init(struct device_node *node, bool pllctrl)
|
||||
}
|
||||
|
||||
clk = clk_register_pll(NULL, node->name, parent_name, pll_data);
|
||||
if (clk) {
|
||||
if (!IS_ERR_OR_NULL(clk)) {
|
||||
of_clk_add_provider(node, of_clk_src_simple_get, clk);
|
||||
return;
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ static struct clk_regmap pll0_vote = {
|
||||
.enable_mask = BIT(0),
|
||||
.hw.init = &(struct clk_init_data){
|
||||
.name = "pll0_vote",
|
||||
.parent_names = (const char *[]){ "pll8" },
|
||||
.parent_names = (const char *[]){ "pll0" },
|
||||
.num_parents = 1,
|
||||
.ops = &clk_pll_vote_ops,
|
||||
},
|
||||
|
@ -50,7 +50,7 @@ int sunxi_ccu_set_mmc_timing_mode(struct clk *clk, bool new_mode)
|
||||
EXPORT_SYMBOL_GPL(sunxi_ccu_set_mmc_timing_mode);
|
||||
|
||||
/**
|
||||
* sunxi_ccu_set_mmc_timing_mode: Get the current MMC clock timing mode
|
||||
* sunxi_ccu_get_mmc_timing_mode: Get the current MMC clock timing mode
|
||||
* @clk: clock to query
|
||||
*
|
||||
* Returns 0 if the clock is in old timing mode, > 0 if it is in
|
||||
|
@ -1120,7 +1120,8 @@ static int powernowk8_cpu_exit(struct cpufreq_policy *pol)
|
||||
|
||||
kfree(data->powernow_table);
|
||||
kfree(data);
|
||||
for_each_cpu(cpu, pol->cpus)
|
||||
/* pol->cpus will be empty here, use related_cpus instead. */
|
||||
for_each_cpu(cpu, pol->related_cpus)
|
||||
per_cpu(powernow_data, cpu) = NULL;
|
||||
|
||||
return 0;
|
||||
|
@ -194,7 +194,9 @@ static int caam_rsa_count_leading_zeros(struct scatterlist *sgl,
|
||||
if (len && *buff)
|
||||
break;
|
||||
|
||||
sg_miter_next(&miter);
|
||||
if (!sg_miter_next(&miter))
|
||||
break;
|
||||
|
||||
buff = miter.addr;
|
||||
len = miter.length;
|
||||
|
||||
|
@ -574,9 +574,9 @@ static int stm32_hash_dma_send(struct stm32_hash_dev *hdev)
|
||||
}
|
||||
|
||||
for_each_sg(rctx->sg, tsg, rctx->nents, i) {
|
||||
sg[0] = *tsg;
|
||||
len = sg->length;
|
||||
|
||||
sg[0] = *tsg;
|
||||
if (sg_is_last(sg)) {
|
||||
if (hdev->dma_mode == 1) {
|
||||
len = (ALIGN(sg->length, 16) - 16);
|
||||
|
@ -495,6 +495,7 @@ static void devfreq_dev_release(struct device *dev)
|
||||
devfreq->profile->exit(devfreq->dev.parent);
|
||||
|
||||
mutex_destroy(&devfreq->lock);
|
||||
srcu_cleanup_notifier_head(&devfreq->transition_notifier_list);
|
||||
kfree(devfreq);
|
||||
}
|
||||
|
||||
|
@ -209,6 +209,7 @@ config FSL_DMA
|
||||
config FSL_EDMA
|
||||
tristate "Freescale eDMA engine support"
|
||||
depends on OF
|
||||
depends on HAS_IOMEM
|
||||
select DMA_ENGINE
|
||||
select DMA_VIRTUAL_CHANNELS
|
||||
help
|
||||
@ -254,6 +255,7 @@ config IMX_SDMA
|
||||
|
||||
config INTEL_IDMA64
|
||||
tristate "Intel integrated DMA 64-bit support"
|
||||
depends on HAS_IOMEM
|
||||
select DMA_ENGINE
|
||||
select DMA_VIRTUAL_CHANNELS
|
||||
help
|
||||
|
@ -3577,6 +3577,10 @@ static int __init d40_probe(struct platform_device *pdev)
|
||||
spin_lock_init(&base->lcla_pool.lock);
|
||||
|
||||
base->irq = platform_get_irq(pdev, 0);
|
||||
if (base->irq < 0) {
|
||||
ret = base->irq;
|
||||
goto destroy_cache;
|
||||
}
|
||||
|
||||
ret = request_irq(base->irq, d40_handle_interrupt, 0, D40_NAME, base);
|
||||
if (ret) {
|
||||
|
@ -291,7 +291,7 @@ static void ast_init_dram_reg(struct drm_device *dev)
|
||||
;
|
||||
} while (ast_read32(ast, 0x10100) != 0xa8);
|
||||
} else {/* AST2100/1100 */
|
||||
if (ast->chip == AST2100 || ast->chip == 2200)
|
||||
if (ast->chip == AST2100 || ast->chip == AST2200)
|
||||
dram_reg_info = ast2100_dram_table_data;
|
||||
else
|
||||
dram_reg_info = ast1100_dram_table_data;
|
||||
|
@ -744,8 +744,13 @@ static void adv7511_mode_set(struct adv7511 *adv7511,
|
||||
else
|
||||
low_refresh_rate = ADV7511_LOW_REFRESH_RATE_NONE;
|
||||
|
||||
regmap_update_bits(adv7511->regmap, 0xfb,
|
||||
0x6, low_refresh_rate << 1);
|
||||
if (adv7511->type == ADV7511)
|
||||
regmap_update_bits(adv7511->regmap, 0xfb,
|
||||
0x6, low_refresh_rate << 1);
|
||||
else
|
||||
regmap_update_bits(adv7511->regmap, 0x4a,
|
||||
0xc, low_refresh_rate << 2);
|
||||
|
||||
regmap_update_bits(adv7511->regmap, 0x17,
|
||||
0x60, (vsync_polarity << 6) | (hsync_polarity << 5));
|
||||
|
||||
|
@ -43,13 +43,12 @@ static void exynos_drm_crtc_atomic_disable(struct drm_crtc *crtc,
|
||||
if (exynos_crtc->ops->disable)
|
||||
exynos_crtc->ops->disable(exynos_crtc);
|
||||
|
||||
spin_lock_irq(&crtc->dev->event_lock);
|
||||
if (crtc->state->event && !crtc->state->active) {
|
||||
spin_lock_irq(&crtc->dev->event_lock);
|
||||
drm_crtc_send_vblank_event(crtc, crtc->state->event);
|
||||
spin_unlock_irq(&crtc->dev->event_lock);
|
||||
|
||||
crtc->state->event = NULL;
|
||||
}
|
||||
spin_unlock_irq(&crtc->dev->event_lock);
|
||||
}
|
||||
|
||||
static int exynos_crtc_atomic_check(struct drm_crtc *crtc,
|
||||
|
@ -1136,7 +1136,6 @@ static void mt_post_parse(struct mt_device *td)
|
||||
static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
|
||||
{
|
||||
struct mt_device *td = hid_get_drvdata(hdev);
|
||||
char *name;
|
||||
const char *suffix = NULL;
|
||||
struct hid_field *field = hi->report->field[0];
|
||||
int ret;
|
||||
@ -1196,15 +1195,9 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
|
||||
}
|
||||
}
|
||||
|
||||
if (suffix) {
|
||||
name = devm_kzalloc(&hi->input->dev,
|
||||
strlen(hdev->name) + strlen(suffix) + 2,
|
||||
GFP_KERNEL);
|
||||
if (name) {
|
||||
sprintf(name, "%s %s", hdev->name, suffix);
|
||||
hi->input->name = name;
|
||||
}
|
||||
}
|
||||
if (suffix)
|
||||
hi->input->name = devm_kasprintf(&hdev->dev, GFP_KERNEL,
|
||||
"%s %s", hdev->name, suffix);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -155,6 +155,7 @@ struct wacom_remote {
|
||||
struct input_dev *input;
|
||||
bool registered;
|
||||
struct wacom_battery battery;
|
||||
ktime_t active_time;
|
||||
} remotes[WACOM_MAX_REMOTES];
|
||||
};
|
||||
|
||||
|
@ -2361,6 +2361,18 @@ fail:
|
||||
return;
|
||||
}
|
||||
|
||||
static void wacom_remote_destroy_battery(struct wacom *wacom, int index)
|
||||
{
|
||||
struct wacom_remote *remote = wacom->remote;
|
||||
|
||||
if (remote->remotes[index].battery.battery) {
|
||||
devres_release_group(&wacom->hdev->dev,
|
||||
&remote->remotes[index].battery.bat_desc);
|
||||
remote->remotes[index].battery.battery = NULL;
|
||||
remote->remotes[index].active_time = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void wacom_remote_destroy_one(struct wacom *wacom, unsigned int index)
|
||||
{
|
||||
struct wacom_remote *remote = wacom->remote;
|
||||
@ -2375,9 +2387,7 @@ static void wacom_remote_destroy_one(struct wacom *wacom, unsigned int index)
|
||||
remote->remotes[i].registered = false;
|
||||
spin_unlock_irqrestore(&remote->remote_lock, flags);
|
||||
|
||||
if (remote->remotes[i].battery.battery)
|
||||
devres_release_group(&wacom->hdev->dev,
|
||||
&remote->remotes[i].battery.bat_desc);
|
||||
wacom_remote_destroy_battery(wacom, i);
|
||||
|
||||
if (remote->remotes[i].group.name)
|
||||
devres_release_group(&wacom->hdev->dev,
|
||||
@ -2385,7 +2395,6 @@ static void wacom_remote_destroy_one(struct wacom *wacom, unsigned int index)
|
||||
|
||||
remote->remotes[i].serial = 0;
|
||||
remote->remotes[i].group.name = NULL;
|
||||
remote->remotes[i].battery.battery = NULL;
|
||||
wacom->led.groups[i].select = WACOM_STATUS_UNKNOWN;
|
||||
}
|
||||
}
|
||||
@ -2470,6 +2479,9 @@ static int wacom_remote_attach_battery(struct wacom *wacom, int index)
|
||||
if (remote->remotes[index].battery.battery)
|
||||
return 0;
|
||||
|
||||
if (!remote->remotes[index].active_time)
|
||||
return 0;
|
||||
|
||||
if (wacom->led.groups[index].select == WACOM_STATUS_UNKNOWN)
|
||||
return 0;
|
||||
|
||||
@ -2485,6 +2497,7 @@ static void wacom_remote_work(struct work_struct *work)
|
||||
{
|
||||
struct wacom *wacom = container_of(work, struct wacom, remote_work);
|
||||
struct wacom_remote *remote = wacom->remote;
|
||||
ktime_t kt = ktime_get();
|
||||
struct wacom_remote_data data;
|
||||
unsigned long flags;
|
||||
unsigned int count;
|
||||
@ -2511,6 +2524,10 @@ static void wacom_remote_work(struct work_struct *work)
|
||||
serial = data.remote[i].serial;
|
||||
if (data.remote[i].connected) {
|
||||
|
||||
if (kt - remote->remotes[i].active_time > WACOM_REMOTE_BATTERY_TIMEOUT
|
||||
&& remote->remotes[i].active_time != 0)
|
||||
wacom_remote_destroy_battery(wacom, i);
|
||||
|
||||
if (remote->remotes[i].serial == serial) {
|
||||
wacom_remote_attach_battery(wacom, i);
|
||||
continue;
|
||||
|
@ -1039,6 +1039,7 @@ static int wacom_remote_irq(struct wacom_wac *wacom_wac, size_t len)
|
||||
if (index < 0 || !remote->remotes[index].registered)
|
||||
goto out;
|
||||
|
||||
remote->remotes[i].active_time = ktime_get();
|
||||
input = remote->remotes[index].input;
|
||||
|
||||
input_report_key(input, BTN_0, (data[9] & 0x01));
|
||||
|
@ -18,6 +18,7 @@
|
||||
#define WACOM_NAME_MAX 64
|
||||
#define WACOM_MAX_REMOTES 5
|
||||
#define WACOM_STATUS_UNKNOWN 255
|
||||
#define WACOM_REMOTE_BATTERY_TIMEOUT 21000000000ll
|
||||
|
||||
/* packet length for individual models */
|
||||
#define WACOM_PKGLEN_BBFUN 9
|
||||
|
@ -328,7 +328,7 @@ static ssize_t iio_debugfs_write_reg(struct file *file,
|
||||
char buf[80];
|
||||
int ret;
|
||||
|
||||
count = min_t(size_t, count, (sizeof(buf)-1));
|
||||
count = min(count, sizeof(buf) - 1);
|
||||
if (copy_from_user(buf, userbuf, count))
|
||||
return -EFAULT;
|
||||
|
||||
|
@ -2652,6 +2652,8 @@ static void isert_wait_conn(struct iscsi_conn *conn)
|
||||
isert_put_unsol_pending_cmds(conn);
|
||||
isert_wait4cmds(conn);
|
||||
isert_wait4logout(isert_conn);
|
||||
|
||||
queue_work(isert_release_wq, &isert_conn->release_work);
|
||||
}
|
||||
|
||||
static void isert_free_conn(struct iscsi_conn *conn)
|
||||
|
@ -1777,6 +1777,9 @@ static int raid1_remove_disk(struct mddev *mddev, struct md_rdev *rdev)
|
||||
int number = rdev->raid_disk;
|
||||
struct raid1_info *p = conf->mirrors + number;
|
||||
|
||||
if (unlikely(number >= conf->raid_disks))
|
||||
goto abort;
|
||||
|
||||
if (rdev != p->rdev)
|
||||
p = conf->mirrors + conf->raid_disks + number;
|
||||
|
||||
|
@ -542,7 +542,7 @@ struct dvb_frontend *ascot2e_attach(struct dvb_frontend *fe,
|
||||
priv->i2c_address, priv->i2c);
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(ascot2e_attach);
|
||||
EXPORT_SYMBOL_GPL(ascot2e_attach);
|
||||
|
||||
MODULE_DESCRIPTION("Sony ASCOT2E terr/cab tuner driver");
|
||||
MODULE_AUTHOR("info@netup.ru");
|
||||
|
@ -498,7 +498,7 @@ error_out:
|
||||
return NULL;
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL(atbm8830_attach);
|
||||
EXPORT_SYMBOL_GPL(atbm8830_attach);
|
||||
|
||||
MODULE_DESCRIPTION("AltoBeam ATBM8830/8831 GB20600 demodulator driver");
|
||||
MODULE_AUTHOR("David T. L. Wong <davidtlwong@gmail.com>");
|
||||
|
@ -891,7 +891,7 @@ error:
|
||||
au8522_release_state(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(au8522_attach);
|
||||
EXPORT_SYMBOL_GPL(au8522_attach);
|
||||
|
||||
static const struct dvb_frontend_ops au8522_ops = {
|
||||
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
||||
|
@ -835,7 +835,7 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(bcm3510_attach);
|
||||
EXPORT_SYMBOL_GPL(bcm3510_attach);
|
||||
|
||||
static const struct dvb_frontend_ops bcm3510_ops = {
|
||||
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
||||
|
@ -444,4 +444,4 @@ MODULE_DESCRIPTION("Conexant CX22700 DVB-T Demodulator driver");
|
||||
MODULE_AUTHOR("Holger Waechtler");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
EXPORT_SYMBOL(cx22700_attach);
|
||||
EXPORT_SYMBOL_GPL(cx22700_attach);
|
||||
|
@ -616,7 +616,7 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(cx22702_attach);
|
||||
EXPORT_SYMBOL_GPL(cx22702_attach);
|
||||
|
||||
static const struct dvb_frontend_ops cx22702_ops = {
|
||||
.delsys = { SYS_DVBT },
|
||||
|
@ -666,4 +666,4 @@ MODULE_DESCRIPTION("Conexant CX24110 DVB-S Demodulator driver");
|
||||
MODULE_AUTHOR("Peter Hettkamp");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
EXPORT_SYMBOL(cx24110_attach);
|
||||
EXPORT_SYMBOL_GPL(cx24110_attach);
|
||||
|
@ -602,7 +602,7 @@ error:
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(cx24113_attach);
|
||||
EXPORT_SYMBOL_GPL(cx24113_attach);
|
||||
|
||||
module_param(debug, int, 0644);
|
||||
MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
|
||||
|
@ -1151,7 +1151,7 @@ struct dvb_frontend *cx24116_attach(const struct cx24116_config *config,
|
||||
error2: kfree(state);
|
||||
error1: return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(cx24116_attach);
|
||||
EXPORT_SYMBOL_GPL(cx24116_attach);
|
||||
|
||||
/*
|
||||
* Initialise or wake up device
|
||||
|
@ -313,7 +313,7 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(cx24120_attach);
|
||||
EXPORT_SYMBOL_GPL(cx24120_attach);
|
||||
|
||||
static int cx24120_test_rom(struct cx24120_state *state)
|
||||
{
|
||||
@ -980,7 +980,9 @@ static void cx24120_set_clock_ratios(struct dvb_frontend *fe)
|
||||
cmd.arg[8] = (clock_ratios_table[idx].rate >> 8) & 0xff;
|
||||
cmd.arg[9] = (clock_ratios_table[idx].rate >> 0) & 0xff;
|
||||
|
||||
cx24120_message_send(state, &cmd);
|
||||
ret = cx24120_message_send(state, &cmd);
|
||||
if (ret != 0)
|
||||
return;
|
||||
|
||||
/* Calculate ber window rates for stat work */
|
||||
cx24120_calculate_ber_window(state, clock_ratios_table[idx].rate);
|
||||
|
@ -1105,7 +1105,7 @@ error:
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(cx24123_attach);
|
||||
EXPORT_SYMBOL_GPL(cx24123_attach);
|
||||
|
||||
static const struct dvb_frontend_ops cx24123_ops = {
|
||||
.delsys = { SYS_DVBS },
|
||||
|
@ -549,7 +549,7 @@ struct dvb_frontend *cxd2820r_attach(const struct cxd2820r_config *config,
|
||||
|
||||
return pdata.get_dvb_frontend(client);
|
||||
}
|
||||
EXPORT_SYMBOL(cxd2820r_attach);
|
||||
EXPORT_SYMBOL_GPL(cxd2820r_attach);
|
||||
|
||||
static struct dvb_frontend *cxd2820r_get_dvb_frontend(struct i2c_client *client)
|
||||
{
|
||||
|
@ -3926,14 +3926,14 @@ struct dvb_frontend *cxd2841er_attach_s(struct cxd2841er_config *cfg,
|
||||
{
|
||||
return cxd2841er_attach(cfg, i2c, SYS_DVBS);
|
||||
}
|
||||
EXPORT_SYMBOL(cxd2841er_attach_s);
|
||||
EXPORT_SYMBOL_GPL(cxd2841er_attach_s);
|
||||
|
||||
struct dvb_frontend *cxd2841er_attach_t_c(struct cxd2841er_config *cfg,
|
||||
struct i2c_adapter *i2c)
|
||||
{
|
||||
return cxd2841er_attach(cfg, i2c, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(cxd2841er_attach_t_c);
|
||||
EXPORT_SYMBOL_GPL(cxd2841er_attach_t_c);
|
||||
|
||||
static const struct dvb_frontend_ops cxd2841er_dvbs_s2_ops = {
|
||||
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
||||
|
@ -767,7 +767,7 @@ free_mem:
|
||||
fe->tuner_priv = NULL;
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(dib0070_attach);
|
||||
EXPORT_SYMBOL_GPL(dib0070_attach);
|
||||
|
||||
MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@posteo.de>");
|
||||
MODULE_DESCRIPTION("Driver for the DiBcom 0070 base-band RF Tuner");
|
||||
|
@ -2643,7 +2643,7 @@ struct dvb_frontend *dib0090_register(struct dvb_frontend *fe, struct i2c_adapte
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dib0090_register);
|
||||
EXPORT_SYMBOL_GPL(dib0090_register);
|
||||
|
||||
struct dvb_frontend *dib0090_fw_register(struct dvb_frontend *fe, struct i2c_adapter *i2c, const struct dib0090_config *config)
|
||||
{
|
||||
@ -2669,7 +2669,7 @@ free_mem:
|
||||
fe->tuner_priv = NULL;
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(dib0090_fw_register);
|
||||
EXPORT_SYMBOL_GPL(dib0090_fw_register);
|
||||
|
||||
MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@posteo.de>");
|
||||
MODULE_AUTHOR("Olivier Grenie <olivier.grenie@parrot.com>");
|
||||
|
@ -819,4 +819,4 @@ MODULE_AUTHOR(DRIVER_AUTHOR);
|
||||
MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
EXPORT_SYMBOL(dib3000mb_attach);
|
||||
EXPORT_SYMBOL_GPL(dib3000mb_attach);
|
||||
|
@ -938,7 +938,7 @@ error:
|
||||
kfree(st);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(dib3000mc_attach);
|
||||
EXPORT_SYMBOL_GPL(dib3000mc_attach);
|
||||
|
||||
static const struct dvb_frontend_ops dib3000mc_ops = {
|
||||
.delsys = { SYS_DVBT },
|
||||
|
@ -1437,7 +1437,7 @@ error:
|
||||
kfree(st);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(dib7000m_attach);
|
||||
EXPORT_SYMBOL_GPL(dib7000m_attach);
|
||||
|
||||
static const struct dvb_frontend_ops dib7000m_ops = {
|
||||
.delsys = { SYS_DVBT },
|
||||
|
@ -500,7 +500,7 @@ static int dib7000p_update_pll(struct dvb_frontend *fe, struct dibx000_bandwidth
|
||||
prediv = reg_1856 & 0x3f;
|
||||
loopdiv = (reg_1856 >> 6) & 0x3f;
|
||||
|
||||
if ((bw != NULL) && (bw->pll_prediv != prediv || bw->pll_ratio != loopdiv)) {
|
||||
if (loopdiv && bw && (bw->pll_prediv != prediv || bw->pll_ratio != loopdiv)) {
|
||||
dprintk("Updating pll (prediv: old = %d new = %d ; loopdiv : old = %d new = %d)\n", prediv, bw->pll_prediv, loopdiv, bw->pll_ratio);
|
||||
reg_1856 &= 0xf000;
|
||||
reg_1857 = dib7000p_read_word(state, 1857);
|
||||
@ -2818,7 +2818,7 @@ void *dib7000p_attach(struct dib7000p_ops *ops)
|
||||
|
||||
return ops;
|
||||
}
|
||||
EXPORT_SYMBOL(dib7000p_attach);
|
||||
EXPORT_SYMBOL_GPL(dib7000p_attach);
|
||||
|
||||
static const struct dvb_frontend_ops dib7000p_ops = {
|
||||
.delsys = { SYS_DVBT },
|
||||
|
@ -4530,7 +4530,7 @@ void *dib8000_attach(struct dib8000_ops *ops)
|
||||
|
||||
return ops;
|
||||
}
|
||||
EXPORT_SYMBOL(dib8000_attach);
|
||||
EXPORT_SYMBOL_GPL(dib8000_attach);
|
||||
|
||||
MODULE_AUTHOR("Olivier Grenie <Olivier.Grenie@parrot.com, Patrick Boettcher <patrick.boettcher@posteo.de>");
|
||||
MODULE_DESCRIPTION("Driver for the DiBcom 8000 ISDB-T demodulator");
|
||||
|
@ -2547,7 +2547,7 @@ error:
|
||||
kfree(st);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(dib9000_attach);
|
||||
EXPORT_SYMBOL_GPL(dib9000_attach);
|
||||
|
||||
static const struct dvb_frontend_ops dib9000_ops = {
|
||||
.delsys = { SYS_DVBT },
|
||||
|
@ -12364,7 +12364,7 @@ error:
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(drx39xxj_attach);
|
||||
EXPORT_SYMBOL_GPL(drx39xxj_attach);
|
||||
|
||||
static const struct dvb_frontend_ops drx39xxj_ops = {
|
||||
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
||||
|
@ -2981,7 +2981,7 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(drxd_attach);
|
||||
EXPORT_SYMBOL_GPL(drxd_attach);
|
||||
|
||||
MODULE_DESCRIPTION("DRXD driver");
|
||||
MODULE_AUTHOR("Micronas");
|
||||
|
@ -6873,7 +6873,7 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(drxk_attach);
|
||||
EXPORT_SYMBOL_GPL(drxk_attach);
|
||||
|
||||
MODULE_DESCRIPTION("DRX-K driver");
|
||||
MODULE_AUTHOR("Ralph Metzler");
|
||||
|
@ -879,7 +879,7 @@ error3:
|
||||
error2:
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(ds3000_attach);
|
||||
EXPORT_SYMBOL_GPL(ds3000_attach);
|
||||
|
||||
static int ds3000_set_carrier_offset(struct dvb_frontend *fe,
|
||||
s32 carrier_offset_khz)
|
||||
|
@ -825,7 +825,7 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
|
||||
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(dvb_pll_attach);
|
||||
EXPORT_SYMBOL_GPL(dvb_pll_attach);
|
||||
|
||||
MODULE_DESCRIPTION("dvb pll library");
|
||||
MODULE_AUTHOR("Gerd Knorr");
|
||||
|
@ -309,7 +309,7 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(ec100_attach);
|
||||
EXPORT_SYMBOL_GPL(ec100_attach);
|
||||
|
||||
static const struct dvb_frontend_ops ec100_ops = {
|
||||
.delsys = { SYS_DVBT },
|
||||
|
@ -1007,7 +1007,7 @@ struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe,
|
||||
priv->i2c_address, priv->i2c);
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(helene_attach_s);
|
||||
EXPORT_SYMBOL_GPL(helene_attach_s);
|
||||
|
||||
struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
|
||||
const struct helene_config *config,
|
||||
@ -1043,7 +1043,7 @@ struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
|
||||
priv->i2c_address, priv->i2c);
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(helene_attach);
|
||||
EXPORT_SYMBOL_GPL(helene_attach);
|
||||
|
||||
MODULE_DESCRIPTION("Sony HELENE Sat/Ter tuner driver");
|
||||
MODULE_AUTHOR("Abylay Ospan <aospan@netup.ru>");
|
||||
|
@ -404,7 +404,7 @@ struct dvb_frontend *horus3a_attach(struct dvb_frontend *fe,
|
||||
priv->i2c_address, priv->i2c);
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(horus3a_attach);
|
||||
EXPORT_SYMBOL_GPL(horus3a_attach);
|
||||
|
||||
MODULE_DESCRIPTION("Sony HORUS3A satellite tuner driver");
|
||||
MODULE_AUTHOR("Sergey Kozlov <serjk@netup.ru>");
|
||||
|
@ -155,7 +155,7 @@ struct dvb_frontend *isl6405_attach(struct dvb_frontend *fe, struct i2c_adapter
|
||||
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(isl6405_attach);
|
||||
EXPORT_SYMBOL_GPL(isl6405_attach);
|
||||
|
||||
MODULE_DESCRIPTION("Driver for lnb supply and control ic isl6405");
|
||||
MODULE_AUTHOR("Hartmut Hackmann & Oliver Endriss");
|
||||
|
@ -227,7 +227,7 @@ struct dvb_frontend *isl6421_attach(struct dvb_frontend *fe, struct i2c_adapter
|
||||
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(isl6421_attach);
|
||||
EXPORT_SYMBOL_GPL(isl6421_attach);
|
||||
|
||||
MODULE_DESCRIPTION("Driver for lnb supply and control ic isl6421");
|
||||
MODULE_AUTHOR("Andrew de Quincey & Oliver Endriss");
|
||||
|
@ -301,7 +301,7 @@ exit:
|
||||
fe->sec_priv = NULL;
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(isl6423_attach);
|
||||
EXPORT_SYMBOL_GPL(isl6423_attach);
|
||||
|
||||
MODULE_DESCRIPTION("ISL6423 SEC");
|
||||
MODULE_AUTHOR("Manu Abraham");
|
||||
|
@ -399,7 +399,7 @@ struct dvb_frontend *itd1000_attach(struct dvb_frontend *fe, struct i2c_adapter
|
||||
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(itd1000_attach);
|
||||
EXPORT_SYMBOL_GPL(itd1000_attach);
|
||||
|
||||
MODULE_AUTHOR("Patrick Boettcher <pb@linuxtv.org>");
|
||||
MODULE_DESCRIPTION("Integrant ITD1000 driver");
|
||||
|
@ -311,7 +311,7 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(ix2505v_attach);
|
||||
EXPORT_SYMBOL_GPL(ix2505v_attach);
|
||||
|
||||
module_param_named(debug, ix2505v_debug, int, 0644);
|
||||
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
|
||||
|
@ -606,4 +606,4 @@ MODULE_DESCRIPTION("LSI L64781 DVB-T Demodulator driver");
|
||||
MODULE_AUTHOR("Holger Waechtler, Marko Kohtala");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
EXPORT_SYMBOL(l64781_attach);
|
||||
EXPORT_SYMBOL_GPL(l64781_attach);
|
||||
|
@ -1450,7 +1450,7 @@ struct dvb_frontend *lg2160_attach(const struct lg2160_config *config,
|
||||
|
||||
return &state->frontend;
|
||||
}
|
||||
EXPORT_SYMBOL(lg2160_attach);
|
||||
EXPORT_SYMBOL_GPL(lg2160_attach);
|
||||
|
||||
MODULE_DESCRIPTION("LG Electronics LG216x ATSC/MH Demodulator Driver");
|
||||
MODULE_AUTHOR("Michael Krufky <mkrufky@linuxtv.org>");
|
||||
|
@ -1158,7 +1158,7 @@ fail:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(lgdt3305_attach);
|
||||
EXPORT_SYMBOL_GPL(lgdt3305_attach);
|
||||
|
||||
static const struct dvb_frontend_ops lgdt3304_ops = {
|
||||
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
||||
|
@ -1846,7 +1846,7 @@ fail:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(lgdt3306a_attach);
|
||||
EXPORT_SYMBOL_GPL(lgdt3306a_attach);
|
||||
|
||||
#ifdef DBG_DUMP
|
||||
|
||||
|
@ -1053,7 +1053,7 @@ error_out:
|
||||
return NULL;
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL(lgs8gxx_attach);
|
||||
EXPORT_SYMBOL_GPL(lgs8gxx_attach);
|
||||
|
||||
MODULE_DESCRIPTION("Legend Silicon LGS8913/LGS8GXX DMB-TH demodulator driver");
|
||||
MODULE_AUTHOR("David T. L. Wong <davidtlwong@gmail.com>");
|
||||
|
@ -182,7 +182,7 @@ struct dvb_frontend *lnbh25_attach(struct dvb_frontend *fe,
|
||||
__func__, priv->i2c_address);
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(lnbh25_attach);
|
||||
EXPORT_SYMBOL_GPL(lnbh25_attach);
|
||||
|
||||
MODULE_DESCRIPTION("ST LNBH25 driver");
|
||||
MODULE_AUTHOR("info@netup.ru");
|
||||
|
@ -169,7 +169,7 @@ struct dvb_frontend *lnbh24_attach(struct dvb_frontend *fe,
|
||||
return lnbx2x_attach(fe, i2c, override_set, override_clear,
|
||||
i2c_addr, LNBH24_TTX);
|
||||
}
|
||||
EXPORT_SYMBOL(lnbh24_attach);
|
||||
EXPORT_SYMBOL_GPL(lnbh24_attach);
|
||||
|
||||
struct dvb_frontend *lnbp21_attach(struct dvb_frontend *fe,
|
||||
struct i2c_adapter *i2c, u8 override_set,
|
||||
@ -178,7 +178,7 @@ struct dvb_frontend *lnbp21_attach(struct dvb_frontend *fe,
|
||||
return lnbx2x_attach(fe, i2c, override_set, override_clear,
|
||||
0x08, LNBP21_ISEL);
|
||||
}
|
||||
EXPORT_SYMBOL(lnbp21_attach);
|
||||
EXPORT_SYMBOL_GPL(lnbp21_attach);
|
||||
|
||||
MODULE_DESCRIPTION("Driver for lnb supply and control ic lnbp21, lnbh24");
|
||||
MODULE_AUTHOR("Oliver Endriss, Igor M. Liplianin");
|
||||
|
@ -139,7 +139,7 @@ struct dvb_frontend *lnbp22_attach(struct dvb_frontend *fe,
|
||||
|
||||
return fe;
|
||||
}
|
||||
EXPORT_SYMBOL(lnbp22_attach);
|
||||
EXPORT_SYMBOL_GPL(lnbp22_attach);
|
||||
|
||||
MODULE_DESCRIPTION("Driver for lnb supply and control ic lnbp22");
|
||||
MODULE_AUTHOR("Dominik Kuhlen");
|
||||
|
@ -1293,7 +1293,7 @@ struct dvb_frontend *m88ds3103_attach(const struct m88ds3103_config *cfg,
|
||||
*tuner_i2c_adapter = pdata.get_i2c_adapter(client);
|
||||
return pdata.get_dvb_frontend(client);
|
||||
}
|
||||
EXPORT_SYMBOL(m88ds3103_attach);
|
||||
EXPORT_SYMBOL_GPL(m88ds3103_attach);
|
||||
|
||||
static const struct dvb_frontend_ops m88ds3103_ops = {
|
||||
.delsys = {SYS_DVBS, SYS_DVBS2},
|
||||
|
@ -816,7 +816,7 @@ error:
|
||||
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(m88rs2000_attach);
|
||||
EXPORT_SYMBOL_GPL(m88rs2000_attach);
|
||||
|
||||
MODULE_DESCRIPTION("M88RS2000 DVB-S Demodulator driver");
|
||||
MODULE_AUTHOR("Malcolm Priestley tvboxspy@gmail.com");
|
||||
|
@ -1865,6 +1865,6 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(mb86a16_attach);
|
||||
EXPORT_SYMBOL_GPL(mb86a16_attach);
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Manu Abraham");
|
||||
|
@ -2106,7 +2106,7 @@ error:
|
||||
kfree(state);
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(mb86a20s_attach);
|
||||
EXPORT_SYMBOL_GPL(mb86a20s_attach);
|
||||
|
||||
static const struct dvb_frontend_ops mb86a20s_ops = {
|
||||
.delsys = { SYS_ISDBT },
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user