]> Git Repo - J-linux.git/commitdiff
Merge tag 'usb-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
authorLinus Torvalds <[email protected]>
Thu, 18 Jan 2024 19:43:55 +0000 (11:43 -0800)
committerLinus Torvalds <[email protected]>
Thu, 18 Jan 2024 19:43:55 +0000 (11:43 -0800)
Pull USB / Thunderbolt updates from Greg KH:
 "Here is the big set of USB and Thunderbolt changes for 6.8-rc1.
  Included in here are the following:

   - Thunderbolt subsystem and driver updates for USB 4 hardware and
     issues reported by real devices

   - xhci driver updates

   - dwc3 driver updates

   - uvc_video gadget driver updates

   - typec driver updates

   - gadget string functions cleaned up

   - other small changes

  All of these have been in the linux-next tree for a while with no
  reported issues"

* tag 'usb-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (169 commits)
  usb: typec: tipd: fix use of device-specific init function
  usb: typec: tipd: Separate reset for TPS6598x
  usb: mon: Fix atomicity violation in mon_bin_vma_fault
  usb: gadget: uvc: Remove nested locking
  usb: gadget: uvc: Fix use are free during STREAMOFF
  usb: typec: class: fix typec_altmode_put_partner to put plugs
  dt-bindings: usb: dwc3: Limit num-hc-interrupters definition
  dt-bindings: usb: xhci: Add num-hc-interrupters definition
  xhci: add support to allocate several interrupters
  USB: core: Use device_driver directly in struct usb_driver and usb_device_driver
  arm64: dts: mediatek: mt8195: Add 'rx-fifo-depth' for cherry
  usb: xhci-mtk: fix a short packet issue of gen1 isoc-in transfer
  dt-bindings: usb: mtk-xhci: add a property for Gen1 isoc-in transfer issue
  arm64: dts: qcom: msm8996: Remove PNoC clock from MSS
  arm64: dts: qcom: msm8996: Remove AGGRE2 clock from SLPI
  arm64: dts: qcom: msm8998: Remove AGGRE2 clock from SLPI
  arm64: dts: qcom: msm8939: Drop RPM bus clocks
  arm64: dts: qcom: sdm630: Drop RPM bus clocks
  arm64: dts: qcom: qcs404: Drop RPM bus clocks
  arm64: dts: qcom: msm8996: Drop RPM bus clocks
  ...

13 files changed:
1  2 
Documentation/admin-guide/kernel-parameters.txt
arch/arm64/boot/dts/mediatek/mt8195-cherry.dtsi
arch/arm64/boot/dts/qcom/msm8916.dtsi
arch/arm64/boot/dts/qcom/msm8939.dtsi
arch/arm64/boot/dts/qcom/msm8996.dtsi
arch/arm64/boot/dts/qcom/msm8998.dtsi
arch/arm64/boot/dts/qcom/qcs404.dtsi
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts
drivers/bluetooth/btusb.c
drivers/tty/tty_io.c
drivers/usb/fotg210/fotg210-hcd.c
drivers/usb/gadget/function/f_fs.c
drivers/usb/typec/mux/Kconfig

index 4ef41092bb668e41c0fb21bb6d4bb969430c518e,0a6a4b7f7a3b9f11df0ced5cdf642b3d7021d6ce..2e76c3476e2ab5197a9ac73c065b132451212aca
@@@ -1,14 -1,3 +1,14 @@@
 +      accept_memory=  [MM]
 +                      Format: { eager | lazy }
 +                      default: lazy
 +                      By default, unaccepted memory is accepted lazily to
 +                      avoid prolonged boot times. The lazy option will add
 +                      some runtime overhead until all memory is eventually
 +                      accepted. In most cases the overhead is negligible.
 +                      For some workloads or for debugging purposes
 +                      accept_memory=eager can be used to accept all memory
 +                      at once during boot.
 +
        acpi=           [HW,ACPI,X86,ARM64,RISCV64]
                        Advanced Configuration and Power Interface
                        Format: { force | on | off | strict | noirq | rsdt |
                        buddy allocator. Bigger value increase the probability
                        of catching random memory corruption, but reduce the
                        amount of memory for normal system use. The maximum
 -                      possible value is MAX_ORDER/2.  Setting this parameter
 -                      to 1 or 2 should be enough to identify most random
 -                      memory corruption problems caused by bugs in kernel or
 -                      driver code when a CPU writes to (or reads from) a
 -                      random memory location. Note that there exists a class
 -                      of memory corruptions problems caused by buggy H/W or
 -                      F/W or by drivers badly programming DMA (basically when
 -                      memory is written at bus level and the CPU MMU is
 -                      bypassed) which are not detectable by
 -                      CONFIG_DEBUG_PAGEALLOC, hence this option will not help
 -                      tracking down these problems.
 +                      possible value is MAX_PAGE_ORDER/2.  Setting this
 +                      parameter to 1 or 2 should be enough to identify most
 +                      random memory corruption problems caused by bugs in
 +                      kernel or driver code when a CPU writes to (or reads
 +                      from) a random memory location. Note that there exists
 +                      a class of memory corruptions problems caused by buggy
 +                      H/W or F/W or by drivers badly programming DMA
 +                      (basically when memory is written at bus level and the
 +                      CPU MMU is bypassed) which are not detectable by
 +                      CONFIG_DEBUG_PAGEALLOC, hence this option will not
 +                      help tracking down these problems.
  
        debug_pagealloc=
                        [KNL] When CONFIG_DEBUG_PAGEALLOC is set, this parameter
                        between unregistering the boot console and initializing
                        the real console.
  
 -      keepinitrd      [HW,ARM]
 +      keepinitrd      [HW,ARM] See retain_initrd.
  
        kernelcore=     [KNL,X86,IA-64,PPC]
                        Format: nn[KMGTPE] | nn% | "mirror"
                        vulnerability. System may allow data leaks with this
                        option.
  
 -      no-steal-acc    [X86,PV_OPS,ARM64,PPC/PSERIES] Disable paravirtualized
 -                      steal time accounting. steal time is computed, but
 -                      won't influence scheduler behaviour
 +      no-steal-acc    [X86,PV_OPS,ARM64,PPC/PSERIES,RISCV] Disable
 +                      paravirtualized steal time accounting. steal time is
 +                      computed, but won't influence scheduler behaviour
  
        nosync          [HW,M68K] Disables sync negotiation for all devices.
  
                        [KNL] Minimal page reporting order
                        Format: <integer>
                        Adjust the minimal page reporting order. The page
 -                      reporting is disabled when it exceeds MAX_ORDER.
 +                      reporting is disabled when it exceeds MAX_PAGE_ORDER.
  
        panic=          [KNL] Kernel behaviour on panic: delay <timeout>
                        timeout > 0: seconds before rebooting
                        Dump ftrace buffer after reporting RCU CPU
                        stall warning.
  
 +      rcupdate.rcu_cpu_stall_notifiers= [KNL]
 +                      Provide RCU CPU stall notifiers, but see the
 +                      warnings in the RCU_CPU_STALL_NOTIFIER Kconfig
 +                      option's help text.  TL;DR:  You almost certainly
 +                      do not want rcupdate.rcu_cpu_stall_notifiers.
 +
        rcupdate.rcu_cpu_stall_suppress= [KNL]
                        Suppress RCU CPU stall warning messages.
  
                        print every Nth verbose statement, where N is the value
                        specified.
  
 +      regulator_ignore_unused
 +                      [REGULATOR]
 +                      Prevents regulator framework from disabling regulators
 +                      that are unused, due no driver claiming them. This may
 +                      be useful for debug and development, but should not be
 +                      needed on a platform with proper driver support.
 +
        relax_domain_level=
                        [KNL, SMP] Set scheduler's default relax_domain_level.
                        See Documentation/admin-guide/cgroup-v1/cpusets.rst.
                        Useful for devices that are detected asynchronously
                        (e.g. USB and MMC devices).
  
 -      retain_initrd   [RAM] Keep initrd memory after extraction
 +      retain_initrd   [RAM] Keep initrd memory after extraction. After boot, it will
 +                      be accessible via /sys/firmware/initrd.
  
        retbleed=       [X86] Control mitigation of RETBleed (Arbitrary
                        Speculative Code Execution with Return Instructions)
                                        pause after every control message);
                                o = USB_QUIRK_HUB_SLOW_RESET (Hub needs extra
                                        delay after resetting its port);
