Jump to content

[Driver Programming] C-Media CMI8788 (Xonar DX/D1/D2... family)

cmedia CMI8788 8788 sound PCI C-Media kext driver

  • Please log in to reply
38 replies to this topic

#21
ollysharp

ollysharp

    InsanelyMac Protégé

  • Members
  • Pip
  • 1 posts
Mate if you do this I will love you forever. I have a d2x if you want any testing.

p.s. I had to pass two quizes just to post this!

#22
simply.mots

simply.mots

    InsanelyMac Protégé

  • Members
  • Pip
  • 7 posts
Hey OtaK,
any progress on this?

#23
OtaK

OtaK

    InsanelyMac Protégé

  • Members
  • Pip
  • 33 posts
Still not, being really busy atm... :/

#24
Trex20xx

Trex20xx

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts
  • Gender:Male
;;) so .. what's the deal ? is it working ? :D

#25
littleclaz

littleclaz

    InsanelyMac Protégé

  • Members
  • Pip
  • 1 posts
Hey :)
just posting to ask what is the progress of this?? as I really cannot keep using my Razer Megalodon for sound (as my onboard sound chip blew on my Asus Sabertooth X58) and i really miss listening to music and playing games :L
if you need testers for Xonar DS pass it my way and ill help test driver :)

Thankies..
-Stephen-

#26
OtaK

OtaK

    InsanelyMac Protégé

  • Members
  • Pip
  • 33 posts
Still no progress on it, I'm still busy as it's the end of the school year...
Had reports to write and {censored} like that.

You can follow the progress here, there are some resources : https://github.com/OtaK/CMI8788Driver

#27
UrbanTumbleweed

UrbanTumbleweed

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts
Would this work on my Asus Xonar Essence STX?
I've been dying to turn my HTPC into a hackintosh, but I cannot go without my soundcard.
Thank you for your efforts!
I wish I had the know-how to help.

#28
Artistus

Artistus

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts
  • Gender:Male
  • Location:Ukraine
  • Interests:CG, Design, Art, Music
Hello there!

It's been a long time since last post from TS.
Could any one tell, how the stuff is going on, if working on it?
Any progress making the driver?

Integrated MB audio works good for music and bad for recording.
Anyway, sound on Xonar would be much better.
My sound card is Xonar DX, so I wait for this with patience.

#29
Jakuya

Jakuya

    InsanelyMac Protégé

  • Members
  • Pip
  • 5 posts
Hi there!

I have a Xonar DX and I would really appreciate the Kext for it! Please, help!!...

Thank you!

#30
Artistus

Artistus

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts
  • Gender:Male
  • Location:Ukraine
  • Interests:CG, Design, Art, Music
Can anyone resume the work? Need good sound on my mackintosh.

#31
Trex20xx

Trex20xx

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts
  • Gender:Male
otak .. you've really forgoten us :(

#32
Artistus

Artistus

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts
  • Gender:Male
  • Location:Ukraine
  • Interests:CG, Design, Art, Music
Someone, plz, find a qualified coder, which will resume the work.
Maybe we will make some community of Xonar users, that need drivers, and make some donations for coder?

#33
cdoublejj

cdoublejj

    InsanelyMac Protégé

  • Members
  • PipPip
  • 67 posts
  • Gender:Male
  • Location:USA, MO
Thought I'd check up on this thread. I would think this would happen sooner or later i could see this being usefull since people who use OSX x86 do video and audio editing.

#34
OtaK

OtaK

    InsanelyMac Protégé

  • Members
  • Pip
  • 33 posts

otak .. you've really forgoten us :(


No, but I'm the busiest I've ever been... Sorry everyone, I won't continue writing this driver for now.

Most people don't write drivers for OSX anymore, that's the big problem about finding someone else.
However, if you find someone, just ping me by PM and I'll give all the resources I have.

#35
accrox

accrox

    InsanelyMac Protégé

  • Members
  • Pip
  • 2 posts
Hey.. i push this work !! My Xonar essence ST don't sound in os x :-(
Grr work nice in windows :)

#36
UrbanTumbleweed

UrbanTumbleweed

    InsanelyMac Protégé

  • Members
  • Pip
  • 6 posts
Does anyone have a driver for OS X that will work to provide Analog Only output?
That is all I really need.
Thanks.

#37
Artistus

Artistus

    InsanelyMac Protégé

  • Members
  • Pip
  • 23 posts
  • Gender:Male
  • Location:Ukraine
  • Interests:CG, Design, Art, Music
No one has this driver, so I sold my Xonar DX.

Had to install my old Audigy SB1394 with kX project drivers.
Works good in OS X 10.8.2, but there's no way to use mic or line in wit it.
It's driver settings don't work.
Only MIDI Config works for channel setup.
Analog only output works perfect though. :thumbsup_anim:

