158fddc28SImre Deak /* 258fddc28SImre Deak * Copyright © 2014 Intel Corporation 358fddc28SImre Deak * 458fddc28SImre Deak * Permission is hereby granted, free of charge, to any person obtaining a 558fddc28SImre Deak * copy of this software and associated documentation files (the "Software"), 658fddc28SImre Deak * to deal in the Software without restriction, including without limitation 758fddc28SImre Deak * the rights to use, copy, modify, merge, publish, distribute, sublicense, 858fddc28SImre Deak * and/or sell copies of the Software, and to permit persons to whom the 958fddc28SImre Deak * Software is furnished to do so, subject to the following conditions: 1058fddc28SImre Deak * 1158fddc28SImre Deak * The above copyright notice and this permission notice (including the next 1258fddc28SImre Deak * paragraph) shall be included in all copies or substantial portions of the 1358fddc28SImre Deak * Software. 1458fddc28SImre Deak * 1558fddc28SImre Deak * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1658fddc28SImre Deak * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1758fddc28SImre Deak * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1858fddc28SImre Deak * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1958fddc28SImre Deak * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 2058fddc28SImre Deak * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 2158fddc28SImre Deak * IN THE SOFTWARE. 2258fddc28SImre Deak */ 2358fddc28SImre Deak 2458fddc28SImre Deak #ifndef _I915_COMPONENT_H_ 2558fddc28SImre Deak #define _I915_COMPONENT_H_ 2658fddc28SImre Deak 2758fddc28SImre Deak struct i915_audio_component { 2858fddc28SImre Deak struct device *dev; 2958fddc28SImre Deak 3058fddc28SImre Deak const struct i915_audio_component_ops { 3158fddc28SImre Deak struct module *owner; 3258fddc28SImre Deak void (*get_power)(struct device *); 3358fddc28SImre Deak void (*put_power)(struct device *); 34632f3ab9SLu, Han void (*codec_wake_override)(struct device *, bool enable); 3558fddc28SImre Deak int (*get_cdclk_freq)(struct device *); 365334240cSLibin Yang /** 375334240cSLibin Yang * @sync_audio_rate: set n/cts based on the sample rate 385334240cSLibin Yang * 395334240cSLibin Yang * Called from audio driver. After audio driver sets the 405334240cSLibin Yang * sample rate, it will call this function to set n/cts 415334240cSLibin Yang */ 425334240cSLibin Yang int (*sync_audio_rate)(struct device *, int port, int rate); 4358fddc28SImre Deak } *ops; 442a8ceedfSDavid Henningsson 452a8ceedfSDavid Henningsson const struct i915_audio_component_audio_ops { 462a8ceedfSDavid Henningsson void *audio_ptr; 472a8ceedfSDavid Henningsson /** 482a8ceedfSDavid Henningsson * Call from i915 driver, notifying the HDA driver that 492a8ceedfSDavid Henningsson * pin sense and/or ELD information has changed. 502a8ceedfSDavid Henningsson * @audio_ptr: HDA driver object 512a8ceedfSDavid Henningsson * @port: Which port has changed (PORTA / PORTB / PORTC etc) 522a8ceedfSDavid Henningsson */ 53f0675d4aSDavid Henningsson void (*pin_eld_notify)(void *audio_ptr, int port); 542a8ceedfSDavid Henningsson } *audio_ops; 5558fddc28SImre Deak }; 5658fddc28SImre Deak 5758fddc28SImre Deak #endif /* _I915_COMPONENT_H_ */ 58