diff options
Diffstat (limited to 'hw/xfree86/i2c/tda9850.c')
-rw-r--r-- | hw/xfree86/i2c/tda9850.c | 176 |
1 files changed, 100 insertions, 76 deletions
diff --git a/hw/xfree86/i2c/tda9850.c b/hw/xfree86/i2c/tda9850.c index 24323cb38..c2ce6971f 100644 --- a/hw/xfree86/i2c/tda9850.c +++ b/hw/xfree86/i2c/tda9850.c @@ -13,100 +13,124 @@ I2C_WriteRead(&(t->d), data, 2, NULL, 0); \ } -TDA9850Ptr Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr) +TDA9850Ptr +Detect_tda9850(I2CBusPtr b, I2CSlaveAddr addr) { - TDA9850Ptr t; - I2CByte a; - - t = calloc(1, sizeof(TDA9850Rec)); - if(t == NULL) return NULL; - switch(addr) - { - case TDA9850_ADDR_1: - t->d.DevName = "TDA9850 BTSC Stereo+SAP Audio Processor"; - break; - default: - t->d.DevName = "Generic TDAxxxx"; - break; - } - t->d.SlaveAddr = addr; - t->d.pI2CBus = b; - t->d.NextDev = NULL; - t->d.StartTimeout = b->StartTimeout; - t->d.BitTimeout = b->BitTimeout; - t->d.AcknTimeout = b->AcknTimeout; - t->d.ByteTimeout = b->ByteTimeout; - - if(!I2C_WriteRead(&(t->d), NULL, 0, &a, 1)) - { - free(t); - return NULL; - } - - /* set default parameters */ - if(!I2CDevInit(&(t->d))) - { - free(t); - return NULL; - } - - return t; + TDA9850Ptr t; + I2CByte a; + + t = calloc(1, sizeof(TDA9850Rec)); + if (t == NULL) + return NULL; + switch (addr) { + case TDA9850_ADDR_1: + t->d.DevName = "TDA9850 BTSC Stereo+SAP Audio Processor"; + break; + default: + t->d.DevName = "Generic TDAxxxx"; + break; + } + t->d.SlaveAddr = addr; + t->d.pI2CBus = b; + t->d.NextDev = NULL; + t->d.StartTimeout = b->StartTimeout; + t->d.BitTimeout = b->BitTimeout; + t->d.AcknTimeout = b->AcknTimeout; + t->d.ByteTimeout = b->ByteTimeout; + + if (!I2C_WriteRead(&(t->d), NULL, 0, &a, 1)) { + free(t); + return NULL; + } + + /* set default parameters */ + if (!I2CDevInit(&(t->d))) { + free(t); + return NULL; + } + + return t; } -Bool tda9850_init(TDA9850Ptr t) +Bool +tda9850_init(TDA9850Ptr t) { - t->stereo = 1; - t->sap = 0; - t->mute = TRUE; - t->sap_mute = TRUE; - tda9850_setaudio(t); - return TRUE; + t->stereo = 1; + t->sap = 0; + t->mute = TRUE; + t->sap_mute = TRUE; + tda9850_setaudio(t); + return TRUE; } -void tda9850_setaudio(TDA9850Ptr t) +void +tda9850_setaudio(TDA9850Ptr t) { -CARD8 data[2]; + CARD8 data[2]; -if(t->mux==2) -{ - TDA9850(0x04,0x0F); TDA9850(0x05,0x0F); TDA9850(0x06, 0x58); - TDA9850(0x07,0x07); TDA9850(0x08,0x00); - TDA9850(0x09,0x00); TDA9850(0x0A,0x03); -} else -{ - TDA9850(0x04,0x07); TDA9850(0x05,0x07); - TDA9850(0x06,0x58); TDA9850(0x07,0x07); - TDA9850(0x08,0x10); TDA9850(0x09,0x10); - TDA9850(0x0A,0x03); -} - -TDA9850(0x06,(t->stereo<<6)|(t->sap<<7)|(t->mute?0x8:0)|(t->sap_mute?0x10:0x0)); + if (t->mux == 2) { + TDA9850(0x04, 0x0F); + TDA9850(0x05, 0x0F); + TDA9850(0x06, 0x58); + TDA9850(0x07, 0x07); + TDA9850(0x08, 0x00); + TDA9850(0x09, 0x00); + TDA9850(0x0A, 0x03); + } + else { + TDA9850(0x04, 0x07); + TDA9850(0x05, 0x07); + TDA9850(0x06, 0x58); + TDA9850(0x07, 0x07); + TDA9850(0x08, 0x10); + TDA9850(0x09, 0x10); + TDA9850(0x0A, 0x03); + } + + TDA9850(0x06, + (t->stereo << 6) | (t->sap << 7) | (t->mute ? 0x8 : 0) | (t-> + sap_mute ? + 0x10 : + 0x0)); } -void tda9850_mute(TDA9850Ptr t, Bool mute) +void +tda9850_mute(TDA9850Ptr t, Bool mute) { -CARD8 data[2]; + CARD8 data[2]; -xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO, "tda9850_mute %s\n", mute ? "on" : "off"); -t->mute = mute; - -TDA9850(0x06,(t->stereo<<6)|(t->sap<<7)|(t->mute?0x8:0x0)|(t->sap_mute?0x10:0x0)); + xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO, "tda9850_mute %s\n", + mute ? "on" : "off"); + t->mute = mute; + + TDA9850(0x06, + (t->stereo << 6) | (t->sap << 7) | (t->mute ? 0x8 : 0x0) | (t-> + sap_mute + ? 0x10 : + 0x0)); } -void tda9850_sap_mute(TDA9850Ptr t, Bool sap_mute) +void +tda9850_sap_mute(TDA9850Ptr t, Bool sap_mute) { -CARD8 data[2]; + CARD8 data[2]; + + xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO, "tda9850_sap_mute %s\n", + sap_mute ? "on" : "off"); + t->sap_mute = sap_mute; -xf86DrvMsg(t->d.pI2CBus->scrnIndex, X_INFO, "tda9850_sap_mute %s\n", sap_mute ? "on" : "off"); -t->sap_mute = sap_mute; - -TDA9850(0x06,(t->stereo<<6)|(t->sap<<7)|(t->mute?0x8:0x0)|(t->sap_mute?0x10:0x0)); + TDA9850(0x06, + (t->stereo << 6) | (t->sap << 7) | (t->mute ? 0x8 : 0x0) | (t-> + sap_mute + ? 0x10 : + 0x0)); } -CARD16 tda9850_getstatus(TDA9850Ptr t) +CARD16 +tda9850_getstatus(TDA9850Ptr t) { -CARD16 status; + CARD16 status; -I2C_WriteRead(&(t->d), NULL, 0, (I2CByte *)&status, 2); -return status; + I2C_WriteRead(&(t->d), NULL, 0, (I2CByte *) & status, 2); + return status; } |