#38
cdoublejj

cdoublejj

    InsanelyMac Protégé

  • Members
  • PipPip
  • 67 posts
  • Gender:Male
  • Location:USA, MO
wweeeeeeellll. they have them working under linux.

http://forums.techga...read.php?t=2987

Wonder if it would be possible to find a linux/mac enthusiat who has experienc workign with drivers.

#39
bugmenot123

bugmenot123

    InsanelyMac Protégé

  • Banned
  • Pip
  • 2 posts

For xonar xense support port => http://doc.ubuntu-fr.org/xonar_xense

 Signed-off-by: Ian Dawes <madeallup.gen@gmail.com>

diff --git a/sound/pci/oxygen/virtuoso.c b/sound/pci/oxygen/virtuoso.c
index 64b9fda..df99ec9 100644
--- a/sound/pci/oxygen/virtuoso.c
+++ b/sound/pci/oxygen/virtuoso.c
@@ -52,6 +52,7 @@ static DEFINE_PCI_DEVICE_TABLE(xonar_ids) = {
     { OXYGEN_PCI_SUBID(0x1043, 0x835d) },
     { OXYGEN_PCI_SUBID(0x1043, 0x835e) },
     { OXYGEN_PCI_SUBID(0x1043, 0x838e) },
+    { OXYGEN_PCI_SUBID(0x1043, 0x8428) },
     { OXYGEN_PCI_SUBID(0x1043, 0x8522) },
     { OXYGEN_PCI_SUBID_BROKEN_EEPROM },
     { }
diff --git a/sound/pci/oxygen/xonar_pcm179x.c
b/sound/pci/oxygen/xonar_pcm179x.c
index c8c7f2c..7f31df8 100644
--- a/sound/pci/oxygen/xonar_pcm179x.c
+++ b/sound/pci/oxygen/xonar_pcm179x.c
@@ -212,6 +212,11 @@
 #define GPIO_ST_MAGIC        0x0040
 #define GPIO_ST_HP        0x0080
 
+#define GPIO_XENSE_OUTPUT_ENABLE (0x0001 | 0x0010 | 0x0020)
+#define GPIO_XENSE_HP_REAR       0x0002
+#define GPIO_XENSE_MAGIC         0x0040
+#define GPIO_XENSE_SPEAKERS      0x0080
+
 #define I2C_DEVICE_PCM1796(i)    (0x98 + ((i) << 1))    /* 10011, ii,
/W=0 */
 #define I2C_DEVICE_CS2000    0x9c            /* 100111, 0, /W=0 */
 
@@ -499,6 +504,52 @@ static void xonar_stx_init(struct oxygen *chip)
     xonar_st_init_common(chip);
 }
 
