Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Copyright © 2014 Intel Corporation
  3.  *
  4.  * Permission is hereby granted, free of charge, to any person obtaining a
  5.  * copy of this software and associated documentation files (the "Software"),
  6.  * to deal in the Software without restriction, including without limitation
  7.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8.  * and/or sell copies of the Software, and to permit persons to whom the
  9.  * Software is furnished to do so, subject to the following conditions:
  10.  *
  11.  * The above copyright notice and this permission notice (including the next
  12.  * paragraph) shall be included in all copies or substantial portions of the
  13.  * Software.
  14.  *
  15.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  18.  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19.  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  20.  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  21.  * IN THE SOFTWARE.
  22.  */
  23.  
  24. #ifndef _I915_COMPONENT_H_
  25. #define _I915_COMPONENT_H_
  26.  
  27. /* MAX_PORT is the number of port
  28.  * It must be sync with I915_MAX_PORTS defined i915_drv.h
  29.  * 5 should be enough as only HSW, BDW, SKL need such fix.
  30.  */
  31. #define MAX_PORTS 5
  32.  
  33. /**
  34.  * struct i915_audio_component_ops - callbacks defined in gfx driver
  35.  * @owner: the module owner
  36.  * @get_power: get the POWER_DOMAIN_AUDIO power well
  37.  * @put_power: put the POWER_DOMAIN_AUDIO power well
  38.  * @codec_wake_override: Enable/Disable generating the codec wake signal
  39.  * @get_cdclk_freq: get the Core Display Clock in KHz
  40.  * @sync_audio_rate: set n/cts based on the sample rate
  41.  */
  42. struct i915_audio_component_ops {
  43.         struct module *owner;
  44.         void (*get_power)(struct device *);
  45.         void (*put_power)(struct device *);
  46.         void (*codec_wake_override)(struct device *, bool enable);
  47.         int (*get_cdclk_freq)(struct device *);
  48.         int (*sync_audio_rate)(struct device *, int port, int rate);
  49. };
  50.  
  51. struct i915_audio_component_audio_ops {
  52.         void *audio_ptr;
  53.         /**
  54.          * Call from i915 driver, notifying the HDA driver that
  55.          * pin sense and/or ELD information has changed.
  56.          * @audio_ptr:          HDA driver object
  57.          * @port:       Which port has changed (PORTA / PORTB / PORTC etc)
  58.          */
  59.         void (*pin_eld_notify)(void *audio_ptr, int port);
  60. };
  61.  
  62. /**
  63.  * struct i915_audio_component - used for audio video interaction
  64.  * @dev: the device from gfx driver
  65.  * @aud_sample_rate: the array of audio sample rate per port
  66.  * @ops: callback for audio driver calling
  67.  * @audio_ops: Call from i915 driver
  68.  */
  69. struct i915_audio_component {
  70.         struct device *dev;
  71.         int aud_sample_rate[MAX_PORTS];
  72.  
  73.         const struct i915_audio_component_ops *ops;
  74.  
  75.         const struct i915_audio_component_audio_ops *audio_ops;
  76. };
  77.  
  78. #endif /* _I915_COMPONENT_H_ */
  79.