+                               p = USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT
+                                       (Reduce timeout of the SET_ADDRESS
+                                       request from 5000 ms to 500 ms);
                        Example: quirks=0781:5580:bk,0a5c:5834:gij
  
        usbhid.mousepoll=
index bbdcd441c049d149f44534c4ee3ffd553d5d4646,d416fd3f291716e2922671bf239cda2643c51afd..3c6079edda190d3606ff5f1f36bc3ad10ff99019
                regulator-boot-on;
        };
  
 +      /* Murata NCP03WF104F05RL */
 +      tboard_thermistor1: thermal-sensor-t1 {
 +              compatible = "generic-adc-thermal";
 +              #thermal-sensor-cells = <0>;
 +              io-channels = <&auxadc 0>;
 +              io-channel-names = "sensor-channel";
 +              temperature-lookup-table = <    (-10000) 1553
 +                                              (-5000) 1485
 +                                              0 1406
 +                                              5000 1317
 +                                              10000 1219
 +                                              15000 1115
 +                                              20000 1007
 +                                              25000 900
 +                                              30000 796
 +                                              35000 697
 +                                              40000 605
 +                                              45000 523
 +                                              50000 449
 +                                              55000 384
 +                                              60000 327
 +                                              65000 279
 +                                              70000 237
 +                                              75000 202
 +                                              80000 172
 +                                              85000 147
 +                                              90000 125
 +                                              95000 107
 +                                              100000 92
 +                                              105000 79
 +                                              110000 68
 +                                              115000 59
 +                                              120000 51
 +                                              125000 44>;
 +      };
 +
 +      tboard_thermistor2: thermal-sensor-t2 {
 +              compatible = "generic-adc-thermal";
 +              #thermal-sensor-cells = <0>;
 +              io-channels = <&auxadc 1>;
 +              io-channel-names = "sensor-channel";
 +              temperature-lookup-table = <    (-10000) 1553
 +                                              (-5000) 1485
 +                                              0 1406
 +                                              5000 1317
 +                                              10000 1219
 +                                              15000 1115
 +                                              20000 1007
 +                                              25000 900
 +                                              30000 796
 +                                              35000 697
 +                                              40000 605
 +                                              45000 523
 +                                              50000 449
 +                                              55000 384
 +                                              60000 327
 +                                              65000 279
 +                                              70000 237
 +                                              75000 202
 +                                              80000 172
 +                                              85000 147
 +                                              90000 125
 +                                              95000 107
 +                                              100000 92
 +                                              105000 79
 +                                              110000 68
 +                                              115000 59
 +                                              120000 51
 +                                              125000 44>;
 +      };
 +
        usb_vbus: regulator-5v0-usb-vbus {
                compatible = "regulator-fixed";
                regulator-name = "usb-vbus";
        memory-region = <&afe_mem>;
  };
  
 +&auxadc {
 +      status = "okay";
 +};
 +
  &dp_intf0 {
        status = "okay";
  
        };
  };
  
 +&mfg0 {
 +      domain-supply = <&mt6315_7_vbuck1>;
 +};
 +
 +&mfg1 {
 +      domain-supply = <&mt6359_vsram_others_ldo_reg>;
 +};
 +
  &mmc0 {
        status = "okay";
  
  
  /* for GPU SRAM */
  &mt6359_vsram_others_ldo_reg {
 -      regulator-always-on;
        regulator-min-microvolt = <750000>;
        regulator-max-microvolt = <750000>;
  };
                                regulator-enable-ramp-delay = <256>;
                                regulator-ramp-delay = <6250>;
                                regulator-allowed-modes = <0 1 2>;
 -                              regulator-always-on;
 +                      };
 +              };
 +      };
 +};
 +
 +&thermal_zones {
 +      soc-area-thermal {
 +              polling-delay = <1000>;
 +              polling-delay-passive = <250>;
 +              thermal-sensors = <&tboard_thermistor1>;
 +
 +              trips {
 +                      trip-crit {
 +                              temperature = <84000>;
 +                              hysteresis = <1000>;
 +                              type = "critical";
 +                      };
 +              };
 +      };
 +
 +      pmic-area-thermal {
 +              polling-delay = <1000>;
 +              polling-delay-passive = <0>;
 +              thermal-sensors = <&tboard_thermistor2>;
 +
 +              trips {
 +                      trip-crit {
 +                              temperature = <84000>;
 +                              hysteresis = <1000>;
 +                              type = "critical";
                        };
                };
        };
  &xhci0 {
        status = "okay";
  
+       rx-fifo-depth = <3072>;
        vusb33-supply = <&mt6359_vusb_ldo_reg>;
        vbus-supply = <&usb_vbus>;
  };
  &xhci1 {
        status = "okay";
  
+       rx-fifo-depth = <3072>;
        vusb33-supply = <&mt6359_vusb_ldo_reg>;
        vbus-supply = <&usb_vbus>;
  };
index 7f8327b0dbdb41d0a8baf3a34b0c6d0c97a60b8e,f7e00276b15a46fef9d104ff2776002a52838208..e423c57ddd41eceefaea483aaa343aa9b9bd1ee7
@@@ -10,7 -10,6 +10,7 @@@
  #include <dt-bindings/interrupt-controller/arm-gic.h>
  #include <dt-bindings/power/qcom-rpmpd.h>
  #include <dt-bindings/reset/qcom,gcc-msm8916.h>
 +#include <dt-bindings/soc/qcom,apr.h>
  #include <dt-bindings/thermal/thermal.h>
  
  / {
                        compatible = "qcom,msm8916-bimc";
                        reg = <0x00400000 0x62000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
-                                <&rpmcc RPM_SMD_BIMC_A_CLK>;
                };
  
                tsens: thermal-sensor@4a9000 {
                        compatible = "qcom,msm8916-pcnoc";
                        reg = <0x00500000 0x11000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
-                                <&rpmcc RPM_SMD_PCNOC_A_CLK>;
                };
  
                snoc: interconnect@580000 {
                        compatible = "qcom,msm8916-snoc";
                        reg = <0x00580000 0x14000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
-                                <&rpmcc RPM_SMD_SNOC_A_CLK>;
                };
  
                stm: stm@802000 {
  
                                label = "hexagon";
  
 +                              apr: apr {
 +                                      compatible = "qcom,apr-v2";
 +                                      qcom,smd-channels = "apr_audio_svc";
 +                                      qcom,domain = <APR_DOMAIN_ADSP>;
 +                                      #address-cells = <1>;
 +                                      #size-cells = <0>;
 +                                      status = "disabled";
 +
 +                                      q6core: service@3 {
 +                                              compatible = "qcom,q6core";
 +                                              reg = <APR_SVC_ADSP_CORE>;
 +                                      };
 +
 +                                      q6afe: service@4 {
 +                                              compatible = "qcom,q6afe";
 +                                              reg = <APR_SVC_AFE>;
 +
 +                                              q6afedai: dais {
 +                                                      compatible = "qcom,q6afe-dais";
 +                                                      #address-cells = <1>;
 +                                                      #size-cells = <0>;
 +                                                      #sound-dai-cells = <1>;
 +                                              };
 +                                      };
 +
 +                                      q6asm: service@7 {
 +                                              compatible = "qcom,q6asm";
 +                                              reg = <APR_SVC_ASM>;
 +
 +                                              q6asmdai: dais {
 +                                                      compatible = "qcom,q6asm-dais";
 +                                                      #address-cells = <1>;
 +                                                      #size-cells = <0>;
 +                                                      #sound-dai-cells = <1>;
 +                                              };
 +                                      };
 +
 +                                      q6adm: service@8 {
 +                                              compatible = "qcom,q6adm";
 +                                              reg = <APR_SVC_ADM>;
 +
 +                                              q6routing: routing {
 +                                                      compatible = "qcom,q6adm-routing";
 +                                                      #sound-dai-cells = <0>;
 +                                              };
 +                                      };
 +                              };
 +
                                fastrpc {
                                        compatible = "qcom,fastrpc";
                                        qcom,smd-channels = "fastrpcsmd-apps-dsp";
                        clock-names = "bam_clk";
                        #dma-cells = <1>;
                        qcom,ee = <0>;
 +                      qcom,controlled-remotely;
                };
  
                blsp_uart1: serial@78af000 {
index 29f6bd9df2eb18fb7ea5049a76e459f8af76bf2e,b2e1f2f6c620ced38469fa449c16994c11c7f721..82d85ff61045d31c13b6b5874acd315399a8886e
@@@ -10,7 -10,6 +10,7 @@@
  #include <dt-bindings/interrupt-controller/arm-gic.h>
  #include <dt-bindings/power/qcom-rpmpd.h>
  #include <dt-bindings/reset/qcom,gcc-msm8939.h>
 +#include <dt-bindings/soc/qcom,apr.h>
  #include <dt-bindings/thermal/thermal.h>
  
  / {
                bimc: interconnect@400000 {
                        compatible = "qcom,msm8939-bimc";
                        reg = <0x00400000 0x62000>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
-                                <&rpmcc RPM_SMD_BIMC_A_CLK>;
                        #interconnect-cells = <1>;
                };
  
                pcnoc: interconnect@500000 {
                        compatible = "qcom,msm8939-pcnoc";
                        reg = <0x00500000 0x11000>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
-                                <&rpmcc RPM_SMD_PCNOC_A_CLK>;
                        #interconnect-cells = <1>;
                };
  
                snoc: interconnect@580000 {
                        compatible = "qcom,msm8939-snoc";
                        reg = <0x00580000 0x14080>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
-                                <&rpmcc RPM_SMD_SNOC_A_CLK>;
                        #interconnect-cells = <1>;
  
                        snoc_mm: interconnect-snoc {
                                compatible = "qcom,msm8939-snoc-mm";
-                               clock-names = "bus", "bus_a";
-                               clocks = <&rpmcc RPM_SMD_SYSMMNOC_CLK>,
-                                        <&rpmcc RPM_SMD_SYSMMNOC_A_CLK>;
                                #interconnect-cells = <1>;
                        };
                };
                        #interrupt-cells = <4>;
                };
  
 +              bam_dmux_dma: dma-controller@4044000 {
 +                      compatible = "qcom,bam-v1.7.0";
 +                      reg = <0x04044000 0x19000>;
 +                      interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
 +                      #dma-cells = <1>;
 +                      qcom,ee = <0>;
 +
 +                      num-channels = <6>;
 +                      qcom,num-ees = <1>;
 +                      qcom,powered-remotely;
 +
 +                      status = "disabled";
 +              };
 +
                mpss: remoteproc@4080000 {
                        compatible = "qcom,msm8916-mss-pil";
                        reg = <0x04080000 0x100>, <0x04020000 0x040>;
                        qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
                        status = "disabled";
  
 +                      bam_dmux: bam-dmux {
 +                              compatible = "qcom,bam-dmux";
 +
 +                              interrupt-parent = <&hexagon_smsm>;
 +                              interrupts = <1 IRQ_TYPE_EDGE_BOTH>, <11 IRQ_TYPE_EDGE_BOTH>;
 +                              interrupt-names = "pc", "pc-ack";
 +
 +                              qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 11>;
 +                              qcom,smem-state-names = "pc", "pc-ack";
 +
 +                              dmas = <&bam_dmux_dma 4>, <&bam_dmux_dma 5>;
 +                              dma-names = "tx", "rx";
 +
 +                              status = "disabled";
 +                      };
 +
                        mba {
                                memory-region = <&mba_mem>;
                        };
                                qcom,remote-pid = <1>;
  
                                label = "hexagon";
 +
 +                              apr: apr {
 +                                      compatible = "qcom,apr-v2";
 +                                      qcom,smd-channels = "apr_audio_svc";
 +                                      qcom,domain = <APR_DOMAIN_ADSP>;
 +                                      #address-cells = <1>;
 +                                      #size-cells = <0>;
 +                                      status = "disabled";
 +
 +                                      q6core: service@3 {
 +                                              compatible = "qcom,q6core";
 +                                              reg = <APR_SVC_ADSP_CORE>;
 +                                      };
 +
 +                                      q6afe: service@4 {
 +                                              compatible = "qcom,q6afe";
 +                                              reg = <APR_SVC_AFE>;
 +
 +                                              q6afedai: dais {
 +                                                      compatible = "qcom,q6afe-dais";
 +                                                      #address-cells = <1>;
 +                                                      #size-cells = <0>;
 +                                                      #sound-dai-cells = <1>;
 +                                              };
 +                                      };
 +
 +                                      q6asm: service@7 {
 +                                              compatible = "qcom,q6asm";
 +                                              reg = <APR_SVC_ASM>;
 +
 +                                              q6asmdai: dais {
 +                                                      compatible = "qcom,q6asm-dais";
 +                                                      #address-cells = <1>;
 +                                                      #size-cells = <0>;
 +                                                      #sound-dai-cells = <1>;
 +                                              };
 +                                      };
 +
 +                                      q6adm: service@8 {
 +                                              compatible = "qcom,q6adm";
 +                                              reg = <APR_SVC_ADM>;
 +
 +                                              q6routing: routing {
 +                                                      compatible = "qcom,q6adm-routing";
 +                                                      #sound-dai-cells = <0>;
 +                                              };
 +                                      };
 +                              };
                        };
                };
  
                        clock-names = "bam_clk";
                        #dma-cells = <1>;
                        qcom,ee = <0>;
 +                      qcom,controlled-remotely;
                };
  
                blsp_uart1: serial@78af000 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
 +                      /* Necessary because firmware does not configure this correctly */
 +                      clock-frequency = <19200000>;
  
                        frame@b121000 {
                                reg = <0x0b121000 0x1000>,
index 8c6a7efa90c43efb17bc5725a4d7e1156078761a,65cb3913b619783e89e415c58804c970d4cfdb2d..8d41ed261adfbfc99e15c07755f54d8f4cf5cc80
                reg = <0x0 0x80000000 0x0 0x0>;
        };
  
 +      etm {
 +              compatible = "qcom,coresight-remote-etm";
 +
 +              out-ports {
 +                      port {
 +                              modem_etm_out_funnel_in2: endpoint {
 +                                      remote-endpoint =
 +                                        <&funnel_in2_in_modem_etm>;
 +                              };
 +                      };
 +              };
 +      };
 +
 +      mpm: interrupt-controller {
 +              compatible = "qcom,mpm";
 +              qcom,rpm-msg-ram = <&apss_mpm>;
 +              interrupts = <GIC_SPI 171 IRQ_TYPE_EDGE_RISING>;
 +              mboxes = <&apcs_glb 1>;
 +              interrupt-controller;
 +              #interrupt-cells = <2>;
 +              #power-domain-cells = <0>;
 +              interrupt-parent = <&intc>;
 +              qcom,mpm-pin-count = <96>;
 +              qcom,mpm-pin-map = <2 184>,  /* TSENS1 upper_lower_int */
 +                                 <52 243>, /* DWC3_PRI ss_phy_irq */
 +                                 <79 347>, /* DWC3_PRI hs_phy_irq */
 +                                 <80 352>, /* DWC3_SEC hs_phy_irq */
 +                                 <81 347>, /* QUSB2_PHY_PRI DP+DM */
 +                                 <82 352>, /* QUSB2_PHY_SEC DP+DM */
 +                                 <87 326>; /* SPMI */
 +      };
 +
        psci {
                compatible = "arm,psci-1.0";
                method = "smc";
                };
  
                rpm_msg_ram: sram@68000 {
 -                      compatible = "qcom,rpm-msg-ram";
 +                      compatible = "qcom,rpm-msg-ram", "mmio-sram";
                        reg = <0x00068000 0x6000>;
 +                      #address-cells = <1>;
 +                      #size-cells = <1>;
 +                      ranges = <0 0x00068000 0x7000>;
 +
 +                      apss_mpm: sram@1b8 {
 +                              reg = <0x1b8 0x48>;
 +                      };
                };
  
                qfprom@74000 {
                                 <&pciephy_0>,
                                 <&pciephy_1>,
                                 <&pciephy_2>,
 -                               <&ssusb_phy_0>,
 -                               <&ufsphy_lane 0>,
 -                               <&ufsphy_lane 1>,
 -                               <&ufsphy_lane 2>;
 +                               <&usb3phy>,
 +                               <&ufsphy 0>,
 +                               <&ufsphy 1>,
 +                               <&ufsphy 2>;
                        clock-names = "cxo",
                                      "cxo2",
                                      "sleep_clk",
                        compatible = "qcom,msm8996-bimc";
                        reg = <0x00408000 0x5a000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
-                                <&rpmcc RPM_SMD_BIMC_A_CLK>;
                };
  
                tsens0: thermal-sensor@4a9000 {
                        reg = <0x004ad000 0x1000>, /* TM */
                              <0x004ac000 0x1000>; /* SROT */
                        #qcom,sensors = <8>;
 -                      interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>,
 -                                   <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>;
 +                      interrupts-extended = <&mpm 2 IRQ_TYPE_LEVEL_HIGH>,
 +                                            <&intc GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "uplow", "critical";
                        #thermal-sensor-cells = <1>;
                };
                        compatible = "qcom,msm8996-cnoc";
                        reg = <0x00500000 0x1000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
-                                <&rpmcc RPM_SMD_CNOC_A_CLK>;
                };
  
                snoc: interconnect@524000 {
                        compatible = "qcom,msm8996-snoc";
                        reg = <0x00524000 0x1c000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
-                                <&rpmcc RPM_SMD_SNOC_A_CLK>;
                };
  
                a0noc: interconnect@543000 {
                        compatible = "qcom,msm8996-a1noc";
                        reg = <0x00562000 0x5000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_AGGR1_NOC_CLK>,
-                                <&rpmcc RPM_SMD_AGGR1_NOC_A_CLK>;
                };
  
                a2noc: interconnect@583000 {
                        compatible = "qcom,msm8996-a2noc";
                        reg = <0x00583000 0x7000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a", "aggre2_ufs_axi", "ufs_axi";
-                       clocks = <&rpmcc RPM_SMD_AGGR2_NOC_CLK>,
-                                <&rpmcc RPM_SMD_AGGR2_NOC_A_CLK>,
-                                <&gcc GCC_AGGRE2_UFS_AXI_CLK>,
+                       clock-names = "aggre2_ufs_axi", "ufs_axi";
+                       clocks = <&gcc GCC_AGGRE2_UFS_AXI_CLK>,
                                 <&gcc GCC_UFS_AXI_CLK>;
                };
  
                        compatible = "qcom,msm8996-mnoc";
                        reg = <0x005a4000 0x1c000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a", "iface";
-                       clocks = <&rpmcc RPM_SMD_MMAXI_CLK>,
-                                <&rpmcc RPM_SMD_MMAXI_A_CLK>,
-                                <&mmcc AHB_CLK_SRC>;
+                       clock-names = "iface";
+                       clocks = <&mmcc AHB_CLK_SRC>;
                };
  
                pnoc: interconnect@5c0000 {
                        compatible = "qcom,msm8996-pnoc";
                        reg = <0x005c0000 0x3000>;
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
-                                <&rpmcc RPM_SMD_PCNOC_A_CLK>;
                };
  
                tcsr_mutex: hwlock@740000 {
                        interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
                        gpio-controller;
                        gpio-ranges = <&tlmm 0 0 150>;
 +                      wakeup-parent = <&mpm>;
                        #gpio-cells = <2>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
                              <0x0400a000 0x002100>;
                        reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
                        interrupt-names = "periph_irq";
 -                      interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
 +                      interrupts-extended = <&mpm 87 IRQ_TYPE_LEVEL_HIGH>;
                        qcom,ee = <0>;
                        qcom,channel = <0>;
                        #address-cells = <2>;
                        reg = <0x00624000 0x2500>;
                        interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
  
 -                      phys = <&ufsphy_lane>;
 +                      phys = <&ufsphy>;
                        phy-names = "ufsphy";
  
                        power-domains = <&gcc UFS_GDSC>;
  
                ufsphy: phy@627000 {
                        compatible = "qcom,msm8996-qmp-ufs-phy";
 -                      reg = <0x00627000 0x1c4>;
 -                      #address-cells = <1>;
 -                      #size-cells = <1>;
 -                      ranges;
 +                      reg = <0x00627000 0x1000>;
  
                        clocks = <&gcc GCC_UFS_CLKREF_CLK>;
                        clock-names = "ref";
  
                        resets = <&ufshc 0>;
                        reset-names = "ufsphy";
 -                      status = "disabled";
  
 -                      ufsphy_lane: phy@627400 {
 -                              reg = <0x627400 0x12c>,
 -                                    <0x627600 0x200>,
 -                                    <0x627c00 0x1b4>;
 -                              #clock-cells = <1>;
 -                              #phy-cells = <0>;
 -                      };
 +                      #clock-cells = <1>;
 +                      #phy-cells = <0>;
 +
 +                      status = "disabled";
                };
  
                camss: camss@a34000 {
                                          "handover",
                                          "stop-ack";
  
-                       clocks = <&xo_board>,
-                                <&rpmcc RPM_SMD_AGGR2_NOC_CLK>;
-                       clock-names = "xo", "aggre2";
+                       clocks = <&xo_board>;
+                       clock-names = "xo";
  
                        memory-region = <&slpi_mem>;
  
                                 <&gcc GCC_MSS_GPLL0_DIV_CLK>,
                                 <&gcc GCC_MSS_SNOC_AXI_CLK>,
                                 <&gcc GCC_MSS_MNOC_BIMC_AXI_CLK>,
-                                <&rpmcc RPM_SMD_PCNOC_CLK>,
                                 <&rpmcc RPM_SMD_QDSS_CLK>;
-                       clock-names = "iface", "bus", "mem", "xo", "gpll0_mss",
-                                     "snoc_axi", "mnoc_axi", "pnoc", "qdss";
+                       clock-names = "iface",
+                                     "bus",
+                                     "mem",
+                                     "xo",
+                                     "gpll0_mss",
+                                     "snoc_axi",
+                                     "mnoc_axi",
+                                     "qdss";
  
                        resets = <&gcc GCC_MSS_RESTART>;
                        reset-names = "mss_restart";
                        clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
                        clock-names = "apb_pclk", "atclk";
  
 +                      in-ports {
 +                              port {
 +                                      funnel_in2_in_modem_etm: endpoint {
 +                                              remote-endpoint =
 +                                                <&modem_etm_out_funnel_in2>;
 +                                      };
 +                              };
 +                      };
  
                        out-ports {
                                port {
                        #size-cells = <1>;
                        ranges;
  
 -                      interrupts = <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
 -                                   <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
 +                      interrupts-extended = <&mpm 79 IRQ_TYPE_LEVEL_HIGH>,
 +                                            <&mpm 52 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "hs_phy_irq", "ss_phy_irq";
  
                        clocks = <&gcc GCC_SYS_NOC_USB3_AXI_CLK>,
                                compatible = "snps,dwc3";
                                reg = <0x06a00000 0xcc00>;
                                interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
 -                              phys = <&hsusb_phy1>, <&ssusb_phy_0>;
 +                              phys = <&hsusb_phy1>, <&usb3phy>;
                                phy-names = "usb2-phy", "usb3-phy";
                                snps,hird-threshold = /bits/ 8 <0>;
                                snps,dis_u2_susphy_quirk;
  
                usb3phy: phy@7410000 {
                        compatible = "qcom,msm8996-qmp-usb3-phy";
 -                      reg = <0x07410000 0x1c4>;
 -                      #address-cells = <1>;
 -                      #size-cells = <1>;
 -                      ranges;
 +                      reg = <0x07410000 0x1000>;
  
                        clocks = <&gcc GCC_USB3_PHY_AUX_CLK>,
 -                              <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
 -                              <&gcc GCC_USB3_CLKREF_CLK>;
 -                      clock-names = "aux", "cfg_ahb", "ref";
 +                               <&gcc GCC_USB3_CLKREF_CLK>,
 +                               <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
 +                               <&gcc GCC_USB3_PHY_PIPE_CLK>;
 +                      clock-names = "aux",
 +                                    "ref",
 +                                    "cfg_ahb",
 +                                    "pipe";
 +                      clock-output-names = "usb3_phy_pipe_clk_src";
 +                      #clock-cells = <0>;
 +                      #phy-cells = <0>;
  
                        resets = <&gcc GCC_USB3_PHY_BCR>,
 -                              <&gcc GCC_USB3PHY_PHY_BCR>;
 -                      reset-names = "phy", "common";
 -                      status = "disabled";
 -
 -                      ssusb_phy_0: phy@7410200 {
 -                              reg = <0x07410200 0x200>,
 -                                    <0x07410400 0x130>,
 -                                    <0x07410600 0x1a8>;
 -                              #phy-cells = <0>;
 +                               <&gcc GCC_USB3PHY_PHY_BCR>;
 +                      reset-names = "phy",
 +                                    "phy_phy";
  
 -                              #clock-cells = <0>;
 -                              clock-output-names = "usb3_phy_pipe_clk_src";
 -                              clocks = <&gcc GCC_USB3_PHY_PIPE_CLK>;
 -                              clock-names = "pipe0";
 -                      };
 +                      status = "disabled";
                };
  
                hsusb_phy1: phy@7411000 {
index bb591c6bf57341b0665d7c514257a2b240063261,dd676d1b038d2e16432a7c9afe20b7b51848e38c..2793cc22d381af990a80018b96e16da4400d0fd1
                                <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>;
                };
  
 -              pcie0: pci@1c00000 {
 +              pcie0: pcie@1c00000 {
                        compatible = "qcom,pcie-msm8998", "qcom,pcie-msm8996";
                        reg = <0x01c00000 0x2000>,
                              <0x1b000000 0xf1d>,
                        compatible = "qcom,msm8998-ufshc", "qcom,ufshc", "jedec,ufs-2.0";
                        reg = <0x01da4000 0x2500>;
                        interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
 -                      phys = <&ufsphy_lanes>;
 +                      phys = <&ufsphy>;
                        phy-names = "ufsphy";
                        lanes-per-direction = <2>;
                        power-domains = <&gcc UFS_GDSC>;
  
                ufsphy: phy@1da7000 {
                        compatible = "qcom,msm8998-qmp-ufs-phy";
 -                      reg = <0x01da7000 0x18c>;
 -                      #address-cells = <1>;
 -                      #size-cells = <1>;
 -                      status = "disabled";
 -                      ranges;
 +                      reg = <0x01da7000 0x1000>;
  
                        clock-names =
                                "ref",
                        reset-names = "ufsphy";
                        resets = <&ufshc 0>;
  
 -                      ufsphy_lanes: phy@1da7400 {
 -                              reg = <0x01da7400 0x128>,
 -                                    <0x01da7600 0x1fc>,
 -                                    <0x01da7c00 0x1dc>,
 -                                    <0x01da7800 0x128>,
 -                                    <0x01da7a00 0x1fc>;
 -                              #phy-cells = <0>;
 -                      };
 +                      #phy-cells = <0>;
 +                      status = "disabled";
                };
  
                tcsr_mutex: hwlock@1f40000 {
  
                        px-supply = <&vreg_lvs2a_1p8>;
  
-                       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
-                                <&rpmcc RPM_SMD_AGGR2_NOC_CLK>;
-                       clock-names = "xo", "aggre2";
+                       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>;
+                       clock-names = "xo";
  
                        memory-region = <&slpi_mem>;
  
  
                        cpu = <&CPU4>;
  
 -                      port {
 -                              etm4_out: endpoint {
 -                                      remote-endpoint = <&apss_funnel_in4>;
 +                      out-ports {
 +                              port {
 +                                      etm4_out: endpoint {
 +                                              remote-endpoint = <&apss_funnel_in4>;
 +                                      };
                                };
                        };
                };
  
                        cpu = <&CPU5>;
  
 -                      port {
 -                              etm5_out: endpoint {
 -                                      remote-endpoint = <&apss_funnel_in5>;
 +                      out-ports {
 +                              port {
 +                                      etm5_out: endpoint {
 +                                              remote-endpoint = <&apss_funnel_in5>;
 +                                      };
                                };
                        };
                };
  
                        cpu = <&CPU6>;
  
 -                      port {
 -                              etm6_out: endpoint {
 -                                      remote-endpoint = <&apss_funnel_in6>;
 +                      out-ports {
 +                              port {
 +                                      etm6_out: endpoint {
 +                                              remote-endpoint = <&apss_funnel_in6>;
 +                                      };
                                };
                        };
                };
  
                        cpu = <&CPU7>;
  
 -                      port {
 -                              etm7_out: endpoint {
 -                                      remote-endpoint = <&apss_funnel_in7>;
 +                      out-ports {
 +                              port {
 +                                      etm7_out: endpoint {
 +                                              remote-endpoint = <&apss_funnel_in7>;
 +                                      };
                                };
                        };
                };
                                interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
                                snps,dis_u2_susphy_quirk;
                                snps,dis_enblslpm_quirk;
 -                              phys = <&qusb2phy>, <&usb1_ssphy>;
 +                              phys = <&qusb2phy>, <&usb3phy>;
                                phy-names = "usb2-phy", "usb3-phy";
                                snps,has-lpm-erratum;
                                snps,hird-threshold = /bits/ 8 <0x10>;
  
                usb3phy: phy@c010000 {
                        compatible = "qcom,msm8998-qmp-usb3-phy";
 -                      reg = <0x0c010000 0x18c>;
 -                      status = "disabled";
 -                      #address-cells = <1>;
 -                      #size-cells = <1>;
 -                      ranges;
 +                      reg = <0x0c010000 0x1000>;
  
                        clocks = <&gcc GCC_USB3_PHY_AUX_CLK>,
 +                               <&gcc GCC_USB3_CLKREF_CLK>,
                                 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
 -                               <&gcc GCC_USB3_CLKREF_CLK>;
 -                      clock-names = "aux", "cfg_ahb", "ref";
 +                               <&gcc GCC_USB3_PHY_PIPE_CLK>;
 +                      clock-names = "aux",
 +                                    "ref",
 +                                    "cfg_ahb",
 +                                    "pipe";
 +                      clock-output-names = "usb3_phy_pipe_clk_src";
 +                      #clock-cells = <0>;
 +                      #phy-cells = <0>;
  
                        resets = <&gcc GCC_USB3_PHY_BCR>,
                                 <&gcc GCC_USB3PHY_PHY_BCR>;
 -                      reset-names = "phy", "common";
 +                      reset-names = "phy",
 +                                    "phy_phy";
  
 -                      usb1_ssphy: phy@c010200 {
 -                              reg = <0xc010200 0x128>,
 -                                    <0xc010400 0x200>,
 -                                    <0xc010c00 0x20c>,
 -                                    <0xc010600 0x128>,
 -                                    <0xc010800 0x200>;
 -                              #phy-cells = <0>;
 -                              #clock-cells = <0>;
 -                              clocks = <&gcc GCC_USB3_PHY_PIPE_CLK>;
 -                              clock-names = "pipe0";
 -                              clock-output-names = "usb3_phy_pipe_clk_src";
 -                      };
 +                      status = "disabled";
                };
  
                qusb2phy: phy@c012000 {
index 6ac64ce9bb68ce1e7c872431bde6b86c2621c6d0,317a0df30b8347663b649fda26963330112f9bdf..2f2eeaf2e945781056add9a0d5c5fce3541471c9
                        reg = <0x00400000 0x80000>;
                        compatible = "qcom,qcs404-bimc";
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
-                               <&rpmcc RPM_SMD_BIMC_A_CLK>;
                };
  
                tsens: thermal-sensor@4a9000 {
                        reg = <0x00500000 0x15080>;
                        compatible = "qcom,qcs404-pcnoc";
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_PNOC_CLK>,
-                               <&rpmcc RPM_SMD_PNOC_A_CLK>;
                };
  
                snoc: interconnect@580000 {
                        reg = <0x00580000 0x23080>;
                        compatible = "qcom,qcs404-snoc";
                        #interconnect-cells = <1>;
-                       clock-names = "bus", "bus_a";
-                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
-                               <&rpmcc RPM_SMD_SNOC_A_CLK>;
                };
  
                remoteproc_cdsp: remoteproc@b00000 {
                        };
                };
  
 -              pcie: pci@10000000 {
 +              pcie: pcie@10000000 {
                        compatible = "qcom,pcie-qcs404";
                        reg = <0x10000000 0xf1d>,
                              <0x10000f20 0xa8>,
index 0431845578736aded1a3bb0b0251b86ede1382a3,88b37ceb13ede1dd60461945ae36bb04e5affe84..cd0db4f31d4af915058d2a817cc397d3cc5f40e7
@@@ -23,7 -23,6 +23,7 @@@
  
        aliases {
                serial0 = &uart12;
 +              serial1 = &uart6;
                sdhc2 = &sdhc_2;
        };
  
@@@ -65,8 -64,8 +65,8 @@@
                        function = LED_FUNCTION_INDICATOR;
                        color = <LED_COLOR_ID_GREEN>;
                        gpios = <&pm8150_gpios 10 GPIO_ACTIVE_HIGH>;
 -                      linux,default-trigger = "panic-indicator";
                        default-state = "off";
 +                      panic-indicator;
                };
  
                led-wlan {
                "HST_WLAN_UART_TX",
                "HST_WLAN_UART_RX";
  
 +      bt_en_state: bt-default-state {
 +              pins = "gpio21";
 +              function = "gpio";
 +              drive-strength = <16>;
 +              output-low;
 +              bias-pull-up;
 +      };
 +
        lt9611_irq_pin: lt9611-irq-state {
                pins = "gpio63";
                function = "gpio";
        };
  };
  
 +&uart6 {
 +      status = "okay";
 +
 +      bluetooth {
 +              compatible = "qcom,qca6390-bt";
 +
 +              pinctrl-names = "default";
 +              pinctrl-0 = <&bt_en_state>;
 +
 +              enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
 +
 +              vddio-supply = <&vreg_s4a_1p8>;
 +              vddpmu-supply = <&vreg_s2f_0p95>;
 +              vddaon-supply = <&vreg_s6a_0p95>;
 +              vddrfa0p9-supply = <&vreg_s2f_0p95>;
 +              vddrfa1p3-supply = <&vreg_s8c_1p3>;
 +              vddrfa1p9-supply = <&vreg_s5a_1p9>;
 +      };
 +};
 +
  &uart12 {
        status = "okay";
  };
  
                altmodes {
                        displayport {
-                               svid = <0xff01>;
+                               svid = /bits/ 16 <0xff01>;
                                vdo = <0x00001c46>;
                        };
                };
index 7835170b1d66182d6bd5c9dc433a7f1c4ed10c38,02b3b1825403ae0bd821c9556dafb436d03b54eb..d31edad7a05607407c6dd4c9f1e14edc571d9385
@@@ -550,8 -550,6 +550,8 @@@ static const struct usb_device_id quirk
                                                     BTUSB_WIDEBAND_SPEECH },
        { USB_DEVICE(0x13d3, 0x3571), .driver_info = BTUSB_REALTEK |
                                                     BTUSB_WIDEBAND_SPEECH },
 +      { USB_DEVICE(0x13d3, 0x3572), .driver_info = BTUSB_REALTEK |
 +                                                   BTUSB_WIDEBAND_SPEECH },
  
        /* Realtek Bluetooth devices */
        { USB_VENDOR_AND_INTERFACE_INFO(0x0bda, 0xe0, 0x01, 0x01),
@@@ -4631,10 -4629,6 +4631,10 @@@ static int btusb_suspend(struct usb_int
  
        BT_DBG("intf %p", intf);
  
 +      /* Don't suspend if there are connections */
 +      if (hci_conn_count(data->hdev))
 +              return -EBUSY;
 +
        if (data->suspend_count++)
                return 0;
  
@@@ -4796,10 -4790,8 +4796,8 @@@ static struct usb_driver btusb_driver 
        .disable_hub_initiated_lpm = 1,
  
  #ifdef CONFIG_DEV_COREDUMP
-       .drvwrap = {
-               .driver = {
-                       .coredump = btusb_coredump,
-               },
+       .driver = {
+               .coredump = btusb_coredump,
        },
  #endif
  };
diff --combined drivers/tty/tty_io.c
index 9c620afc422eb94e764bf666cf9331e1bc06b1af,96617f9af819dc19c95c78a483cedd9806b205da..407b0d87b7c10890da30bdd9f9c60605b85829b6
@@@ -852,9 -852,9 +852,9 @@@ static ssize_t iterate_tty_read(struct 
  {
        void *cookie = NULL;
        unsigned long offset = 0;
 -      char kernel_buf[64];
        ssize_t retval = 0;
        size_t copied, count = iov_iter_count(to);
 +      u8 kernel_buf[64];
  
        do {
                ssize_t size = min(count, sizeof(kernel_buf));
@@@ -995,7 -995,7 +995,7 @@@ static ssize_t iterate_tty_write(struc
  
        /* write_buf/write_cnt is protected by the atomic_write_lock mutex */
        if (tty->write_cnt < chunk) {
 -              unsigned char *buf_chunk;
 +              u8 *buf_chunk;
  
                if (chunk < 1024)
                        chunk = 1024;
@@@ -1047,7 -1047,6 +1047,7 @@@ out
        return ret;
  }
  
 +#ifdef CONFIG_PRINT_QUOTA_WARNING
  /**
   * tty_write_message - write a message to a certain tty, not just the console.
   * @tty: the destination tty_struct
   * needed.
   *
   * We must still hold the BTM and test the CLOSING flag for the moment.
 + *
 + * This function is DEPRECATED, do not use in new code.
   */
  void tty_write_message(struct tty_struct *tty, char *msg)
  {
                tty_write_unlock(tty);
        }
  }
 +#endif
  
  static ssize_t file_tty_write(struct file *file, struct kiocb *iocb, struct iov_iter *from)
  {
@@@ -1149,7 -1145,7 +1149,7 @@@ ssize_t redirected_tty_write(struct kio
   *
   * Locking: none for xchar method, write ordering for write method.
   */
 -int tty_send_xchar(struct tty_struct *tty, char ch)
 +int tty_send_xchar(struct tty_struct *tty, u8 ch)
  {
        bool was_stopped = tty->flow.stopped;
  
@@@ -2278,10 -2274,10 +2278,10 @@@ static bool tty_legacy_tiocsti __read_m
   *  * Called functions take tty_ldiscs_lock
   *  * current->signal->tty check is safe without locks
   */
 -static int tiocsti(struct tty_struct *tty, char __user *p)
 +static int tiocsti(struct tty_struct *tty, u8 __user *p)
  {
 -      char ch, mbz = 0;
        struct tty_ldisc *ld;
 +      u8 ch;
  
        if (!tty_legacy_tiocsti && !capable(CAP_SYS_ADMIN))
                return -EIO;
                return -EIO;
        tty_buffer_lock_exclusive(tty->port);
        if (ld->ops->receive_buf)
 -              ld->ops->receive_buf(tty, &ch, &mbz, 1);
 +              ld->ops->receive_buf(tty, &ch, NULL, 1);
        tty_buffer_unlock_exclusive(tty->port);
        tty_ldisc_deref(ld);
        return 0;
@@@ -2493,6 -2489,9 +2493,9 @@@ static int send_break(struct tty_struc
        if (!retval) {
                msleep_interruptible(duration);
                retval = tty->ops->break_ctl(tty, 0);
+       } else if (retval == -EOPNOTSUPP) {
+               /* some drivers can tell only dynamically */
+               retval = 0;
        }
        tty_write_unlock(tty);
  
        return retval;
  }
  
 +/**
 + * tty_get_tiocm - get tiocm status register
 + * @tty: tty device
 + *
 + * Obtain the modem status bits from the tty driver if the feature
 + * is supported.
 + */
 +int tty_get_tiocm(struct tty_struct *tty)
 +{
 +      int retval = -ENOTTY;
 +
 +      if (tty->ops->tiocmget)
 +              retval = tty->ops->tiocmget(tty);
 +
 +      return retval;
 +}
 +EXPORT_SYMBOL_GPL(tty_get_tiocm);
 +
  /**
   * tty_tiocmget - get modem status
   * @tty: tty device
   */
  static int tty_tiocmget(struct tty_struct *tty, int __user *p)
  {
 -      int retval = -ENOTTY;
 +      int retval;
  
 -      if (tty->ops->tiocmget) {
 -              retval = tty->ops->tiocmget(tty);
 +      retval = tty_get_tiocm(tty);
 +      if (retval >= 0)
 +              retval = put_user(retval, p);
  
 -              if (retval >= 0)
 -                      retval = put_user(retval, p);
 -      }
        return retval;
  }
  
@@@ -3158,7 -3141,7 +3161,7 @@@ struct tty_struct *alloc_tty_struct(str
   *
   * Return: the number of characters successfully output.
   */
 -int tty_put_char(struct tty_struct *tty, unsigned char ch)
 +int tty_put_char(struct tty_struct *tty, u8 ch)
  {
        if (tty->ops->put_char)
                return tty->ops->put_char(tty, ch);
index 7bf810a0c98a9393fb915c55ddb51264cdff2b0b,b2f8b53cc8ef571fcf2953b62e437765007e80b1..8c5aaf8606357d8b4e8efc672a9c6982d2956b0a
@@@ -404,9 -404,9 +404,9 @@@ static void qh_lines(struct fotg210_hc
                        else if (td->hw_alt_next != list_end)
                                mark = '/';
                }
-               temp = snprintf(next, size,
-                               "\n\t%p%c%s len=%d %08x urb %p",
-                               td, mark, ({ char *tmp;
+               temp = scnprintf(next, size,
+                                "\n\t%p%c%s len=%d %08x urb %p",
+                                td, mark, ({ char *tmp;
                                switch ((scratch>>8)&0x03) {
                                case 0:
                                        tmp = "out";
                                (scratch >> 16) & 0x7fff,
                                scratch,
                                td->urb);
-               if (size < temp)
-                       temp = size;
                size -= temp;
                next += temp;
 -              if (temp == size)
 -                      goto done;
        }
  
-       temp = snprintf(next, size, "\n");
-       if (size < temp)
-               temp = size;
+       temp = scnprintf(next, size, "\n");
  
        size -= temp;
        next += temp;
  
 -done:
        *sizep = size;
        *nextp = next;
  }
index fdd0fc7b8f259e18524f825229c6d5723a363c25,dafedc33928ddd6f61617f8c3927b9bad5e32a39..6bff6cb93789167b7de9d2b939d5e4e6255078db
@@@ -831,7 -831,7 +831,7 @@@ static void ffs_user_copy_worker(struc
        io_data->kiocb->ki_complete(io_data->kiocb, ret);
  
        if (io_data->ffs->ffs_eventfd && !kiocb_has_eventfd)
 -              eventfd_signal(io_data->ffs->ffs_eventfd, 1);
 +              eventfd_signal(io_data->ffs->ffs_eventfd);
  
        if (io_data->read)
                kfree(io_data->to_free);
@@@ -2738,7 -2738,7 +2738,7 @@@ static void __ffs_event_add(struct ffs_
        ffs->ev.types[ffs->ev.count++] = type;
        wake_up_locked(&ffs->ev.waitq);
        if (ffs->ffs_eventfd)
 -              eventfd_signal(ffs->ffs_eventfd, 1);
 +              eventfd_signal(ffs->ffs_eventfd);
  }
  
  static void ffs_event_add(struct ffs_data *ffs,
@@@ -2931,9 -2931,8 +2931,8 @@@ static int __ffs_func_bind_do_os_desc(e
  
                t = &func->function.os_desc_table[desc->bFirstInterfaceNumber];
                t->if_id = func->interfaces_nums[desc->bFirstInterfaceNumber];
-               memcpy(t->os_desc->ext_compat_id, &desc->CompatibleID,
-                      ARRAY_SIZE(desc->CompatibleID) +
-                      ARRAY_SIZE(desc->SubCompatibleID));
+               memcpy(t->os_desc->ext_compat_id, &desc->IDs,
+                      sizeof_field(struct usb_ext_compat_desc, IDs));
                length = sizeof(*desc);
        }
                break;
index 38416fb0cc3ca94bc5b4ce50a3642e83a1607854,71968179c1cbd17bc0b13f49b6a14fa7f8040b6b..d2cb5e733e57359d16d90418a4dc66c4d60bc449
@@@ -40,7 -40,7 +40,7 @@@ config TYPEC_MUX_NB7VPQ904
        tristate "On Semiconductor NB7VPQ904M Type-C redriver driver"
        depends on I2C
        depends on DRM || DRM=n
 -      select DRM_PANEL_BRIDGE if DRM
 +      select DRM_AUX_BRIDGE if DRM_BRIDGE && OF
        select REGMAP_I2C
        help
          Say Y or M if your system has a On Semiconductor NB7VPQ904M Type-C
@@@ -56,4 -56,14 +56,14 @@@ config TYPEC_MUX_PTN3650
          Say Y or M if your system has a NXP PTN36502 Type-C redriver chip
          found on some devices with a Type-C port.
  
+ config TYPEC_MUX_WCD939X_USBSS
+       tristate "Qualcomm WCD939x USBSS Analog Audio Switch driver"
+       depends on I2C
+       select REGMAP_I2C
+       help
+         Driver for the Qualcomm WCD939x Audio Codec USBSS domain which
+         provides support for muxing analog audio and sideband signals on a
+         common USB Type-C connector.
+         If compiled as a module, the module will be named wcd939x-usbss.
  endmenu
This page took 0.194034 seconds and 4 git commands to generate.