+static void xonar_xense_init(struct oxygen *chip)
+{
+    struct xonar_pcm179x *data = chip->model_data;
+
+    data->generic.ext_power_reg = OXYGEN_GPI_DATA;
+    data->generic.ext_power_int_reg = OXYGEN_GPI_INTERRUPT_MASK;
+    data->generic.ext_power_bit = GPI_EXT_POWER;
+    xonar_init_ext_power(chip);
+   
+    data->generic.anti_pop_delay = 100;
+    data->h6 = chip->model.dac_channels_mixer > 2;
+    data->has_cs2000 = 1;
+    data->cs2000_regs[CS2000_FUN_CFG_1] = CS2000_REF_CLK_DIV_1;
+    data->broken_i2c = true;
+
+    oxygen_write16(chip, OXYGEN_I2S_A_FORMAT,
+               OXYGEN_RATE_48000 |
+               OXYGEN_I2S_FORMAT_I2S |
+               OXYGEN_I2S_MCLK(data->h6 ? MCLK_256 : MCLK_512) |
+               OXYGEN_I2S_BITS_16 |
+               OXYGEN_I2S_MASTER |
+               OXYGEN_I2S_BCLK_64);
+
+    xonar_st_init_i2c(chip);
+    cs2000_registers_init(chip);
+   
+    data->generic.output_enable_bit = GPIO_XENSE_OUTPUT_ENABLE;
+    data->dacs = chip->model.dac_channels_mixer / 2;
+    data->hp_gain_offset = 2*-18;
+
+    pcm1796_init(chip);
+
+    oxygen_set_bits16(chip, OXYGEN_GPIO_CONTROL,
+              GPIO_INPUT_ROUTE | GPIO_XENSE_HP_REAR |
+              GPIO_XENSE_MAGIC | GPIO_XENSE_SPEAKERS);
+    oxygen_clear_bits16(chip, OXYGEN_GPIO_DATA,
+                GPIO_INPUT_ROUTE | GPIO_XENSE_HP_REAR | GPIO_XENSE_SPEAKERS);
+
+    xonar_init_cs53x1(chip);
+    xonar_enable_output(chip);
+
+    snd_component_add(chip->card, "PCM1792A");
+    snd_component_add(chip->card, "CS5381");
+    snd_component_add(chip->card, "CS2000");
+}
+
 static void xonar_d2_cleanup(struct oxygen *chip)
 {
     xonar_disable_output(chip);
@@ -763,7 +814,6 @@ static int st_output_switch_get(struct snd_kcontrol
*ctl,
     return 0;
 }
 
-
 static int st_output_switch_put(struct snd_kcontrol *ctl,
                 struct snd_ctl_elem_value *value)
 {
@@ -859,6 +909,67 @@ static const struct snd_kcontrol_new st_controls[] = {
     },
 };
 
+static int xense_output_switch_get(struct snd_kcontrol *ctl,
+                struct snd_ctl_elem_value *value)
+{
+    struct oxygen *chip = ctl->private_data;
+    u16 gpio;
+
+    gpio = oxygen_read16(chip, OXYGEN_GPIO_DATA);
+    if (gpio & GPIO_XENSE_SPEAKERS)
+        value->value.enumerated.item[0] = 0;
+    else if (!(gpio & GPIO_XENSE_SPEAKERS) && (gpio & GPIO_XENSE_HP_REAR))
+        value->value.enumerated.item[0] = 1;
+    else
+        value->value.enumerated.item[0] = 2;
+    return 0;
+}
+
+static int xense_output_switch_put(struct snd_kcontrol *ctl,
+                struct snd_ctl_elem_value *value)
+{
+    struct oxygen *chip = ctl->private_data;
+    struct xonar_pcm179x *data = chip->model_data;
+    u16 gpio_old, gpio;
+
+    mutex_lock(&chip->mutex);
+    gpio_old = oxygen_read16(chip, OXYGEN_GPIO_DATA);
+    gpio = gpio_old;
+    switch (value->value.enumerated.item[0]) {
+    case 0:
+        gpio |= GPIO_XENSE_SPEAKERS | GPIO_XENSE_HP_REAR;
+        break;
+    case 1:
+        gpio = (gpio | GPIO_XENSE_HP_REAR) & ~GPIO_XENSE_SPEAKERS;
+        break;
+    case 2:
+        gpio &= ~(GPIO_XENSE_SPEAKERS | GPIO_XENSE_HP_REAR);
+        break;
+    }
+    oxygen_write16(chip, OXYGEN_GPIO_DATA, gpio);
+    data->hp_active = !(gpio & GPIO_XENSE_SPEAKERS);
+    update_pcm1796_volume(chip);
+    mutex_unlock(&chip->mutex);
+    return gpio != gpio_old;
+}
+
+static const struct snd_kcontrol_new xense_controls[] = {
+    {
+        .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+        .name = "Analog Output",
+        .info = st_output_switch_info,
+        .get = xense_output_switch_get,
+        .put = xense_output_switch_put,
+    },
+    {
+        .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+        .name = "Headphones Impedance Playback Enum",
+        .info = st_hp_volume_offset_info,
+        .get = st_hp_volume_offset_get,
+        .put = st_hp_volume_offset_put,
+    },
+};
+
 static void xonar_line_mic_ac97_switch(struct oxygen *chip,
                        unsigned int reg, unsigned int mute)
 {
@@ -946,6 +1057,23 @@ static int xonar_st_mixer_init(struct oxygen *chip)
     return 0;
 }
 
+static int xonar_xense_mixer_init(struct oxygen *chip)
+{
+    unsigned int i;
+    int err;
+
+    for (i = 0; i < ARRAY_SIZE(xense_controls); ++i) {
+        err = snd_ctl_add(chip->card,
+                  snd_ctl_new1(&xense_controls[i], chip));
+        if (err < 0)
+            return err;
+    }
+    err = add_pcm1796_controls(chip);
+    if (err < 0)
+        return err;
+    return 0;
+}
+
 static void dump_pcm1796_registers(struct oxygen *chip,
                    struct snd_info_buffer *buffer)
 {
@@ -1138,6 +1266,13 @@ int get_xonar_pcm179x_model(struct oxygen *chip,
         chip->model.resume = xonar_stx_resume;
         chip->model.set_dac_params = set_pcm1796_params;
         break;
+    case 0x8428:
+        chip->model = model_xonar_st;
+        chip->model.shortname = "Xonar Xense";
+        chip->model.chip = "AV100";
+        chip->model.init = xonar_xense_init;
+        chip->model.mixer_init = xonar_xense_mixer_init;
+        break;
     default:
         return -EINVAL;
     }






Also tagged with one or more of these keywords: cmedia, CMI8788, 8788, sound, PCI, C-Media, kext, driver


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy