This is a note to let you know that I've just added the patch titled
drm/radeon/atom: fix bus probes when hw_i2c is set (v2)
to the 3.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
drm-radeon-atom-fix-bus-probes-when-hw_i2c-is-set-v2.patch
and it can be found in the queue-3.12 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From ffd3d3361d583cb73fa65a5fed3a196ba6f261bb Mon Sep 17 00:00:00 2001
From: Alex Deucher <[email protected]>
Date: Tue, 3 Dec 2013 17:16:49 -0500
Subject: drm/radeon/atom: fix bus probes when hw_i2c is set (v2)
From: Alex Deucher <[email protected]>
commit ffd3d3361d583cb73fa65a5fed3a196ba6f261bb upstream.
When probing the bus, we need to set the byte count
to 0 rather than 1.
v2: Don't count the first byte.
bug:
https://bugzilla.kernel.org/show_bug.cgi?id=66241
Signed-off-by: Alex Deucher <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
drivers/gpu/drm/radeon/atombios_i2c.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
--- a/drivers/gpu/drm/radeon/atombios_i2c.c
+++ b/drivers/gpu/drm/radeon/atombios_i2c.c
@@ -44,7 +44,7 @@ static int radeon_process_i2c_ch(struct
PROCESS_I2C_CHANNEL_TRANSACTION_PS_ALLOCATION args;
int index = GetIndexIntoMasterTable(COMMAND,
ProcessI2cChannelTransaction);
unsigned char *base;
- u16 out;
+ u16 out = cpu_to_le16(0);
memset(&args, 0, sizeof(args));
@@ -55,11 +55,14 @@ static int radeon_process_i2c_ch(struct
DRM_ERROR("hw i2c: tried to write too many bytes (%d vs
3)\n", num);
return -EINVAL;
}
- args.ucRegIndex = buf[0];
- if (num > 1) {
+ if (buf == NULL)
+ args.ucRegIndex = 0;
+ else
+ args.ucRegIndex = buf[0];
+ if (num)
num--;
+ if (num)
memcpy(&out, &buf[1], num);
- }
args.lpI2CDataOut = cpu_to_le16(out);
} else {
if (num > ATOM_MAX_HW_I2C_READ) {
@@ -96,14 +99,14 @@ int radeon_atom_hw_i2c_xfer(struct i2c_a
struct radeon_i2c_chan *i2c = i2c_get_adapdata(i2c_adap);
struct i2c_msg *p;
int i, remaining, current_count, buffer_offset, max_bytes, ret;
- u8 buf = 0, flags;
+ u8 flags;
/* check for bus probe */
p = &msgs[0];
if ((num == 1) && (p->len == 0)) {
ret = radeon_process_i2c_ch(i2c,
p->addr, HW_I2C_WRITE,
- &buf, 1);
+ NULL, 0);
if (ret)
return ret;
else
Patches currently in stable-queue which might be from [email protected]
are
queue-3.12/drm-radeon-fix-typo-in-fetching-mpll-params.patch
queue-3.12/drm-radeon-program-dce2-audio-dto-just-like-dce3.patch
queue-3.12/drm-radeon-fixup-bad-vram-size-on-si.patch
queue-3.12/drm-radeon-atom-fix-bus-probes-when-hw_i2c-is-set-v2.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html