1. 24 3月, 2016 1 次提交
  2. 04 3月, 2016 1 次提交
    • A
      drm/msm: rename hdmi symbols · fcda50c8
      Arnd Bergmann 提交于
      Global symbols in the kernel should be prefixed by the name
      of the subsystem and/or driver to avoid conflicts when all
      code is built-in.
      
      In this case, function names like 'hdmi_register' or 'hdmi_set_mode'
      are way too generic for an MSM specific DRM driver, so I'm renaming
      them all to msm_hdmi_* here.
      
      I also rename a lot of the 'static' symbols along with the global
      names for consistency, even though those are relatively harmless;
      they might only be slightly confusing when they show up in
      backtraces.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      fcda50c8
  3. 29 2月, 2016 6 次提交
    • A
      drm/msm/hdmi: HDMI 8996 PHY/PLL support · e17afdce
      Archit Taneja 提交于
      Add support for the HDMI PHY/PLL found in MSM8996/APQ8096.
      
      Unlike the previous PHYs supported in the driver, this doesn't need
      the powerup/powerdown ops. The PLL prepare/unprepare clock ops
      enable/disable the phy itself.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      e17afdce
    • A
      drm/msm/hdmi: Convert PHY files according to new design · ba3d7bf3
      Archit Taneja 提交于
      Remove the old PHY ops managed by hdmi_platform_config and use them as ops
      provided by the HDMI PHY driver.
      
      Remove the old HDMI 8960 PLL code that used the top level HDMI TX mmio
      base.
      
      NOTE: With this commit, HDMI functionality will break until the HDMI
      PHY/PLL register offsets in hdmi.xml.h aren't updated to be used as
      separate domains.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      ba3d7bf3
    • A
      drm/msm/hdmi: Make HDMI core get its PHY · e00012b2
      Archit Taneja 提交于
      Make HDMI core get its PHY by parsing the "phys" phandle. The core will use
      this PHY reference to enable/disable PHY. The driver defers probe until PHY
      isn't available.
      
      The DT bindings used here is the same as the one used for PHYs using the
      common PHY framework bindings.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      e00012b2
    • A
      drm/msm/hdmi: Manage HDMI PLL through PHY driver · ea184891
      Archit Taneja 提交于
      Add a helper to initialize PLL in the PHY driver. HDMI PLLs are going to
      have their own mmio base different from that of PHY.
      
      For the clock code in hdmi_phy_8960.c, some changes were needed for it to
      work with the updated register offsets. Create a copy of the updated clock
      code in hdmi_pll_8960.c, instead of rewriting it in hdmi_phy_8960.c
      itself. This removes the need to place CONFIG_COMMON_CLOCK checks all
      around, makes the code more legible, and also removes some old checkpatch
      warnings with the original code.
      
      The older hdmi pll clock ops in hdmi_phy_8960.c will be removed later. The
      driver will use these until the HDMI PHY/PLL register offsets aren't
      considered as separate domains (i.e. their offsets start from 0).
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      ea184891
    • A
      drm/msm/hdmi: Create a separate HDMI PHY driver · 15b4a452
      Archit Taneja 提交于
      Create a PHY device that represents the TX PHY and PLL parts of the HDMI
      block.
      
      This makes management of PHY specific resources (regulators and clocks)
      much easier, and makes the PHY and PLL usable independently. It also
      simplifies the core HDMI driver, which currently assigns phy ops among
      many other things.
      
      The PHY driver implementation done here is very similar to the PHY driver
      we already have for DSI.
      
      Keep the old hdmi_phy_funcs ops for now. The driver will use these until
      the HDMI PHY/PLL register offsets aren't considered as separate
      domains (i.e. their offsets start from 0).
      
      The driver doesn't use the common PHY framework for now. This is because
      it's hard to map our ops with the ops provided by the framework. The
      bindings used for this is the generic phy bindings. So, this can be
      adapted to the PHY framework in the future, if possible.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      15b4a452
    • A
      drm/msm/hdmi: Clean up connector gpio usage · dc50f782
      Archit Taneja 提交于
      Make gpio allocation and usage iterative by parsing the gpios on a given
      platform from a list. This gives us flexibility over what all gpios exist
      for a platform, whether they are input or output, and what value they
      should be set to.
      
      In particular, this will make HDMI on 8x96 platforms easier to integrate
      with the driver, as it doesn't have a HPD gpio input to them. Also, it
      cleans things up a bit.
      
      We still use the legacy gpio api here, as we might need to backport this
      driver to downstream kernels.
      Signed-off-by: NArchit Taneja <architt@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      dc50f782
  4. 16 8月, 2015 2 次提交
    • S
      drm/msm/hdmi: remove ->reset() from HDMI PHY · da328552
      Stephane Viau 提交于
      ->reset() currently only accesses HDMI core registers, and yet it
      is located in hdmi_phy*. Since no PHY registers are being
      accessed during ->reset(), it would be better to bring that
      function in hdmi core module where HDMI core registers are
      usually being accessed.
      
      This will also help for msm8x94 for which no PHY registers
      accesses are done (->phy_init == NULL) but the HDMI PHY reset
      from HDMI core still needs to be done.
      
      Note:
      SW_RESET_PLL bit is not written in hdmi_phy_8x60_reset(); this
      write should not affect anything if the corresponding field is
      not writable.
      Signed-off-by: NStephane Viau <sviau@codeaurora.org>
      [fixed warning about unused 'phy' in hpd_enable() while merging]
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      da328552
    • J
      drm/msm/hdmi: add hdmi hdcp support (V3) · c6a57a50
      jilai wang 提交于
      Add HDMI HDCP support including HDCP PartI/II/III authentication.
      V1: Initial Change
      V2: Address Bjorn&Rob's comments
          Refactor the authentication process to use single work instead
          of multiple work for different authentication stages.
      V3: Update to align with qcom SCM api.
      Signed-off-by: NJilai Wang <jilaiw@codeaurora.org>
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      c6a57a50
  5. 02 2月, 2015 1 次提交
  6. 28 1月, 2015 1 次提交
    • A
      drm/bridge: make bridge registration independent of drm flow · 3d3f8b1f
      Ajay Kumar 提交于
      Currently, third party bridge drivers(ptn3460) are dependent
      on the corresponding encoder driver init, since bridge driver
      needs a drm_device pointer to finish drm initializations.
      The encoder driver passes the drm_device pointer to the
      bridge driver. Because of this dependency, third party drivers
      like ptn3460 doesn't adhere to the driver model.
      
      In this patch, we reframe the bridge registration framework
      so that bridge initialization is split into 2 steps, and
      bridge registration happens independent of drm flow:
      --Step 1: gather all the bridge settings independent of drm and
      	  add the bridge onto a global list of bridges.
      --Step 2: when the encoder driver is probed, call drm_bridge_attach
      	  for the corresponding bridge so that the bridge receives
      	  drm_device pointer and continues with connector and other
      	  drm initializations.
      
      The old set of bridge helpers are removed, and a set of new helpers
      are added to accomplish the 2 step initialization.
      
      The bridge devices register themselves onto global list of bridges
      when they get probed by calling "drm_bridge_add".
      
      The parent encoder driver waits till the bridge is available
      in the lookup table(by calling "of_drm_find_bridge") and then
      continues with its initialization.
      
      The encoder driver should also call "drm_bridge_attach" to pass
      on the drm_device to the bridge object.
      
      drm_bridge_attach inturn calls "bridge->funcs->attach" so that
      bridge can continue with drm related initializations.
      Signed-off-by: NAjay Kumar <ajaykumar.rs@samsung.com>
      Acked-by: NInki Dae <inki.dae@samsung.com>
      Tested-by: NRahul Sharma <rahul.sharma@samsung.com>
      Tested-by: NJavier Martinez Canillas <javier.martinez@collabora.co.uk>
      Tested-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Tested-by: NSjoerd Simons <sjoerd.simons@collabora.co.uk>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      3d3f8b1f
  7. 21 11月, 2014 2 次提交
    • R
      drm/msm/hdmi: remove useless kref · d1a717bd
      Rob Clark 提交于
      A left-over from prior to component framework.  The original intent was
      to deal with hdmi getting unloaded before the master component, but that
      isn't really going to work anyways.  These days with the component
      framework taking care to unload the master component first, we don't
      have to worry about this.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      d1a717bd
    • R
      drm/msm/mdp5: use irqdomains · f6a8eaca
      Rob Clark 提交于
      For mdp5, the irqs of hdmi/eDP/dsi0/dsi1 blocks get routed through the
      mdp block.  In order to decouple hdmi/eDP/etc, register an irq domain
      in mdp5.  When hdmi/dsi/etc are used with mdp4, they can directly setup
      their irqs in their DT nodes as normal.  When used with mdp5, instead
      set the mdp device as the interrupt-parent, as in:
      
      	mdp: qcom,mdss_mdp@fd900000 {
      		compatible = "qcom,mdss_mdp";
      		interrupt-controller;
      		#interrupt-cells = <1>;
      		...
      	};
      
      	hdmi: qcom,hdmi_tx@fd922100 {
      		compatible = "qcom,hdmi-tx-8074";
      		interrupt-parent = <&mdp>;
      		interrupts = <8 0>;   /* MDP5_HW_INTR_STATUS.INTR_HDMI */
      		...
      	};
      
      There is a slight awkwardness, in that we cannot disable child irqs
      at the mdp level, they can only be cleared in the child block.  So
      you must not use threaded irq handlers in the child.  I'm not sure
      if there is a better way to deal with that.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      f6a8eaca
  8. 04 8月, 2014 1 次提交
  9. 22 6月, 2014 1 次提交
  10. 31 3月, 2014 1 次提交
  11. 10 1月, 2014 1 次提交
    • R
      drm/msm: add hdmi support for apq8x74/mdp5 · dada25bd
      Rob Clark 提交于
      The HDMI block is basically the same between older SoC's with mdp4
      display controller, and newer ones with mdp5.
      
      So mostly this consists of better abstracting out the different sets of
      regulators, clks, etc.  In particular, for regulators and clks we can
      split it up by what is needed for hot plug detect to work, and what is
      needed to light up the display.
      
      Also, 8x74 has a new phy.. a very simple one, but split out into a
      different mmio space.  And with mdp5, the irq is shared with mdp, so we
      don't directly register our own irq handler.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      dada25bd
  12. 02 9月, 2013 1 次提交
  13. 25 8月, 2013 1 次提交
    • R
      drm/msm: basic KMS driver for snapdragon · c8afe684
      Rob Clark 提交于
      The snapdragon chips have multiple different display controllers,
      depending on which chip variant/version.  (As far as I can tell, current
      devices have either MDP3 or MDP4, and upcoming devices have MDSS.)  And
      then external to the display controller are HDMI, DSI, etc. blocks which
      may be shared across devices which have different display controller
      blocks.
      
      To more easily add support for different display controller blocks, the
      display controller specific bits are split out into a "kms" module,
      which provides the kms plane/crtc/encoder objects.
      
      The external HDMI, DSI, etc. blocks are part encoder, and part connector
      currently.  But I think I will pull in the drm_bridge patches from
      chromeos tree, and split them into a bridge+connector, with the
      registers that need to be set in modeset handled by the bridge.  This
      would remove the 'msm_connector' base class.  But some things need to be
      double checked to make sure I could get the correct ON/OFF sequencing..
      
      This patch adds support for mdp4 crtc (including hw cursor), dtv encoder
      (part of MDP4 block), and hdmi.
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      c8afe684