Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ade1ba73 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-intel-next-2015-12-18' of git://anongit.freedesktop.org/drm-intel into drm-next

- fix atomic watermark recomputation logic (Maarten)
- modeset sequence fixes for LPT (Ville)
- more kbl enabling&prep work (Rodrigo, Wayne)
- first bits for mst audio
- page dirty tracking fixes from Dave Gordon
- new get_eld hook from Takashi, also included in the sound tree
- fixup cursor handling when placed at address 0 (Ville)
- refactor VBT parsing code (Jani)
- rpm wakelock debug infrastructure ( Imre)
- fbdev is pinned again (Chris)
- tune the busywait logic to avoid wasting cpu cycles (Chris)

* tag 'drm-intel-next-2015-12-18' of git://anongit.freedesktop.org/drm-intel: (81 commits)
  drm/i915: Update DRIVER_DATE to 20151218
  drm/i915/skl: Default to noncoherent access up to F0
  drm/i915: Only spin whilst waiting on the current request
  drm/i915: Limit the busy wait on requests to 5us not 10ms!
  drm/i915: Break busywaiting for requests on pending signals
  drm/i915: don't enable autosuspend on platforms without RPM support
  drm/i915/backlight: prefer dev_priv over dev pointer
  drm/i915: Disable primary plane if we fail to reconstruct BIOS fb (v2)
  drm/i915: Pin the ifbdev for the info->system_base GGTT mmapping
  drm/i915: Set the map-and-fenceable flag for preallocated objects
  drm/i915: mdelay(10) considered harmful
  drm/i915: check that we are in an RPM atomic section in GGTT PTE updaters
  drm/i915: add support for checking RPM atomic sections
  drm/i915: check that we hold an RPM wakelock ref before we put it
  drm/i915: add support for checking if we hold an RPM reference
  drm/i915: use assert_rpm_wakelock_held instead of opencoding it
  drm/i915: add assert_rpm_wakelock_held helper
  drm/i915: remove HAS_RUNTIME_PM check from RPM get/put/assert helpers
  drm/i915: get a permanent RPM reference on platforms w/o RPM support
  drm/i915: refactor RPM disabling due to RC6 being disabled
  ...
parents fd3e14ff 7447a2b2
Loading
Loading
Loading
Loading
+35 −3
Original line number Original line Diff line number Diff line
@@ -666,7 +666,9 @@ static int build_enum_path_resources(struct drm_dp_sideband_msg_tx *msg, int por
}
}


