drm/radeon/kms: dont't pass a radeon_connector to radeon_i2c_do_lock()
We need this for supporting things other than ddc on i2c. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
2127816366
commit
ab1e9ea08f
4 changed files with 20 additions and 20 deletions
|
@ -445,10 +445,10 @@ static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connec
|
||||||
ret = connector_status_connected;
|
ret = connector_status_connected;
|
||||||
else {
|
else {
|
||||||
if (radeon_connector->ddc_bus) {
|
if (radeon_connector->ddc_bus) {
|
||||||
radeon_i2c_do_lock(radeon_connector, 1);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
|
||||||
radeon_connector->edid = drm_get_edid(&radeon_connector->base,
|
radeon_connector->edid = drm_get_edid(&radeon_connector->base,
|
||||||
&radeon_connector->ddc_bus->adapter);
|
&radeon_connector->ddc_bus->adapter);
|
||||||
radeon_i2c_do_lock(radeon_connector, 0);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
|
||||||
if (radeon_connector->edid)
|
if (radeon_connector->edid)
|
||||||
ret = connector_status_connected;
|
ret = connector_status_connected;
|
||||||
}
|
}
|
||||||
|
@ -553,17 +553,17 @@ static enum drm_connector_status radeon_vga_detect(struct drm_connector *connect
|
||||||
if (!encoder)
|
if (!encoder)
|
||||||
ret = connector_status_disconnected;
|
ret = connector_status_disconnected;
|
||||||
|
|
||||||
radeon_i2c_do_lock(radeon_connector, 1);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
|
||||||
dret = radeon_ddc_probe(radeon_connector);
|
dret = radeon_ddc_probe(radeon_connector);
|
||||||
radeon_i2c_do_lock(radeon_connector, 0);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
|
||||||
if (dret) {
|
if (dret) {
|
||||||
if (radeon_connector->edid) {
|
if (radeon_connector->edid) {
|
||||||
kfree(radeon_connector->edid);
|
kfree(radeon_connector->edid);
|
||||||
radeon_connector->edid = NULL;
|
radeon_connector->edid = NULL;
|
||||||
}
|
}
|
||||||
radeon_i2c_do_lock(radeon_connector, 1);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
|
||||||
radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
|
radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
|
||||||
radeon_i2c_do_lock(radeon_connector, 0);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
|
||||||
|
|
||||||
if (!radeon_connector->edid) {
|
if (!radeon_connector->edid) {
|
||||||
DRM_ERROR("%s: probed a monitor but no|invalid EDID\n",
|
DRM_ERROR("%s: probed a monitor but no|invalid EDID\n",
|
||||||
|
@ -708,17 +708,17 @@ static enum drm_connector_status radeon_dvi_detect(struct drm_connector *connect
|
||||||
enum drm_connector_status ret = connector_status_disconnected;
|
enum drm_connector_status ret = connector_status_disconnected;
|
||||||
bool dret;
|
bool dret;
|
||||||
|
|
||||||
radeon_i2c_do_lock(radeon_connector, 1);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
|
||||||
dret = radeon_ddc_probe(radeon_connector);
|
dret = radeon_ddc_probe(radeon_connector);
|
||||||
radeon_i2c_do_lock(radeon_connector, 0);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
|
||||||
if (dret) {
|
if (dret) {
|
||||||
if (radeon_connector->edid) {
|
if (radeon_connector->edid) {
|
||||||
kfree(radeon_connector->edid);
|
kfree(radeon_connector->edid);
|
||||||
radeon_connector->edid = NULL;
|
radeon_connector->edid = NULL;
|
||||||
}
|
}
|
||||||
radeon_i2c_do_lock(radeon_connector, 1);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
|
||||||
radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
|
radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
|
||||||
radeon_i2c_do_lock(radeon_connector, 0);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
|
||||||
|
|
||||||
if (!radeon_connector->edid) {
|
if (!radeon_connector->edid) {
|
||||||
DRM_ERROR("%s: probed a monitor but no|invalid EDID\n",
|
DRM_ERROR("%s: probed a monitor but no|invalid EDID\n",
|
||||||
|
|
|
@ -339,9 +339,9 @@ int radeon_ddc_get_modes(struct radeon_connector *radeon_connector)
|
||||||
if (!radeon_connector->ddc_bus)
|
if (!radeon_connector->ddc_bus)
|
||||||
return -1;
|
return -1;
|
||||||
if (!radeon_connector->edid) {
|
if (!radeon_connector->edid) {
|
||||||
radeon_i2c_do_lock(radeon_connector, 1);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
|
||||||
radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
|
radeon_connector->edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
|
||||||
radeon_i2c_do_lock(radeon_connector, 0);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (radeon_connector->edid) {
|
if (radeon_connector->edid) {
|
||||||
|
@ -361,9 +361,9 @@ static int radeon_ddc_dump(struct drm_connector *connector)
|
||||||
|
|
||||||
if (!radeon_connector->ddc_bus)
|
if (!radeon_connector->ddc_bus)
|
||||||
return -1;
|
return -1;
|
||||||
radeon_i2c_do_lock(radeon_connector, 1);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 1);
|
||||||
edid = drm_get_edid(connector, &radeon_connector->ddc_bus->adapter);
|
edid = drm_get_edid(connector, &radeon_connector->ddc_bus->adapter);
|
||||||
radeon_i2c_do_lock(radeon_connector, 0);
|
radeon_i2c_do_lock(radeon_connector->ddc_bus, 0);
|
||||||
if (edid) {
|
if (edid) {
|
||||||
kfree(edid);
|
kfree(edid);
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,11 +59,11 @@ bool radeon_ddc_probe(struct radeon_connector *radeon_connector)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void radeon_i2c_do_lock(struct radeon_connector *radeon_connector, int lock_state)
|
void radeon_i2c_do_lock(struct radeon_i2c_chan *i2c, int lock_state)
|
||||||
{
|
{
|
||||||
struct radeon_device *rdev = radeon_connector->base.dev->dev_private;
|
struct radeon_device *rdev = i2c->dev->dev_private;
|
||||||
|
struct radeon_i2c_bus_rec *rec = &i2c->rec;
|
||||||
uint32_t temp;
|
uint32_t temp;
|
||||||
struct radeon_i2c_bus_rec *rec = &radeon_connector->ddc_bus->rec;
|
|
||||||
|
|
||||||
/* RV410 appears to have a bug where the hw i2c in reset
|
/* RV410 appears to have a bug where the hw i2c in reset
|
||||||
* holds the i2c port in a bad state - switch hw i2c away before
|
* holds the i2c port in a bad state - switch hw i2c away before
|
||||||
|
@ -156,8 +156,8 @@ static void set_data(void *i2c_priv, int data)
|
||||||
}
|
}
|
||||||
|
|
||||||
struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev,
|
struct radeon_i2c_chan *radeon_i2c_create(struct drm_device *dev,
|
||||||
struct radeon_i2c_bus_rec *rec,
|
struct radeon_i2c_bus_rec *rec,
|
||||||
const char *name)
|
const char *name)
|
||||||
{
|
{
|
||||||
struct radeon_i2c_chan *i2c;
|
struct radeon_i2c_chan *i2c;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -426,7 +426,7 @@ void radeon_atombios_init_crtc(struct drm_device *dev,
|
||||||
struct radeon_crtc *radeon_crtc);
|
struct radeon_crtc *radeon_crtc);
|
||||||
void radeon_legacy_init_crtc(struct drm_device *dev,
|
void radeon_legacy_init_crtc(struct drm_device *dev,
|
||||||
struct radeon_crtc *radeon_crtc);
|
struct radeon_crtc *radeon_crtc);
|
||||||
void radeon_i2c_do_lock(struct radeon_connector *radeon_connector, int lock_state);
|
extern void radeon_i2c_do_lock(struct radeon_i2c_chan *i2c, int lock_state);
|
||||||
|
|
||||||
void radeon_get_clock_info(struct drm_device *dev);
|
void radeon_get_clock_info(struct drm_device *dev);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue