linux/include/sound/cs35l35.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * linux/sound/cs35l35.h -- Platform data for CS35l35
   4 *
   5 * Copyright (c) 2016 Cirrus Logic Inc.
   6 */
   7
   8#ifndef __CS35L35_H
   9#define __CS35L35_H
  10
  11struct classh_cfg {
  12        /*
  13         * Class H Algorithm Control Variables
  14         * You can either have it done
  15         * automatically or you can adjust
  16         * these variables for tuning
  17         *
  18         * if you do not enable the internal algorithm
  19         * you will get a set of mixer controls for
  20         * Class H tuning
  21         *
  22         * Section 4.3 of the datasheet
  23         */
  24        bool classh_bst_override;
  25        bool classh_algo_enable;
  26        int classh_bst_max_limit;
  27        int classh_mem_depth;
  28        int classh_release_rate;
  29        int classh_headroom;
  30        int classh_wk_fet_disable;
  31        int classh_wk_fet_delay;
  32        int classh_wk_fet_thld;
  33        int classh_vpch_auto;
  34        int classh_vpch_rate;
  35        int classh_vpch_man;
  36};
  37
  38struct monitor_cfg {
  39        /*
  40         * Signal Monitor Data
  41         * highly configurable signal monitoring
  42         * data positioning and different types of
  43         * monitoring data.
  44         *
  45         * Section 4.8.2 - 4.8.4 of the datasheet
  46         */
  47        bool is_present;
  48        bool imon_specs;
  49        bool vmon_specs;
  50        bool vpmon_specs;
  51        bool vbstmon_specs;
  52        bool vpbrstat_specs;
  53        bool zerofill_specs;
  54        u8 imon_dpth;
  55        u8 imon_loc;
  56        u8 imon_frm;
  57        u8 imon_scale;
  58        u8 vmon_dpth;
  59        u8 vmon_loc;
  60        u8 vmon_frm;
  61        u8 vpmon_dpth;
  62        u8 vpmon_loc;
  63        u8 vpmon_frm;
  64        u8 vbstmon_dpth;
  65        u8 vbstmon_loc;
  66        u8 vbstmon_frm;
  67        u8 vpbrstat_dpth;
  68        u8 vpbrstat_loc;
  69        u8 vpbrstat_frm;
  70        u8 zerofill_dpth;
  71        u8 zerofill_loc;
  72        u8 zerofill_frm;
  73};
  74
  75struct cs35l35_platform_data {
  76
  77        /* Stereo (2 Device) */
  78        bool stereo;
  79        /* serial port drive strength */
  80        int sp_drv_str;
  81        /* serial port drive in unused slots */
  82        int sp_drv_unused;
  83        /* Boost Power Down with FET */
  84        bool bst_pdn_fet_on;
  85        /* Boost Voltage : used if ClassH Algo Enabled */
  86        int bst_vctl;
  87        /* Boost Converter Peak Current CTRL */
  88        int bst_ipk;
  89        /* Amp Gain Zero Cross */
  90        bool gain_zc;
  91        /* Audio Input Location */
  92        int aud_channel;
  93        /* Advisory Input Location */
  94        int adv_channel;
  95        /* Shared Boost for stereo */
  96        bool shared_bst;
  97        /* Specifies this amp is using an external boost supply */
  98        bool ext_bst;
  99        /* Inductor Value */
 100        int boost_ind;
 101        /* ClassH Algorithm */
 102        struct classh_cfg classh_algo;
 103        /* Monitor Config */
 104        struct monitor_cfg mon_cfg;
 105};
 106
 107#endif /* __CS35L35_H */
 108