LCOV - code coverage report
Current view: top level - zephyr/drivers/usb_c - usbc_vbus.h Coverage Total Hit
Test: new.info Lines: 50.0 % 10 5
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            1 : /*
       2              :  * Copyright 2022 The Chromium OS Authors
       3              :  * SPDX-License-Identifier: Apache-2.0
       4              :  */
       5              : 
       6              : /**
       7              :  * @file
       8              :  * @brief USB-C VBUS device APIs
       9              :  *
      10              :  * This file contains the USB-C VBUS device APIs.
      11              :  * All USB-C VBUS measurement and control device drivers should
      12              :  * implement the APIs described in this file.
      13              :  */
      14              : 
      15              : #ifndef ZEPHYR_INCLUDE_DRIVERS_USBC_VBUS_H_
      16              : #define ZEPHYR_INCLUDE_DRIVERS_USBC_VBUS_H_
      17              : 
      18              : /**
      19              :  * @brief USB-C VBUS API
      20              :  * @defgroup usbc_vbus_api USB-C VBUS API
      21              :  * @since 3.3
      22              :  * @version 0.1.0
      23              :  * @ingroup usb_type_c
      24              :  * @{
      25              :  */
      26              : 
      27              : #include <zephyr/types.h>
      28              : #include <zephyr/device.h>
      29              : #include <zephyr/drivers/usb_c/usbc_tc.h>
      30              : 
      31              : #ifdef __cplusplus
      32              : extern "C" {
      33              : #endif
      34              : 
      35            0 : __subsystem struct usbc_vbus_driver_api {
      36            0 :         bool (*check_level)(const struct device *dev, enum tc_vbus_level level);
      37            0 :         int (*measure)(const struct device *dev, int *vbus_meas);
      38            0 :         int (*discharge)(const struct device *dev, bool enable);
      39            0 :         int (*enable)(const struct device *dev, bool enable);
      40              : };
      41              : 
      42              : /**
      43              :  * @brief Checks if VBUS is at a particular level
      44              :  *
      45              :  * @param dev    Runtime device structure
      46              :  * @param level  The level voltage to check against
      47              :  *
      48              :  * @retval true if VBUS is at the level voltage
      49              :  * @retval false if VBUS is not at that level voltage
      50              :  */
      51            1 : static inline bool usbc_vbus_check_level(const struct device *dev, enum tc_vbus_level level)
      52              : {
      53              :         const struct usbc_vbus_driver_api *api = (const struct usbc_vbus_driver_api *)dev->api;
      54              : 
      55              :         return api->check_level(dev, level);
      56              : }
      57              : 
      58              : /**
      59              :  * @brief Reads and returns VBUS measured in mV
      60              :  *
      61              :  * @param dev        Runtime device structure
      62              :  * @param meas       pointer where the measured VBUS voltage is stored
      63              :  *
      64              :  * @retval 0 on success
      65              :  * @retval -EIO on failure
      66              :  */
      67            1 : static inline int usbc_vbus_measure(const struct device *dev, int *meas)
      68              : {
      69              :         const struct usbc_vbus_driver_api *api = (const struct usbc_vbus_driver_api *)dev->api;
      70              : 
      71              :         return api->measure(dev, meas);
      72              : }
      73              : 
      74              : /**
      75              :  * @brief Controls a pin that discharges VBUS
      76              :  *
      77              :  * @param dev        Runtime device structure
      78              :  * @param enable     Discharge VBUS when true
      79              :  *
      80              :  * @retval 0 on success
      81              :  * @retval -EIO on failure
      82              :  * @retval -ENOENT if discharge pin isn't defined
      83              :  */
      84            1 : static inline int usbc_vbus_discharge(const struct device *dev, bool enable)
      85              : {
      86              :         const struct usbc_vbus_driver_api *api = (const struct usbc_vbus_driver_api *)dev->api;
      87              : 
      88              :         return api->discharge(dev, enable);
      89              : }
      90              : 
      91              : /**
      92              :  * @brief Controls a pin that enables VBUS measurements
      93              :  *
      94              :  * @param dev     Runtime device structure
      95              :  * @param enable  enable VBUS measurements when true
      96              :  *
      97              :  * @retval 0 on success
      98              :  * @retval -EIO on failure
      99              :  * @retval -ENOENT if enable pin isn't defined
     100              :  */
     101            1 : static inline int usbc_vbus_enable(const struct device *dev, bool enable)
     102              : {
     103              :         const struct usbc_vbus_driver_api *api = (const struct usbc_vbus_driver_api *)dev->api;
     104              : 
     105              :         return api->enable(dev, enable);
     106              : }
     107              : 
     108              : /**
     109              :  * @}
     110              :  */
     111              : 
     112              : #ifdef __cplusplus
     113              : }
     114              : #endif
     115              : 
     116              : #endif /* ZEPHYR_INCLUDE_DRIVERS_USBC_VBUS_H_ */
        

Generated by: LCOV version 2.0-1