On Thu, 2015-10-15 at 17:06 -0500, Konstantin Shkolnyy wrote:
> cp2108 GET_LINE_CTL returns the 16-bit value with the 2 bytes swapped.
> However, SET_LINE_CTL functions properly. When the driver tries to modify
> the register, it reads it, modifies some bits and writes back. Because the
> read
On Mon, Oct 19, 2015 at 4:14 AM, Oliver Neukum wrote:
> On Thu, 2015-10-15 at 17:06 -0500, Konstantin Shkolnyy wrote:
>> cp2108 GET_LINE_CTL returns the 16-bit value with the 2 bytes swapped.
>> However, SET_LINE_CTL functions properly. When the driver tries to modify
>> the
cp2108 GET_LINE_CTL returns the 16-bit value with the 2 bytes swapped.
However, SET_LINE_CTL functions properly. When the driver tries to modify
the register, it reads it, modifies some bits and writes back. Because the
read bytes were swapped, this often results in an invalid value to be written.
Konstantin Shkolnyy writes:
> @@ -343,6 +344,28 @@ static int cp210x_get_config(struct usb_serial_port
> *port, u8 request,
> return result;
> }
>
> + /* Workaround for swapped bytes in 16-bit value from
> CP210X_GET_LINE_CTL */
> +
cp2108 GET_LINE_CTL returns the 16-bit value with the 2 bytes swapped.
However, SET_LINE_CTL functions properly. When the driver tries to modify
the register, it reads it, modifies some bits and writes back. Because the
read bytes were swapped, this often results in an invalid value to be written.
cp2108 GET_LINE_CTL returns the 16-bit value with the 2 bytes swapped.
However, SET_LINE_CTL functions properly. When the driver tries to modify
the register, it reads it, modifies some bits and writes back. Because the
read bytes were swapped, this often results in an invalid value to be written.