1. 23 Oct, 2017 20 commits
  2. 18 Oct, 2017 1 commit
  3. 03 Oct, 2017 5 commits
  4. 26 Sep, 2017 7 commits
    • Douglas Anderson's avatar
      phy: rockchip-typec: Don't set the aux voltage swing to 400 mV · 26e03d80
      Douglas Anderson authored
      On rk3399-gru-kevin there are some cases where we're seeing AUX CH
      failures when trying to do DisplayPort over type C.  Problems are
      intermittent and don't reproduce all the time.  Problems are often
      bursty and failures persist for several seconds before going away.
      The failure case I focused on is:
      * A particular type C to HDMI adapter.
      * One orientation (flip mode) of that adapter.
      * Easier to see failures when something is plugged into the _other
        type C port at the same time.
      * Problems reproduce on both type C ports (left and right side).
      
      Ironically problems also stop reproducing when I solder wires onto the
      AUX CH signals on a port (even if no scope is connected to the
      signals).  In this case, problems only stop reproducing on the port
      with the wires connected.
      
      From the above it appears that something about the signaling on the
      aux channel is marginal and any slight differences can bring us over
      the edge to failure.
      
      It turns out that we can fix our problems by just increasing the
      voltage swing of the AUX CH, giving us a bunch of extra margin.  In DP
      up to version 1.2 the voltage swing on the aux channel was specced as
      .29 V to 1.38 V.  In DP version 1.3 the aux channel voltage was
      tightened to be between .29 V and .40 V, but it clarifies that it
      really only needs the lower voltage when operating at the highest
      speed (HBR3 mode).  So right now we are trying to use a voltage that
      technically should be valid for all versions of the spec (including
      version 1.3 when transmitting at HBR3).  That would be great to do if
      it worked reliably.  ...but it doesn't seem to.
      
      It turns out that if you continue to read through the DP part of the
      rk3399 TRM and other parts of the type C PHY spec you'll find out that
      while the rk3399 does support DP 1.3, it doesn't support HBR3.  The
      docs specifically say "RBR, HBR and HBR2 data rates only".  Thus there
      is actually no requirement to support an AUX CH swing of .4 V.
      
      Even if there is no actual requirement to support the tighter voltage
      swing, one could possibly argue that we should support it anyway.  The
      DP spec clarifies that the lower voltage on the AUX CH will reduce
      cross talk in some cases and that seems like it could be beneficial
      even at the lower bit rates.  At the moment, though, we are seeing
      problems with the AUX CH and not on the other lines.  Also, checking
      another known working and similar laptop shows that the other laptop
      runs the AUX channel at a higher voltage.
      
      Other notes:
      * Looking at measurements done on the AUX CH we weren't actually
        compliant with the DP 1.3 spec anyway.  AUX CH peek-to-peek voltage
        was measured on rk3399-gru-kevin as .466 V which is > .4 V.
      * With this new patch the AUX channel isn't actually 1.0 V, but it has
        been confirmed that the signal is better and has more margin.  Eye
        diagram passes.
      * If someone were truly an expert in the Type C PHY and in DisplayPort
        signaling they might be able to make things work and keep the
        voltage at < .4 V.  The Type C PHY seems to have a plethora of
        tuning knobs that could almost certainly improve the signal
        integrity.  Some of these things (like enabling tx_fcm_full_margin)
        even seem to fix my problems.  However, lacking expertise I can't
        say whether this is a better or worse solution.  Tightening signals
        to give cleaner waveforms can often have adverse affects, like
        increasing EMI or adding noise to other signals.  I'd rather not
        tune things like this without a healthy application of expertise
        that I don't have.
      Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      26e03d80
    • Douglas Anderson's avatar
      phy: rockchip-typec: Set the AUX channel flip state earlier · f98b7438
      Douglas Anderson authored
      On some DP monitors we found that setting the wrong flip state on the
      AUX channel could cause the monitor to stop asserting HotPlug Detect
      (HPD).  Setting the right flip state caused these monitors to start
      asserting HotPlug Detect again.
      
      Here's what we believe was happening:
      * We'd plug in the monitor and we'd see HPD assert
      * We'd quickly see HPD deassert
      * The kernel would try to init the type C PHY but would init it in USB
        mode (because there was a peripheral there but no HPD)
      * Because the kernel never set the flip mode properly we'd never see
        the HPD come back.
      
      With this change, we'll still see HPD disappear (we don't think
      there's anything we can do about that), but then it will come back.
      
      Overall we can say that it's sane to set the AUX channel flip state
      even when HPD is not asserted.
      
      NOTE: to make this change possible, I needed to do a bit of cleanup to
      the tcphy_dp_aux_calibration() function so that it doesn't ever
      clobber the FLIP state.  This made it very obvious that a line of code
      documented as "setting bit 12" also did a bunch of other magic,
      undocumented stuff.  For now I'll just break out the bits and add a
      comment that this is black magic and we'll try to document
      tcphy_dp_aux_calibration() better in a future CL.
      
      ALSO NOTE: the old function used to write a bunch of hardcoded
      values in _some_ cases instead of doing a read-modify-write.  One
      could possibly assert that these could have had (beneficial) side
      effects and thus with this new code (which always does
      read-modify-write) we could have a bug.  We shouldn't need to worry,
      though, since in the old code tcphy_dp_aux_calibration() was always
      called following the de-assertion of "reset" the the type C PHY.
      ...so the type C PHY was always in default state.  TX_ANA_CTRL_REG_1
      is documented to be 0x0 after reset.  This was also confirmed by
      printk.
      Suggested-by: default avatarShawn Nematbakhsh <shawnn@chromium.org>
      Reviewed-by: default avatarChris Zhong <zyw@rock-chips.com>
      Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      f98b7438
    • Dan Carpenter's avatar
      phy: mvebu-cp110: checking for NULL instead of IS_ERR() · c1c7acac
      Dan Carpenter authored
      devm_ioremap_resource() never returns NULL, it only returns error
      pointers so this test needs to be changed.
      
      Fixes: d0438bd6 ("phy: add the mvebu cp110 comphy driver")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      c1c7acac
    • Antoine Tenart's avatar
      phy: mvebu-cp110-comphy: explicitly set the pipe selector · 17fb745d
      Antoine Tenart authored
      The pipe selector is used to select some modes (such as USB or PCIe).
      Otherwise it must be set to 0 (or "unconnected"). This patch does this
      to ensure it is not set to an incompatible value when using the
      supported modes (SGMII, 10GKR).
      Signed-off-by: default avatarAntoine Tenart <antoine.tenart@free-electrons.com>
      Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      17fb745d
    • Antoine Tenart's avatar
      phy: mvebu-cp110-comphy: fix mux error check · caef3e0b
      Antoine Tenart authored
      The mux value is retrieved from the mvebu_comphy_get_mux() function
      which returns an int. In mvebu_comphy_power_on() this int is stored to a
      u32 and a check is made to ensure it's not negative. Which is wrong.
      This fixes it.
      
      Fixes: d0438bd6 ("phy: add the mvebu cp110 comphy driver")
      Signed-off-by: default avatarAntoine Tenart <antoine.tenart@free-electrons.com>
      Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      caef3e0b
    • Chunfeng Yun's avatar
      phy: phy-mtk-tphy: fix NULL point of chip bank · 554a56fc
      Chunfeng Yun authored
      Chip bank of version-1 is initialized as NULL, but it's used
      by pcie_phy_instance_power_on/off(), so assign it a right
      address.
      Signed-off-by: default avatarChunfeng Yun <chunfeng.yun@mediatek.com>
      Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      554a56fc
    • Arvind Yadav's avatar
      phy: tegra: Handle return value of kasprintf · 1df79cb3
      Arvind Yadav authored
      kasprintf() can fail and it's return value must be checked.
      Signed-off-by: default avatarArvind Yadav <arvind.yadav.cs@gmail.com>
      Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      1df79cb3
  5. 16 Sep, 2017 7 commits
    • Linus Torvalds's avatar
      Linux 4.14-rc1 · 2bd6bf03
      Linus Torvalds authored
      2bd6bf03
    • Linus Torvalds's avatar
      Merge tag 'upstream-4.14-rc1' of git://git.infradead.org/linux-ubifs · 194a4ef9
      Linus Torvalds authored
      Pull UBI updates from Richard Weinberger:
       "Minor improvements"
      
      * tag 'upstream-4.14-rc1' of git://git.infradead.org/linux-ubifs:
        UBI: Fix two typos in comments
        ubi: fastmap: fix spelling mistake: "invalidiate" -> "invalidate"
        ubi: pr_err() strings should end with newlines
        ubi: pr_err() strings should end with newlines
        ubi: pr_err() strings should end with newlines
      194a4ef9
    • Linus Torvalds's avatar
      Merge branch 'for-linus-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml · 2896b80e
      Linus Torvalds authored
      Pull UML updates from Richard Weinberger:
      
       - minor improvements
      
       - fixes for Debian's new gcc defaults (pie enabled by default)
      
       - fixes for XSTATE/XSAVE to make UML work again on modern systems
      
      * 'for-linus-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
        um: return negative in tuntap_open_tramp()
        um: remove a stray tab
        um: Use relative modversions with LD_SCRIPT_DYN
        um: link vmlinux with -no-pie
        um: Fix CONFIG_GCOV for modules.
        Fix minor typos and grammar in UML start_up help
        um: defconfig: Cleanup from old Kconfig options
        um: Fix FP register size for XSTATE/XSAVE
      2896b80e
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 48bddb14
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Fix hotplug deadlock in hv_netvsc, from Stephen Hemminger.
      
       2) Fix double-free in rmnet driver, from Dan Carpenter.
      
       3) INET connection socket layer can double put request sockets, fix
          from Eric Dumazet.
      
       4) Don't match collect metadata-mode tunnels if the device is down,
          from Haishuang Yan.
      
       5) Do not perform TSO6/GSO on ipv6 packets with extensions headers in
          be2net driver, from Suresh Reddy.
      
       6) Fix scaling error in gen_estimator, from Eric Dumazet.
      
       7) Fix 64-bit statistics deadlock in systemport driver, from Florian
          Fainelli.
      
       8) Fix use-after-free in sctp_sock_dump, from Xin Long.
      
       9) Reject invalid BPF_END instructions in verifier, from Edward Cree.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (43 commits)
        mlxsw: spectrum_router: Only handle IPv4 and IPv6 events
        Documentation: link in networking docs
        tcp: fix data delivery rate
        bpf/verifier: reject BPF_ALU64|BPF_END
        sctp: do not mark sk dumped when inet_sctp_diag_fill returns err
        sctp: fix an use-after-free issue in sctp_sock_dump
        netvsc: increase default receive buffer size
        tcp: update skb->skb_mstamp more carefully
        net: ipv4: fix l3slave check for index returned in IP_PKTINFO
        net: smsc911x: Quieten netif during suspend
        net: systemport: Fix 64-bit stats deadlock
        net: vrf: avoid gcc-4.6 warning
        qed: remove unnecessary call to memset
        tg3: clean up redundant initialization of tnapi
        tls: make tls_sw_free_resources static
        sctp: potential read out of bounds in sctp_ulpevent_type_enabled()
        MAINTAINERS: review Renesas DT bindings as well
        net_sched: gen_estimator: fix scaling error in bytes/packets samples
        nfp: wait for the NSP resource to appear on boot
        nfp: wait for board state before talking to the NSP
        ...
      48bddb14
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · c8503720
      Linus Torvalds authored
      Pull more input updates from Dmitry Torokhov:
       "A second round of updates for the input subsystem:
      
         - a new driver for PWM-controlled vibrators
      
         - ucb1400 touchscreen driver had completely busted suspend/resume
           handling
      
         - we now handle "home" button found on some devices with Goodix
           touchscreens
      
         - assorted other fixups"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: i8042 - add Gigabyte P57 to the keyboard reset table
        Input: xpad - validate USB endpoint type during probe
        Input: ucb1400_ts - fix suspend and resume handling
        Input: edt-ft5x06 - fix access to non-existing register
        Input: elantech - make arrays debounce_packet static, reduces object code size
        Input: surface3_spi - make const array header static, reduces object code size
        Input: goodix - add support for capacitive home button
        Input: add a driver for PWM controllable vibrators
        Input: adi - make array seq static, reduces object code size
      c8503720
    • Markus Trippelsdorf's avatar
      firmware: Restore support for built-in firmware · df85b2d7
      Markus Trippelsdorf authored
      Commit 5620a0d1 ("firmware: delete in-kernel firmware") removed the
      entire firmware directory.  Unfortunately it thereby also removed the
      support for built-in firmware.
      
      This restores the ability to build firmware directly into the kernel by
      pruning the original Makefile to the necessary minimum.  The default for
      EXTRA_FIRMWARE_DIR is now the standard directory /lib/firmware/.
      
      Fixes: 5620a0d1 ("firmware: delete in-kernel firmware")
      Signed-off-by: default avatarMarkus Trippelsdorf <markus@trippelsdorf.de>
      Acked-by: default avatarGreg K-H <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      df85b2d7
    • Ido Schimmel's avatar
      mlxsw: spectrum_router: Only handle IPv4 and IPv6 events · 8e29f979
      Ido Schimmel authored
      The driver doesn't support events from address families other than IPv4
      and IPv6, so ignore them. Otherwise, we risk queueing a work item before
      it's initialized.
      
      This can happen in case a VRF is configured when MROUTE_MULTIPLE_TABLES
      is enabled, as the VRF driver will try to add an l3mdev rule for the
      IPMR family.
      
      Fixes: 65e65ec1 ("mlxsw: spectrum_router: Don't ignore IPv6 notifications")
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Reported-by: default avatarAndreas Rammhold <andreas@rammhold.de>
      Reported-by: default avatarFlorian Klink <flokli@flokli.de>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8e29f979