nouveau_nvkm_engine_disp_sorgt215.c revision 1.1
1144966Svkashyap/* $NetBSD: nouveau_nvkm_engine_disp_sorgt215.c,v 1.1 2021/12/18 20:15:38 riastradh Exp $ */ 2169400Sscottl 3144966Svkashyap/* 4144966Svkashyap * Copyright 2017 Red Hat Inc. 5144966Svkashyap * 6144966Svkashyap * Permission is hereby granted, free of charge, to any person obtaining a 7144966Svkashyap * copy of this software and associated documentation files (the "Software"), 8144966Svkashyap * to deal in the Software without restriction, including without limitation 9144966Svkashyap * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10144966Svkashyap * and/or sell copies of the Software, and to permit persons to whom the 11144966Svkashyap * Software is furnished to do so, subject to the following conditions: 12144966Svkashyap * 13144966Svkashyap * The above copyright notice and this permission notice shall be included in 14144966Svkashyap * all copies or substantial portions of the Software. 15144966Svkashyap * 16144966Svkashyap * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17144966Svkashyap * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18144966Svkashyap * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19144966Svkashyap * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 20144966Svkashyap * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21144966Svkashyap * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22144966Svkashyap * OTHER DEALINGS IN THE SOFTWARE. 23144966Svkashyap */ 24144966Svkashyap#include <sys/cdefs.h> 25144966Svkashyap__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_disp_sorgt215.c,v 1.1 2021/12/18 20:15:38 riastradh Exp $"); 26144966Svkashyap 27144966Svkashyap#include "ior.h" 28144966Svkashyap 29144966Svkashyap#include <subdev/timer.h> 30144966Svkashyap 31144966Svkashyapvoid 32144966Svkashyapgt215_sor_dp_audio(struct nvkm_ior *sor, int head, bool enable) 33144966Svkashyap{ 34169400Sscottl struct nvkm_device *device = sor->disp->engine.subdev.device; 35172496Sscottl const u32 soff = nv50_ior_base(sor); 36144966Svkashyap const u32 data = 0x80000000 | (0x00000001 * enable); 37144966Svkashyap const u32 mask = 0x8000000d; 38144966Svkashyap nvkm_mask(device, 0x61c1e0 + soff, mask, data); 39144966Svkashyap nvkm_msec(device, 2000, 40144966Svkashyap if (!(nvkm_rd32(device, 0x61c1e0 + soff) & 0x80000000)) 41144966Svkashyap break; 42144966Svkashyap ); 43144966Svkashyap} 44149968Sobrien 45144966Svkashyapstatic const struct nvkm_ior_func 46144966Svkashyapgt215_sor = { 47144966Svkashyap .state = g94_sor_state, 48144966Svkashyap .power = nv50_sor_power, 49144966Svkashyap .clock = nv50_sor_clock, 50144966Svkashyap .hdmi = { 51144966Svkashyap .ctrl = gt215_hdmi_ctrl, 52144966Svkashyap }, 53144966Svkashyap .dp = { 54144966Svkashyap .lanes = { 2, 1, 0, 3 }, 55144966Svkashyap .links = g94_sor_dp_links, 56144966Svkashyap .power = g94_sor_dp_power, 57144966Svkashyap .pattern = g94_sor_dp_pattern, 58144966Svkashyap .drive = g94_sor_dp_drive, 59144966Svkashyap .audio = gt215_sor_dp_audio, 60144966Svkashyap .audio_sym = g94_sor_dp_audio_sym, 61144966Svkashyap .activesym = g94_sor_dp_activesym, 62144966Svkashyap .watermark = g94_sor_dp_watermark, 63144966Svkashyap }, 64144966Svkashyap .hda = { 65144966Svkashyap .hpd = gt215_hda_hpd, 66144966Svkashyap .eld = gt215_hda_eld, 67144966Svkashyap }, 68144966Svkashyap}; 69144966Svkashyap 70144966Svkashyapint 71144966Svkashyapgt215_sor_new(struct nvkm_disp *disp, int id) 72144966Svkashyap{ 73144966Svkashyap return nvkm_ior_new_(>215_sor, disp, SOR, id); 74144966Svkashyap} 75144966Svkashyap