• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2015 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import logging
6
7from autotest_lib.client.bin import test
8from autotest_lib.client.common_lib import error
9from autotest_lib.client.cros import ec as cros_ec
10
11
12class usbpd_DisplayPortSink(test.test):
13    """Integration test for USB-PD DisplayPort sink."""
14
15    version = 1
16    DP_SVID = '0xff01'
17
18    def _is_displayport(self, port):
19        return port.is_amode_supported(self.DP_SVID)
20
21    def _set_displayport(self, port, opos, enter):
22        return port.set_amode(self.DP_SVID, opos, enter)
23
24    def run_once(self, enter_reps=1):
25        usbpd = cros_ec.EC_USBPD()
26        logging.info("device has %d USB-PD ports", len(usbpd.ports))
27
28        for i,port in enumerate(usbpd.ports):
29            if not port.is_dfp():
30                continue
31
32            logging.info("Port %d is dfp", i)
33
34            if not self._is_displayport(port):
35                continue
36
37            logging.info("Port %d supports dp", i)
38
39            for _ in xrange(enter_reps):
40                if not self._set_displayport(port, 1, False):
41                    raise error.TestError("Failed to exit DP mode")
42
43                if not self._set_displayport(port, 1, True):
44                    raise error.TestError("Failed to enter DP mode")
45