static int build_allocate_payload(struct drm_dp_sideband_msg_tx *msg, int port_num,
static int build_allocate_payload(struct drm_dp_sideband_msg_tx *msg, int port_num,
				  u8 vcpi, uint16_t pbn)
				  u8 vcpi, uint16_t pbn,
				  u8 number_sdp_streams,
				  u8 *sdp_stream_sink)
{
{
	struct drm_dp_sideband_msg_req_body req;
	struct drm_dp_sideband_msg_req_body req;
	memset(&req, 0, sizeof(req));
	memset(&req, 0, sizeof(req));
@@ -674,6 +676,9 @@ static int build_allocate_payload(struct drm_dp_sideband_msg_tx *msg, int port_n
	req.u.allocate_payload.port_number = port_num;
	req.u.allocate_payload.port_number = port_num;
	req.u.allocate_payload.vcpi = vcpi;
	req.u.allocate_payload.vcpi = vcpi;
	req.u.allocate_payload.pbn = pbn;
	req.u.allocate_payload.pbn = pbn;
	req.u.allocate_payload.number_sdp_streams = number_sdp_streams;
	memcpy(req.u.allocate_payload.sdp_stream_sink, sdp_stream_sink,
		   number_sdp_streams);
	drm_dp_encode_sideband_req(&req, msg);
	drm_dp_encode_sideband_req(&req, msg);
	msg->path_msg = true;
	msg->path_msg = true;
	return 0;
	return 0;
@@ -1562,6 +1567,8 @@ static int drm_dp_payload_send_msg(struct drm_dp_mst_topology_mgr *mgr,
	struct drm_dp_sideband_msg_tx *txmsg;
	struct drm_dp_sideband_msg_tx *txmsg;
	struct drm_dp_mst_branch *mstb;
	struct drm_dp_mst_branch *mstb;
	int len, ret;
	int len, ret;
	u8 sinks[DRM_DP_MAX_SDP_STREAMS];
	int i;


	mstb = drm_dp_get_validated_mstb_ref(mgr, port->parent);
	mstb = drm_dp_get_validated_mstb_ref(mgr, port->parent);
	if (!mstb)
	if (!mstb)
@@ -1573,10 +1580,13 @@ static int drm_dp_payload_send_msg(struct drm_dp_mst_topology_mgr *mgr,
		goto fail_put;
		goto fail_put;
	}
	}


	for (i = 0; i < port->num_sdp_streams; i++)
		sinks[i] = i;

	txmsg->dst = mstb;
	txmsg->dst = mstb;
	len = build_allocate_payload(txmsg, port->port_num,
	len = build_allocate_payload(txmsg, port->port_num,
				     id,
				     id,
				     pbn);
				     pbn, port->num_sdp_streams, sinks);


	drm_dp_queue_down_tx(mgr, txmsg);
	drm_dp_queue_down_tx(mgr, txmsg);


@@ -2260,6 +2270,27 @@ enum drm_connector_status drm_dp_mst_detect_port(struct drm_connector *connector
}
}
EXPORT_SYMBOL(drm_dp_mst_detect_port);
EXPORT_SYMBOL(drm_dp_mst_detect_port);


/**
 * drm_dp_mst_port_has_audio() - Check whether port has audio capability or not
 * @mgr: manager for this port
 * @port: unverified pointer to a port.
 *
 * This returns whether the port supports audio or not.
 */
bool drm_dp_mst_port_has_audio(struct drm_dp_mst_topology_mgr *mgr,
					struct drm_dp_mst_port *port)
{
	bool ret = false;

	port = drm_dp_get_validated_port_ref(mgr, port);
	if (!port)
		return ret;
	ret = port->has_audio;
	drm_dp_put_port(port);
	return ret;
}
EXPORT_SYMBOL(drm_dp_mst_port_has_audio);

/**
/**
 * drm_dp_mst_get_edid() - get EDID for an MST port
 * drm_dp_mst_get_edid() - get EDID for an MST port
 * @connector: toplevel connector to get EDID for
 * @connector: toplevel connector to get EDID for
@@ -2285,6 +2316,7 @@ struct edid *drm_dp_mst_get_edid(struct drm_connector *connector, struct drm_dp_
		edid = drm_get_edid(connector, &port->aux.ddc);
		edid = drm_get_edid(connector, &port->aux.ddc);
		drm_mode_connector_set_tile_property(connector);
		drm_mode_connector_set_tile_property(connector);
	}
	}
	port->has_audio = drm_detect_monitor_audio(edid);
	drm_dp_put_port(port);
	drm_dp_put_port(port);
	return edid;
	return edid;
}
}
@@ -2568,7 +2600,7 @@ static void drm_dp_mst_dump_mstb(struct seq_file *m,


	seq_printf(m, "%smst: %p, %d\n", prefix, mstb, mstb->num_ports);
	seq_printf(m, "%smst: %p, %d\n", prefix, mstb, mstb->num_ports);
	list_for_each_entry(port, &mstb->ports, next) {
	list_for_each_entry(port, &mstb->ports, next) {
		seq_printf(m, "%sport: %d: ddps: %d ldps: %d, %p, conn: %p\n", prefix, port->port_num, port->ddps, port->ldps, port, port->connector);
		seq_printf(m, "%sport: %d: ddps: %d ldps: %d, sdp: %d/%d, %p, conn: %p\n", prefix, port->port_num, port->ddps, port->ldps, port->num_sdp_streams, port->num_sdp_stream_sinks, port, port->connector);
		if (port->mstb)
		if (port->mstb)
			drm_dp_mst_dump_mstb(m, port->mstb);
			drm_dp_mst_dump_mstb(m, port->mstb);
	}
	}
+6 −6
Original line number Original line Diff line number Diff line
@@ -129,11 +129,11 @@ struct intel_dvo_dev_ops {
	void (*dump_regs)(struct intel_dvo_device *dvo);
	void (*dump_regs)(struct intel_dvo_device *dvo);
};
};


extern struct intel_dvo_dev_ops sil164_ops;
extern const struct intel_dvo_dev_ops sil164_ops;
extern struct intel_dvo_dev_ops ch7xxx_ops;
extern const struct intel_dvo_dev_ops ch7xxx_ops;
extern struct intel_dvo_dev_ops ivch_ops;
extern const struct intel_dvo_dev_ops ivch_ops;
extern struct intel_dvo_dev_ops tfp410_ops;
extern const struct intel_dvo_dev_ops tfp410_ops;
extern struct intel_dvo_dev_ops ch7017_ops;
extern const struct intel_dvo_dev_ops ch7017_ops;
extern struct intel_dvo_dev_ops ns2501_ops;
extern const struct intel_dvo_dev_ops ns2501_ops;


#endif /* _INTEL_DVO_H */
#endif /* _INTEL_DVO_H */
+1 −1
Original line number Original line Diff line number Diff line
@@ -402,7 +402,7 @@ static void ch7017_destroy(struct intel_dvo_device *dvo)
	}
	}
}
}


struct intel_dvo_dev_ops ch7017_ops = {
const struct intel_dvo_dev_ops ch7017_ops = {
	.init = ch7017_init,
	.init = ch7017_init,
	.detect = ch7017_detect,
	.detect = ch7017_detect,
	.mode_valid = ch7017_mode_valid,
	.mode_valid = ch7017_mode_valid,
+1 −1
Original line number Original line Diff line number Diff line
@@ -356,7 +356,7 @@ static void ch7xxx_destroy(struct intel_dvo_device *dvo)
	}
	}
}
}


struct intel_dvo_dev_ops ch7xxx_ops = {
const struct intel_dvo_dev_ops ch7xxx_ops = {
	.init = ch7xxx_init,
	.init = ch7xxx_init,
	.detect = ch7xxx_detect,
	.detect = ch7xxx_detect,
	.mode_valid = ch7xxx_mode_valid,
	.mode_valid = ch7xxx_mode_valid,
+1 −1
Original line number Original line Diff line number Diff line
@@ -490,7 +490,7 @@ static void ivch_destroy(struct intel_dvo_device *dvo)
	}
	}
}
}


struct intel_dvo_dev_ops ivch_ops = {
const struct intel_dvo_dev_ops ivch_ops = {
	.init = ivch_init,
	.init = ivch_init,
	.dpms = ivch_dpms,
	.dpms = ivch_dpms,
	.get_hw_state = ivch_get_hw_state,
	.get_hw_state = ivch_get_hw_state,
Loading