]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
V4L/DVB (6743): cx25840: fix endianness inconsistency
authorHans Verkuil <hverkuil@xs4all.nl>
Sun, 2 Dec 2007 10:03:45 +0000 (07:03 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Fri, 25 Jan 2008 21:03:17 +0000 (19:03 -0200)
cx25840_read4 reads a little-endian 32-bit value whereas cx25840_write4 writes
the 32-bit value as big-endian. Convert write4 to use little-endian as well
(that's the correct endianness).

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/cx25840/cx25840-audio.c
drivers/media/video/cx25840/cx25840-core.c

index 3d46a776df36a44e1b92c668d6f89e567503b33b..51fc0af01578e01e14b564141b08eed8c1a74926 100644 (file)
@@ -38,71 +38,71 @@ static int set_audclk_freq(struct i2c_client *client, u32 freq)
                switch (freq) {
                case 32000:
                        /* VID_PLL and AUX_PLL */
-                       cx25840_write4(client, 0x108, 0x0f040610);
+                       cx25840_write4(client, 0x108, 0x1006040f);
 
                        /* AUX_PLL_FRAC */
-                       cx25840_write4(client, 0x110, 0xee39bb01);
+                       cx25840_write4(client, 0x110, 0x01bb39ee);
 
                        if (state->is_cx25836)
                                break;
 
                        /* src3/4/6_ctl = 0x0801f77f */
-                       cx25840_write4(client, 0x900, 0x7ff70108);
-                       cx25840_write4(client, 0x904, 0x7ff70108);
-                       cx25840_write4(client, 0x90c, 0x7ff70108);
+                       cx25840_write4(client, 0x900, 0x0801f77f);
+                       cx25840_write4(client, 0x904, 0x0801f77f);
+                       cx25840_write4(client, 0x90c, 0x0801f77f);
                        break;
 
                case 44100:
                        /* VID_PLL and AUX_PLL */
-                       cx25840_write4(client, 0x108, 0x0f040910);
+                       cx25840_write4(client, 0x108, 0x1009040f);
 
                        /* AUX_PLL_FRAC */
-                       cx25840_write4(client, 0x110, 0xd66bec00);
+                       cx25840_write4(client, 0x110, 0x00ec6bd6);
 
                        if (state->is_cx25836)
                                break;
 
                        /* src3/4/6_ctl = 0x08016d59 */
-                       cx25840_write4(client, 0x900, 0x596d0108);
-                       cx25840_write4(client, 0x904, 0x596d0108);
-                       cx25840_write4(client, 0x90c, 0x596d0108);
+                       cx25840_write4(client, 0x900, 0x08016d59);
+                       cx25840_write4(client, 0x904, 0x08016d59);
+                       cx25840_write4(client, 0x90c, 0x08016d59);
                        break;
 
                case 48000:
                        /* VID_PLL and AUX_PLL */
-                       cx25840_write4(client, 0x108, 0x0f040a10);
+                       cx25840_write4(client, 0x108, 0x100a040f);
 
                        /* AUX_PLL_FRAC */
-                       cx25840_write4(client, 0x110, 0xe5d69800);
+                       cx25840_write4(client, 0x110, 0x0098d6e5);
 
                        if (state->is_cx25836)
                                break;
 
                        /* src3/4/6_ctl = 0x08014faa */
-                       cx25840_write4(client, 0x900, 0xaa4f0108);
-                       cx25840_write4(client, 0x904, 0xaa4f0108);
-                       cx25840_write4(client, 0x90c, 0xaa4f0108);
+                       cx25840_write4(client, 0x900, 0x08014faa);
+                       cx25840_write4(client, 0x904, 0x08014faa);
+                       cx25840_write4(client, 0x90c, 0x08014faa);
                        break;
                }
        } else {
                switch (freq) {
                case 32000:
                        /* VID_PLL and AUX_PLL */
-                       cx25840_write4(client, 0x108, 0x0f04081e);
+                       cx25840_write4(client, 0x108, 0x1e08040f);
 
                        /* AUX_PLL_FRAC */
-                       cx25840_write4(client, 0x110, 0x69082a01);
+                       cx25840_write4(client, 0x110, 0x012a0869);
 
                        if (state->is_cx25836)
                                break;
 
                        /* src1_ctl = 0x08010000 */
-                       cx25840_write4(client, 0x8f8, 0x00000108);
+                       cx25840_write4(client, 0x8f8, 0x08010000);
 
                        /* src3/4/6_ctl = 0x08020000 */
-                       cx25840_write4(client, 0x900, 0x00000208);
-                       cx25840_write4(client, 0x904, 0x00000208);
-                       cx25840_write4(client, 0x90c, 0x00000208);
+                       cx25840_write4(client, 0x900, 0x08020000);
+                       cx25840_write4(client, 0x904, 0x08020000);
+                       cx25840_write4(client, 0x90c, 0x08020000);
 
                        /* SA_MCLK_SEL=1, SA_MCLK_DIV=0x14 */
                        cx25840_write(client, 0x127, 0x54);
@@ -110,40 +110,40 @@ static int set_audclk_freq(struct i2c_client *client, u32 freq)
 
                case 44100:
                        /* VID_PLL and AUX_PLL */
-                       cx25840_write4(client, 0x108, 0x0f040918);
+                       cx25840_write4(client, 0x108, 0x1809040f);
 
                        /* AUX_PLL_FRAC */
-                       cx25840_write4(client, 0x110, 0xd66bec00);
+                       cx25840_write4(client, 0x110, 0x00ec6bd6);
 
                        if (state->is_cx25836)
                                break;
 
                        /* src1_ctl = 0x08010000 */
-                       cx25840_write4(client, 0x8f8, 0xcd600108);
+                       cx25840_write4(client, 0x8f8, 0x080160cd);
 
                        /* src3/4/6_ctl = 0x08020000 */
-                       cx25840_write4(client, 0x900, 0x85730108);
-                       cx25840_write4(client, 0x904, 0x85730108);
-                       cx25840_write4(client, 0x90c, 0x85730108);
+                       cx25840_write4(client, 0x900, 0x08017385);
+                       cx25840_write4(client, 0x904, 0x08017385);
+                       cx25840_write4(client, 0x90c, 0x08017385);
                        break;
 
                case 48000:
                        /* VID_PLL and AUX_PLL */
-                       cx25840_write4(client, 0x108, 0x0f040a18);
+                       cx25840_write4(client, 0x108, 0x180a040f);
 
                        /* AUX_PLL_FRAC */
-                       cx25840_write4(client, 0x110, 0xe5d69800);
+                       cx25840_write4(client, 0x110, 0x0098d6e5);
 
                        if (state->is_cx25836)
                                break;
 
                        /* src1_ctl = 0x08010000 */
-                       cx25840_write4(client, 0x8f8, 0x00800108);
+                       cx25840_write4(client, 0x8f8, 0x08018000);
 
                        /* src3/4/6_ctl = 0x08020000 */
-                       cx25840_write4(client, 0x900, 0x55550108);
-                       cx25840_write4(client, 0x904, 0x55550108);
-                       cx25840_write4(client, 0x90c, 0x55550108);
+                       cx25840_write4(client, 0x900, 0x08015555);
+                       cx25840_write4(client, 0x904, 0x08015555);
+                       cx25840_write4(client, 0x90c, 0x08015555);
                        break;
                }
        }
@@ -168,14 +168,14 @@ void cx25840_audio_set_path(struct i2c_client *client)
 
        if (state->aud_input == CX25840_AUDIO_SERIAL) {
                /* Set Path1 to Serial Audio Input */
-               cx25840_write4(client, 0x8d0, 0x12100101);
+               cx25840_write4(client, 0x8d0, 0x01011012);
 
                /* The microcontroller should not be started for the
                 * non-tuner inputs: autodetection is specific for
                 * TV audio. */
        } else {
                /* Set Path1 to Analog Demod Main Channel */
-               cx25840_write4(client, 0x8d0, 0x7038061f);
+               cx25840_write4(client, 0x8d0, 0x1f063870);
        }
 
        set_audclk_freq(client, state->audclk_freq);
index 6d2ca822a638cbfc713fa7a2850b348c61b5652c..0d3d24aff504b07ba7c7c899b6dc7b82ce44f2c6 100644 (file)
@@ -73,10 +73,10 @@ int cx25840_write4(struct i2c_client *client, u16 addr, u32 value)
        u8 buffer[6];
        buffer[0] = addr >> 8;
        buffer[1] = addr & 0xff;
-       buffer[2] = value >> 24;
-       buffer[3] = (value >> 16) & 0xff;
-       buffer[4] = (value >> 8) & 0xff;
-       buffer[5] = value & 0xff;
+       buffer[2] = value & 0xff;
+       buffer[3] = (value >> 8) & 0xff;
+       buffer[4] = (value >> 16) & 0xff;
+       buffer[5] = value >> 24;
        return i2c_master_send(client, buffer, 6);
 }