linux/drivers/gpu/drm/nouveau/nvkm/engine/disp/r535.c

/*
 * Copyright 2023 Red Hat Inc.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 */
#include "priv.h"
#include "chan.h"
#include "conn.h"
#include "dp.h"
#include "head.h"
#include "ior.h"
#include "outp.h"

#include <core/ramht.h>
#include <subdev/bios.h>
#include <subdev/bios/conn.h>
#include <subdev/gsp.h>
#include <subdev/mmu.h>
#include <subdev/vfn.h>

#include <nvhw/drf.h>

#include <nvrm/nvtypes.h>
#include <nvrm/535.113.01/common/sdk/nvidia/inc/class/cl2080_notification.h>
#include <nvrm/535.113.01/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dfp.h>
#include <nvrm/535.113.01/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073dp.h>
#include <nvrm/535.113.01/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073specific.h>
#include <nvrm/535.113.01/common/sdk/nvidia/inc/ctrl/ctrl0073/ctrl0073system.h>
#include <nvrm/535.113.01/common/sdk/nvidia/inc/ctrl/ctrl2080/ctrl2080internal.h>
#include <nvrm/535.113.01/common/sdk/nvidia/inc/nvos.h>
#include <nvrm/535.113.01/nvidia/generated/g_allclasses.h>
#include <nvrm/535.113.01/nvidia/generated/g_mem_desc_nvoc.h>
#include <nvrm/535.113.01/nvidia/inc/kernel/os/nv_memory_type.h>

#include <linux/acpi.h>

static u64
r535_chan_user(struct nvkm_disp_chan *chan, u64 *psize)
{}

static void
r535_chan_intr(struct nvkm_disp_chan *chan, bool en)
{}

static void
r535_chan_fini(struct nvkm_disp_chan *chan)
{}

static int
r535_chan_push(struct nvkm_disp_chan *chan)
{}

static int
r535_curs_init(struct nvkm_disp_chan *chan)
{}

static const struct nvkm_disp_chan_func
r535_curs_func =;

static const struct nvkm_disp_chan_user
r535_curs =;

static int
r535_dmac_bind(struct nvkm_disp_chan *chan, struct nvkm_object *object, u32 handle)
{}

static void
r535_dmac_fini(struct nvkm_disp_chan *chan)
{}

static int
r535_dmac_init(struct nvkm_disp_chan *chan)
{}

static int
r535_dmac_push(struct nvkm_disp_chan *chan, u64 memory)
{}

static const struct nvkm_disp_chan_func
r535_dmac_func =;

static const struct nvkm_disp_chan_func
r535_wimm_func =;

static const struct nvkm_disp_chan_user
r535_wimm =;

static const struct nvkm_disp_chan_user
r535_wndw =;

static void
r535_core_fini(struct nvkm_disp_chan *chan)
{}

static const struct nvkm_disp_chan_func
r535_core_func =;

static const struct nvkm_disp_chan_user
r535_core =;

static int
r535_sor_bl_set(struct nvkm_ior *sor, int lvl)
{}

static int
r535_sor_bl_get(struct nvkm_ior *sor)
{}

static const struct nvkm_ior_func_bl
r535_sor_bl =;

static void
r535_sor_hda_eld(struct nvkm_ior *sor, int head, u8 *data, u8 size)
{}

static void
r535_sor_hda_hpd(struct nvkm_ior *sor, int head, bool present)
{}

static const struct nvkm_ior_func_hda
r535_sor_hda =;

static void
r535_sor_dp_audio_mute(struct nvkm_ior *sor, bool mute)
{}

static void
r535_sor_dp_audio(struct nvkm_ior *sor, int head, bool enable)
{}

static void
r535_sor_dp_vcpi(struct nvkm_ior *sor, int head, u8 slot, u8 slot_nr, u16 pbn, u16 aligned_pbn)
{}

static int
r535_sor_dp_sst(struct nvkm_ior *sor, int head, bool ef,
		u32 watermark, u32 hblanksym, u32 vblanksym)
{}

static const struct nvkm_ior_func_dp
r535_sor_dp =;

