1. 11 6月, 2016 1 次提交
  2. 02 6月, 2016 1 次提交
  3. 30 5月, 2016 1 次提交
  4. 23 5月, 2016 2 次提交
    • R
      drm/i915/bxt: Adjusting the error in horizontal timings retrieval · 4832aa16
      Ramalingam C 提交于
      In BXT DSI there is no regs programmed with few horizontal timings
      in Pixels but txbyteclkhs.. So retrieval process adds some
      ROUND_UP ERRORS in the process of PIXELS<==>txbyteclkhs.
      
      Actually here for the given adjusted_mode, we are calculating the
      value programmed to the port and then back to the horizontal timing
      param in pixels. This is the expected value at the end of get_config,
      including roundup errors. And if that is same as retrieved value
      from port, then retrieved (HW state) adjusted_mode's horizontal
      timings are corrected to match with SW state to nullify the errors.
      Signed-off-by: NRamalingam C <ramalingam.c@intel.com>
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Acked-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461053894-5058-2-git-send-email-ramalingam.c@intel.com
      (cherry picked from commit 042ab0c3)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      4832aa16
    • R
      drm/i915/BXT: Retrieving the horizontal timing for DSI · 130b62f7
      Ramalingam C 提交于
      Retriving the horizontal timings from the port registers as part of
      get_config().
      
      This fixes a division by zero:
      
      [   56.916557] divide error: 0000 [#1] PREEMPT SMP
      [   56.921741] Modules linked in: i915(+) drm_kms_helper syscopyarea
      sysfillrect sysimgblt fb_sys_fops drm intel_gtt agpgart cf
      g80211 rfkill binfmt_misc ax88179_178a kvm_intel kvm irqbypass crc32c_intel
      efivars tpm_tis tpm fuse
      [   56.944106] CPU: 3 PID: 1097 Comm: modprobe Not tainted 4.6.0-rc4+ #433
      [   56.951501] Hardware name: Intel Corp. Broxton M/RVP, BIOS
      BXT1RVPA.X64.0131.B30.1604142217 04/14/2016
      [   56.961908] task: ffff88007a854d00 ti: ffff88007aea0000 task.ti:
      ffff88007aea0000
      [   56.970273] RIP: 0010:[<ffffffffa01235b2>]  [<ffffffffa01235b2>]
      drm_mode_hsync+0x22/0x40 [drm]
      [   56.980043] RSP: 0018:ffff88007aea3788  EFLAGS: 00010206
      [   56.985982] RAX: 000000000788b600 RBX: ffff880073c22108 RCX:
      0000000000000000
      [   56.993957] RDX: 0000000000000000 RSI: ffff88007ab06800 RDI:
      ffff880073c22108
      [   57.001935] RBP: ffff88007aea3788 R08: 0000000000000001 R09:
      ffff880073c221e8
      [   57.009903] R10: ffff880073c22108 R11: 0000000000000001 R12:
      ffff88007a300000
      [   57.017872] R13: ffff880073c22000 R14: ffff880175f78000 R15:
      ffff880175f78798
      [   57.025849] FS:  00007f105d3e6700(0000) GS:ffff88017fd80000(0000)
      knlGS:0000000000000000
      [   57.034894] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   57.041317] CR2: 00007f4d485101d0 CR3: 000000007a820000 CR4:
      00000000003406e0
      [   57.049292] Stack:
      [   57.051539]  ffff88007aea37a0 ffffffffa043b632 ffff880175f787c8
      ffff88007aea3810
      [   57.059825]  ffffffffa043d59e ffff880175f787b0 ffff88007ab68c00
      ffff88007aea37f0
      [   57.068128]  ffff880073c221e8 ffff880073c22108 ffff880175f78780
      ffff880100000000
      [   57.076430] Call Trace:
      [   57.079254]  [<ffffffffa043b632>] intel_mode_from_pipe_config+0x82/0xb0
      [i915]
      [   57.087405]  [<ffffffffa043d59e>] intel_modeset_setup_hw_state+0x55e/0xd60
      [i915]
      [   57.095847]  [<ffffffffa043ff94>] intel_modeset_init+0x8e4/0x1630 [i915]
      [   57.103415]  [<ffffffffa047bcf0>] i915_driver_load+0xbe0/0x1980 [i915]
      [   57.110745]  [<ffffffffa0116c19>] drm_dev_register+0xa9/0xc0 [drm]
      [   57.117681]  [<ffffffffa011921d>] drm_get_pci_dev+0x8d/0x1e0 [drm]
      [   57.124600]  [<ffffffff8195f942>] ? _raw_spin_unlock_irqrestore+0x42/0x70
      [   57.132253]  [<ffffffffa03b0384>] i915_pci_probe+0x34/0x50 [i915]
      [   57.139070]  [<ffffffff8149c375>] local_pci_probe+0x45/0xa0
      [   57.145303]  [<ffffffff8149d300>] ? pci_match_device+0xe0/0x110
      [   57.151924]  [<ffffffff8149d6cb>] pci_device_probe+0xdb/0x130
      [   57.158355]  [<ffffffff81579b93>] driver_probe_device+0x223/0x440
      [   57.165169]  [<ffffffff81579e85>] __driver_attach+0xd5/0x100
      [   57.171500]  [<ffffffff81579db0>] ? driver_probe_device+0x440/0x440
      [   57.178510]  [<ffffffff81577736>] bus_for_each_dev+0x66/0xa0
      [   57.184841]  [<ffffffff815793de>] driver_attach+0x1e/0x20
      [   57.190881]  [<ffffffff81578d6e>] bus_add_driver+0x1ee/0x280
      [   57.197212]  [<ffffffff8157abc0>] driver_register+0x60/0xe0
      [   57.203447]  [<ffffffff8149bc50>] __pci_register_driver+0x60/0x70
      [   57.210285]  [<ffffffffa0119450>] drm_pci_init+0xe0/0x110 [drm]
      [   57.216911]  [<ffffffff810dcd8d>] ? trace_hardirqs_on+0xd/0x10
      [   57.223434]  [<ffffffffa023a000>] ? 0xffffffffa023a000
      [   57.229237]  [<ffffffffa023a092>] i915_init+0x92/0x99 [i915]
      [   57.235570]  [<ffffffff810003db>] do_one_initcall+0xab/0x1d0
      [   57.241900]  [<ffffffff810f9eef>] ? rcu_read_lock_sched_held+0x7f/0x90
      [   57.249205]  [<ffffffff81204f18>] ? kmem_cache_alloc_trace+0x248/0x2b0
      [   57.256509]  [<ffffffff811a5eee>] ? do_init_module+0x27/0x1d9
      [   57.262934]  [<ffffffff811a5f26>] do_init_module+0x5f/0x1d9
      [   57.269167]  [<ffffffff8112392f>] load_module+0x20ef/0x27b0
      [   57.275401]  [<ffffffff8111f8e0>] ? store_uevent+0x40/0x40
      [   57.281541]  [<ffffffff81124243>] SYSC_finit_module+0xc3/0xf0
      [   57.287969]  [<ffffffff8112428e>] SyS_finit_module+0xe/0x10
      [   57.294203]  [<ffffffff81960069>] entry_SYSCALL_64_fastpath+0x1c/0xac
      [   57.301406] Code: ff 5d c3 66 0f 1f 44 00 00 0f 1f 44 00 00 8b 87 d8 00 00
      00 55 48 89 e5 85 c0 75 22 8b 4f 68 85 c9 78 1b 69 47 58 e8 03 00 00 99 <f7> f9
      b9 d3 4d 62 10 05 f4 01 00 00 f7 e1 89 d0 c1 e8 06 5d c3
      [   57.322964] RIP  [<ffffffffa01235b2>] drm_mode_hsync+0x22/0x40 [drm]
      [   57.330103]  RSP <ffff88007aea3788>
      [   57.334276] ---[ end trace d414224cb2e2a4cf ]---
      [   57.339861] modprobe (1097) used greatest stack depth: 12048 bytes left
      
      Fixes: 6f0e7535 ("drm/i915/BXT: Get pipe conf from the port registers")
      Signed-off-by: NRamalingam C <ramalingam.c@intel.com>
      Acked-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461053894-5058-1-git-send-email-ramalingam.c@intel.com
      (cherry picked from commit cefc4e18)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      130b62f7
  5. 17 5月, 2016 2 次提交
  6. 28 4月, 2016 3 次提交
    • R
      drm/i915/bxt: Adjusting the error in horizontal timings retrieval · 042ab0c3
      Ramalingam C 提交于
      In BXT DSI there is no regs programmed with few horizontal timings
      in Pixels but txbyteclkhs.. So retrieval process adds some
      ROUND_UP ERRORS in the process of PIXELS<==>txbyteclkhs.
      
      Actually here for the given adjusted_mode, we are calculating the
      value programmed to the port and then back to the horizontal timing
      param in pixels. This is the expected value at the end of get_config,
      including roundup errors. And if that is same as retrieved value
      from port, then retrieved (HW state) adjusted_mode's horizontal
      timings are corrected to match with SW state to nullify the errors.
      Signed-off-by: NRamalingam C <ramalingam.c@intel.com>
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Acked-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461053894-5058-2-git-send-email-ramalingam.c@intel.com
      042ab0c3
    • R
      drm/i915/BXT: Retrieving the horizontal timing for DSI · cefc4e18
      Ramalingam C 提交于
      Retriving the horizontal timings from the port registers as part of
      get_config().
      
      This fixes a division by zero:
      
      [   56.916557] divide error: 0000 [#1] PREEMPT SMP
      [   56.921741] Modules linked in: i915(+) drm_kms_helper syscopyarea
      sysfillrect sysimgblt fb_sys_fops drm intel_gtt agpgart cf
      g80211 rfkill binfmt_misc ax88179_178a kvm_intel kvm irqbypass crc32c_intel
      efivars tpm_tis tpm fuse
      [   56.944106] CPU: 3 PID: 1097 Comm: modprobe Not tainted 4.6.0-rc4+ #433
      [   56.951501] Hardware name: Intel Corp. Broxton M/RVP, BIOS
      BXT1RVPA.X64.0131.B30.1604142217 04/14/2016
      [   56.961908] task: ffff88007a854d00 ti: ffff88007aea0000 task.ti:
      ffff88007aea0000
      [   56.970273] RIP: 0010:[<ffffffffa01235b2>]  [<ffffffffa01235b2>]
      drm_mode_hsync+0x22/0x40 [drm]
      [   56.980043] RSP: 0018:ffff88007aea3788  EFLAGS: 00010206
      [   56.985982] RAX: 000000000788b600 RBX: ffff880073c22108 RCX:
      0000000000000000
      [   56.993957] RDX: 0000000000000000 RSI: ffff88007ab06800 RDI:
      ffff880073c22108
      [   57.001935] RBP: ffff88007aea3788 R08: 0000000000000001 R09:
      ffff880073c221e8
      [   57.009903] R10: ffff880073c22108 R11: 0000000000000001 R12:
      ffff88007a300000
      [   57.017872] R13: ffff880073c22000 R14: ffff880175f78000 R15:
      ffff880175f78798
      [   57.025849] FS:  00007f105d3e6700(0000) GS:ffff88017fd80000(0000)
      knlGS:0000000000000000
      [   57.034894] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   57.041317] CR2: 00007f4d485101d0 CR3: 000000007a820000 CR4:
      00000000003406e0
      [   57.049292] Stack:
      [   57.051539]  ffff88007aea37a0 ffffffffa043b632 ffff880175f787c8
      ffff88007aea3810
      [   57.059825]  ffffffffa043d59e ffff880175f787b0 ffff88007ab68c00
      ffff88007aea37f0
      [   57.068128]  ffff880073c221e8 ffff880073c22108 ffff880175f78780
      ffff880100000000
      [   57.076430] Call Trace:
      [   57.079254]  [<ffffffffa043b632>] intel_mode_from_pipe_config+0x82/0xb0
      [i915]
      [   57.087405]  [<ffffffffa043d59e>] intel_modeset_setup_hw_state+0x55e/0xd60
      [i915]
      [   57.095847]  [<ffffffffa043ff94>] intel_modeset_init+0x8e4/0x1630 [i915]
      [   57.103415]  [<ffffffffa047bcf0>] i915_driver_load+0xbe0/0x1980 [i915]
      [   57.110745]  [<ffffffffa0116c19>] drm_dev_register+0xa9/0xc0 [drm]
      [   57.117681]  [<ffffffffa011921d>] drm_get_pci_dev+0x8d/0x1e0 [drm]
      [   57.124600]  [<ffffffff8195f942>] ? _raw_spin_unlock_irqrestore+0x42/0x70
      [   57.132253]  [<ffffffffa03b0384>] i915_pci_probe+0x34/0x50 [i915]
      [   57.139070]  [<ffffffff8149c375>] local_pci_probe+0x45/0xa0
      [   57.145303]  [<ffffffff8149d300>] ? pci_match_device+0xe0/0x110
      [   57.151924]  [<ffffffff8149d6cb>] pci_device_probe+0xdb/0x130
      [   57.158355]  [<ffffffff81579b93>] driver_probe_device+0x223/0x440
      [   57.165169]  [<ffffffff81579e85>] __driver_attach+0xd5/0x100
      [   57.171500]  [<ffffffff81579db0>] ? driver_probe_device+0x440/0x440
      [   57.178510]  [<ffffffff81577736>] bus_for_each_dev+0x66/0xa0
      [   57.184841]  [<ffffffff815793de>] driver_attach+0x1e/0x20
      [   57.190881]  [<ffffffff81578d6e>] bus_add_driver+0x1ee/0x280
      [   57.197212]  [<ffffffff8157abc0>] driver_register+0x60/0xe0
      [   57.203447]  [<ffffffff8149bc50>] __pci_register_driver+0x60/0x70
      [   57.210285]  [<ffffffffa0119450>] drm_pci_init+0xe0/0x110 [drm]
      [   57.216911]  [<ffffffff810dcd8d>] ? trace_hardirqs_on+0xd/0x10
      [   57.223434]  [<ffffffffa023a000>] ? 0xffffffffa023a000
      [   57.229237]  [<ffffffffa023a092>] i915_init+0x92/0x99 [i915]
      [   57.235570]  [<ffffffff810003db>] do_one_initcall+0xab/0x1d0
      [   57.241900]  [<ffffffff810f9eef>] ? rcu_read_lock_sched_held+0x7f/0x90
      [   57.249205]  [<ffffffff81204f18>] ? kmem_cache_alloc_trace+0x248/0x2b0
      [   57.256509]  [<ffffffff811a5eee>] ? do_init_module+0x27/0x1d9
      [   57.262934]  [<ffffffff811a5f26>] do_init_module+0x5f/0x1d9
      [   57.269167]  [<ffffffff8112392f>] load_module+0x20ef/0x27b0
      [   57.275401]  [<ffffffff8111f8e0>] ? store_uevent+0x40/0x40
      [   57.281541]  [<ffffffff81124243>] SYSC_finit_module+0xc3/0xf0
      [   57.287969]  [<ffffffff8112428e>] SyS_finit_module+0xe/0x10
      [   57.294203]  [<ffffffff81960069>] entry_SYSCALL_64_fastpath+0x1c/0xac
      [   57.301406] Code: ff 5d c3 66 0f 1f 44 00 00 0f 1f 44 00 00 8b 87 d8 00 00
      00 55 48 89 e5 85 c0 75 22 8b 4f 68 85 c9 78 1b 69 47 58 e8 03 00 00 99 <f7> f9
      b9 d3 4d 62 10 05 f4 01 00 00 f7 e1 89 d0 c1 e8 06 5d c3
      [   57.322964] RIP  [<ffffffffa01235b2>] drm_mode_hsync+0x22/0x40 [drm]
      [   57.330103]  RSP <ffff88007aea3788>
      [   57.334276] ---[ end trace d414224cb2e2a4cf ]---
      [   57.339861] modprobe (1097) used greatest stack depth: 12048 bytes left
      
      Fixes: 6f0e7535 ("drm/i915/BXT: Get pipe conf from the port registers")
      Signed-off-by: NRamalingam C <ramalingam.c@intel.com>
      Acked-by: NImre Deak <imre.deak@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461053894-5058-1-git-send-email-ramalingam.c@intel.com
      cefc4e18
    • V
      drm/i915: Unify VLV/CHV DPOunit clock gating disable/enable · d1877c0f
      Ville Syrjälä 提交于
      Check for VLV/CHV instead if !BXT when re-enabling DPOunit clock gating
      after DSI disable. That's what we checked when disabling the clock
      gating when enabling DSI.
      
      Also use the same temporary variable name in both cases, and toss in a
      bit of dev vs. dev_priv cleanup while at it.
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1460996305-30453-1-git-send-email-ville.syrjala@linux.intel.comReviewed-by: NJani Nikula <jani.nikula@intel.com>
      d1877c0f
  7. 19 4月, 2016 1 次提交
  8. 18 4月, 2016 1 次提交
  9. 15 4月, 2016 4 次提交
  10. 13 4月, 2016 1 次提交
  11. 07 4月, 2016 2 次提交
  12. 24 3月, 2016 1 次提交
    • I
      drm/i915/bxt: Fix DSI HW state readout · db18b6a6
      Imre Deak 提交于
      Currently the machine hangs during booting while accessing the
      BXT_MIPI_PORT_CTRL register during pipe HW state readout. After some
      experimentation I found that the hang is caused by the DSI PLL being
      disabled, or it being enabled but with an incorrect divider
      configuration. Enabling the PLL got rid of the boot problem, so fix
      this by checking the PLL enabled state/configuration before attempting
      to read out the HW state.
      
      The DSI_PLL_ENABLE register is in the always-on power well, while the
      BXT_DSI_PLL_CTL is in power well 0. This isn't exactly matched by the
      transcoder power domain, but what we really need is just a runtime PM
      reference, which is provided by any power domain.
      
      Ville also found this dependency specified in BSpec, so I added a
      reference to that too.
      
      v2:
      - Make sure we hold a power reference while accessing the PLL registers.
      v3: (Jani)
      - Simplify check in bxt_get_dsi_transcoder_state()
      - Add comment explaining why we check for valid dividers in
        bxt_dsi_pll_is_enabled()
      
      CC: Shashank Sharma <shashank.sharma@intel.com>
      CC: Uma Shankar <uma.shankar@intel.com>
      CC: Jani Nikula <jani.nikula@intel.com>
      Fixes: c6c794a2 ("drm/i915/bxt: Initialize MIPI DSI for BXT")
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Reviewed-by: NShashank Sharma <shashank.sharma@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1458816100-31269-1-git-send-email-imre.deak@intel.com
      db18b6a6
  13. 22 3月, 2016 1 次提交
  14. 21 3月, 2016 3 次提交
  15. 17 3月, 2016 3 次提交
  16. 16 3月, 2016 1 次提交
  17. 22 2月, 2016 1 次提交
  18. 19 2月, 2016 2 次提交
  19. 17 2月, 2016 1 次提交
  20. 04 2月, 2016 1 次提交
  21. 08 1月, 2016 1 次提交
  22. 12 12月, 2015 1 次提交
  23. 11 12月, 2015 1 次提交
  24. 10 12月, 2015 1 次提交
  25. 30 11月, 2015 2 次提交
  26. 18 11月, 2015 1 次提交
    • V
      drm/i915: Type safe register read/write · f0f59a00
      Ville Syrjälä 提交于
      Make I915_READ and I915_WRITE more type safe by wrapping the register
      offset in a struct. This should eliminate most of the fumbles we've had
      with misplaced parens.
      
      This only takes care of normal mmio registers. We could extend the idea
      to other register types and define each with its own struct. That way
      you wouldn't be able to accidentally pass the wrong thing to a specific
      register access function.
      
      The gpio_reg setup is probably the ugliest thing left. But I figure I'd
      just leave it for now, and wait for some divine inspiration to strike
      before making it nice.
      
      As for the generated code, it's actually a bit better sometimes. Eg.
      looking at i915_irq_handler(), we can see the following change:
        lea    0x70024(%rdx,%rax,1),%r9d
        mov    $0x1,%edx
      - movslq %r9d,%r9
      - mov    %r9,%rsi
      - mov    %r9,-0x58(%rbp)
      - callq  *0xd8(%rbx)
      + mov    %r9d,%esi
      + mov    %r9d,-0x48(%rbp)
       callq  *0xd8(%rbx)
      
      So previously gcc thought the register offset might be signed and
      decided to sign extend it, just in case. The rest appears to be
      mostly just minor shuffling of instructions.
      
      v2: i915_mmio_reg_{offset,equal,valid}() helpers added
          s/_REG/_MMIO/ in the register defines
          mo more switch statements left to worry about
          ring_emit stuff got sorted in a prep patch
          cmd parser, lrc context and w/a batch buildup also in prep patch
          vgpu stuff cleaned up and moved to a prep patch
          all other unrelated changes split out
      v3: Rebased due to BXT DSI/BLC, MOCS, etc.
      v4: Rebased due to churn, s/i915_mmio_reg_t/i915_reg_t/
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: http://patchwork.freedesktop.org/patch/msgid/1447853606-2751-1-git-send-email-ville.syrjala@linux.intel.com
      f0f59a00