LCOV - code coverage report
Current view: top level - zephyr/drivers/haptics - drv2605.h Hit Total Coverage
Test: new.info Lines: 2 21 9.5 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2024 Cirrus Logic, Inc.
       3             :  * SPDX-License-Identifier: Apache-2.0
       4             :  */
       5             : 
       6             : #ifndef ZEPHYR_INCLUDE_DRIVERS_HAPTICS_DRV2605_H_
       7             : #define ZEPHYR_INCLUDE_DRIVERS_HAPTICS_DRV2605_H_
       8             : 
       9             : #include <zephyr/drivers/haptics.h>
      10             : #include <zephyr/types.h>
      11             : 
      12           0 : #define DRV2605_WAVEFORM_SEQUENCER_MAX 8
      13             : 
      14           0 : enum drv2605_library {
      15             :         DRV2605_LIBRARY_EMPTY = 0,
      16             :         DRV2605_LIBRARY_TS2200_A,
      17             :         DRV2605_LIBRARY_TS2200_B,
      18             :         DRV2605_LIBRARY_TS2200_C,
      19             :         DRV2605_LIBRARY_TS2200_D,
      20             :         DRV2605_LIBRARY_TS2200_E,
      21             :         DRV2605_LIBRARY_LRA,
      22             : };
      23             : 
      24           0 : enum drv2605_mode {
      25             :         DRV2605_MODE_INTERNAL_TRIGGER = 0,
      26             :         DRV2605_MODE_EXTERNAL_EDGE_TRIGGER,
      27             :         DRV2605_MODE_EXTERNAL_LEVEL_TRIGGER,
      28             :         DRV2605_MODE_PWM_ANALOG_INPUT,
      29             :         DRV2605_MODE_AUDIO_TO_VIBE,
      30             :         DRV2605_MODE_RTP,
      31             :         DRV2605_MODE_DIAGNOSTICS,
      32             :         DRV2605_MODE_AUTO_CAL,
      33             : };
      34             : 
      35             : /**
      36             :  * @brief DRV2605 haptic driver signal sources
      37             :  */
      38           1 : enum drv2605_haptics_source {
      39             :         /** The playback source is device ROM */
      40             :         DRV2605_HAPTICS_SOURCE_ROM,
      41             :         /** The playback source is the RTP buffer */
      42             :         DRV2605_HAPTICS_SOURCE_RTP,
      43             :         /** The playback source is audio */
      44             :         DRV2605_HAPTICS_SOURCE_AUDIO,
      45             :         /** The playback source is a PWM signal */
      46             :         DRV2605_HAPTICS_SOURCE_PWM,
      47             :         /** The playback source is an analog signal */
      48             :         DRV2605_HAPTICS_SOURCE_ANALOG,
      49             : };
      50             : 
      51           0 : struct drv2605_rom_data {
      52           0 :         enum drv2605_mode trigger;
      53           0 :         enum drv2605_library library;
      54           0 :         uint8_t seq_regs[DRV2605_WAVEFORM_SEQUENCER_MAX];
      55           0 :         uint8_t overdrive_time;
      56           0 :         uint8_t sustain_pos_time;
      57           0 :         uint8_t sustain_neg_time;
      58           0 :         uint8_t brake_time;
      59             : };
      60             : 
      61           0 : struct drv2605_rtp_data {
      62           0 :         size_t size;
      63           0 :         uint32_t *rtp_hold_us;
      64           0 :         uint8_t *rtp_input;
      65             : };
      66             : 
      67           0 : union drv2605_config_data {
      68           0 :         struct drv2605_rom_data *rom_data;
      69           0 :         struct drv2605_rtp_data *rtp_data;
      70             : };
      71             : 
      72             : /**
      73             :  * @brief Configure the DRV2605 device for a particular signal source
      74             :  *
      75             :  * @param dev Pointer to the device structure for haptic device instance
      76             :  * @param source The type of haptic signal source desired
      77             :  * @param config_data Pointer to the configuration data union for the source
      78             :  *
      79             :  * @retval 0 if successful
      80             :  * @retval -ENOTSUP if the signal source is not supported
      81             :  * @retval <0 if failed
      82             :  */
      83           1 : int drv2605_haptic_config(const struct device *dev, enum drv2605_haptics_source source,
      84             :                           const union drv2605_config_data *config_data);
      85             : 
      86             : #endif

Generated by: LCOV version 1.14