#include <linux/bitops.h>
#include "i915_drv.h"
#include "i915_reg.h"
#include "intel_atomic.h"
#include "intel_bw.h"
#include "intel_cdclk.h"
#include "intel_de.h"
#include "intel_display_trace.h"
#include "intel_pmdemand.h"
#include "skl_watermark.h"
static struct intel_global_state *
intel_pmdemand_duplicate_state(struct intel_global_obj *obj)
{ … }
static void intel_pmdemand_destroy_state(struct intel_global_obj *obj,
struct intel_global_state *state)
{ … }
static const struct intel_global_state_funcs intel_pmdemand_funcs = …;
static struct intel_pmdemand_state *
intel_atomic_get_pmdemand_state(struct intel_atomic_state *state)
{ … }
static struct intel_pmdemand_state *
intel_atomic_get_old_pmdemand_state(struct intel_atomic_state *state)
{ … }
static struct intel_pmdemand_state *
intel_atomic_get_new_pmdemand_state(struct intel_atomic_state *state)
{ … }
int intel_pmdemand_init(struct drm_i915_private *i915)
{ … }
void intel_pmdemand_init_early(struct drm_i915_private *i915)
{ … }
void
intel_pmdemand_update_phys_mask(struct drm_i915_private *i915,
struct intel_encoder *encoder,
struct intel_pmdemand_state *pmdemand_state,
bool set_bit)
{ … }
void
intel_pmdemand_update_port_clock(struct drm_i915_private *i915,
struct intel_pmdemand_state *pmdemand_state,
enum pipe pipe, int port_clock)
{ … }
static void
intel_pmdemand_update_max_ddiclk(struct drm_i915_private *i915,
struct intel_atomic_state *state,
struct intel_pmdemand_state *pmdemand_state)
{ … }
static void
intel_pmdemand_update_connector_phys(struct drm_i915_private *i915,
struct intel_atomic_state *state,
struct drm_connector_state *conn_state,
bool set_bit,
struct intel_pmdemand_state *pmdemand_state)
{ … }
static void
intel_pmdemand_update_active_non_tc_phys(struct drm_i915_private *i915,
struct intel_atomic_state *state,
struct intel_pmdemand_state *pmdemand_state)
{ … }
static bool
intel_pmdemand_encoder_has_tc_phy(struct drm_i915_private *i915,
struct intel_encoder *encoder)
{ … }
static bool
intel_pmdemand_connector_needs_update(struct intel_atomic_state *state)
{ … }
static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
{ … }
int intel_pmdemand_atomic_check(struct intel_atomic_state *state)
{ … }
static bool intel_pmdemand_check_prev_transaction(struct drm_i915_private *i915)
{ … }
void
intel_pmdemand_init_pmdemand_params(struct drm_i915_private *i915,
struct intel_pmdemand_state *pmdemand_state)
{ … }
static bool intel_pmdemand_req_complete(struct drm_i915_private *i915)
{ … }
static void intel_pmdemand_wait(struct drm_i915_private *i915)
{ … }
void intel_pmdemand_program_dbuf(struct drm_i915_private *i915,
u8 dbuf_slices)
{ … }
static void
intel_pmdemand_update_params(const struct intel_pmdemand_state *new,
const struct intel_pmdemand_state *old,
u32 *reg1, u32 *reg2, bool serialized)
{ … }
static void
intel_pmdemand_program_params(struct drm_i915_private *i915,
const struct intel_pmdemand_state *new,
const struct intel_pmdemand_state *old,
bool serialized)
{ … }
static bool
intel_pmdemand_state_changed(const struct intel_pmdemand_state *new,
const struct intel_pmdemand_state *old)
{ … }
void intel_pmdemand_pre_plane_update(struct intel_atomic_state *state)
{ … }
void intel_pmdemand_post_plane_update(struct intel_atomic_state *state)
{ … }