static void
r535_sor_hdmi_scdc(struct nvkm_ior *sor, u32 khz, bool support, bool scrambling,
		   bool scrambling_low_rates)
{}

static void
r535_sor_hdmi_ctrl_audio_mute(struct nvkm_outp *outp, bool mute)
{}

static void
r535_sor_hdmi_ctrl_audio(struct nvkm_outp *outp, bool enable)
{}

static void
r535_sor_hdmi_audio(struct nvkm_ior *sor, int head, bool enable)
{}

static void
r535_sor_hdmi_ctrl(struct nvkm_ior *sor, int head, bool enable, u8 max_ac_packet, u8 rekey)
{}

static const struct nvkm_ior_func_hdmi
r535_sor_hdmi =;

static const struct nvkm_ior_func
r535_sor =;

static int
r535_sor_new(struct nvkm_disp *disp, int id)
{}

static int
r535_sor_cnt(struct nvkm_disp *disp, unsigned long *pmask)
{}

static void
r535_head_vblank_put(struct nvkm_head *head)
{}

static void
r535_head_vblank_get(struct nvkm_head *head)
{}

static void
r535_head_state(struct nvkm_head *head, struct nvkm_head_state *state)
{}

static const struct nvkm_head_func
r535_head =;

static struct nvkm_conn *
r535_conn_new(struct nvkm_disp *disp, u32 id)
{}

static void
r535_outp_release(struct nvkm_outp *outp)
{}

static int
r535_outp_acquire(struct nvkm_outp *outp, bool hda)
{}

static int
r535_disp_head_displayid(struct nvkm_disp *disp, int head, u32 *displayid)
{}

static struct nvkm_ior *
r535_outp_inherit(struct nvkm_outp *outp)
{}

static int
r535_outp_dfp_get_info(struct nvkm_outp *outp)
{}

static int
r535_outp_detect(struct nvkm_outp *outp)
{}

static int
r535_dp_mst_id_put(struct nvkm_outp *outp, u32 id)
{}

static int
r535_dp_mst_id_get(struct nvkm_outp *outp, u32 *pid)
{}

static int
r535_dp_drive(struct nvkm_outp *outp, u8 lanes, u8 pe[4], u8 vs[4])
{}

static int
r535_dp_train_target(struct nvkm_outp *outp, u8 target, bool mst, u8 link_nr, u8 link_bw)
{}

static int
r535_dp_train(struct nvkm_outp *outp, bool retrain)
{}

static int
r535_dp_rates(struct nvkm_outp *outp)
{}

static int
r535_dp_aux_xfer(struct nvkm_outp *outp, u8 type, u32 addr, u8 *data, u8 *psize)
{}

static int
r535_dp_aux_pwr(struct nvkm_outp *outp, bool pu)
{}

static void
r535_dp_release(struct nvkm_outp *outp)
{}

static int
r535_dp_acquire(struct nvkm_outp *outp, bool hda)
{}

static const struct nvkm_outp_func
r535_dp =;

static int
r535_tmds_edid_get(struct nvkm_outp *outp, u8 *data, u16 *psize)
{}

static const struct nvkm_outp_func
r535_tmds =;

static int
r535_outp_new(struct nvkm_disp *disp, u32 id)
{}

static void
r535_disp_irq(struct nvkm_gsp_event *event, void *repv, u32 repc)
{}

static void
r535_disp_hpd(struct nvkm_gsp_event *event, void *repv, u32 repc)
{}

static const struct nvkm_event_func
r535_disp_event =;

static void
r535_disp_intr_head_timing(struct nvkm_disp *disp, int head)
{}

static irqreturn_t
r535_disp_intr(struct nvkm_inth *inth)
{}

static void
r535_disp_fini(struct nvkm_disp *disp, bool suspend)
{}

static int
r535_disp_init(struct nvkm_disp *disp)
{}

static int
r535_disp_oneinit(struct nvkm_disp *disp)
{}

static void
r535_disp_dtor(struct nvkm_disp *disp)
{}

int
r535_disp_new(const struct nvkm_disp_func *hw, struct nvkm_device *device,
	      enum nvkm_subdev_type type, int inst, struct nvkm_disp **pdisp)
{}