OtaK Posted June 12, 2012 Author Share Posted June 12, 2012 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 1 Link to comment Share on other sites More sharing options...
UrbanTumbleweed Posted July 6, 2012 Share Posted July 6, 2012 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. Link to comment Share on other sites More sharing options...
Artistus Posted August 27, 2012 Share Posted August 27, 2012 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. Link to comment Share on other sites More sharing options...
Jakuya Posted August 30, 2012 Share Posted August 30, 2012 Hi there! I have a Xonar DX and I would really appreciate the Kext for it! Please, help!!... Thank you! Link to comment Share on other sites More sharing options...
Artistus Posted October 8, 2012 Share Posted October 8, 2012 Can anyone resume the work? Need good sound on my mackintosh. Link to comment Share on other sites More sharing options...
Trex20xx Posted October 26, 2012 Share Posted October 26, 2012 otak .. you've really forgoten us Link to comment Share on other sites More sharing options...
Artistus Posted October 26, 2012 Share Posted October 26, 2012 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? Link to comment Share on other sites More sharing options...
cdoublejj Posted November 11, 2012 Share Posted November 11, 2012 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. Link to comment Share on other sites More sharing options...
OtaK Posted November 28, 2012 Author Share Posted November 28, 2012 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. Link to comment Share on other sites More sharing options...
accrox Posted November 28, 2012 Share Posted November 28, 2012 Hey.. i push this work !! My Xonar essence ST don't sound in os x :-( Grr work nice in windows Link to comment Share on other sites More sharing options...
UrbanTumbleweed Posted November 28, 2012 Share Posted November 28, 2012 Does anyone have a driver for OS X that will work to provide Analog Only output? That is all I really need. Thanks. Link to comment Share on other sites More sharing options...
Artistus Posted January 21, 2013 Share Posted January 21, 2013 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. Link to comment Share on other sites More sharing options...
cdoublejj Posted March 24, 2013 Share Posted March 24, 2013 wweeeeeeellll. they have them working under linux. http://forums.techgage.com/showthread.php?t=2987 Wonder if it would be possible to find a linux/mac enthusiat who has experienc workign with drivers. Link to comment Share on other sites More sharing options...
bugmenot123 Posted September 22, 2013 Share Posted September 22, 2013 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; } Link to comment Share on other sites More sharing options...
cdoublejj Posted August 8, 2014 Share Posted August 8, 2014 MAybe one of these days you might have more time again. Link to comment Share on other sites More sharing options...
zeimus Posted September 1, 2014 Share Posted September 1, 2014 I will gladly donate money to someone who ports the linux driver over. Link to comment Share on other sites More sharing options...
DF1eCH Posted April 11, 2015 Share Posted April 11, 2015 Yeah I too would donate for it! Link to comment Share on other sites More sharing options...
bkdwt Posted August 9, 2015 Share Posted August 9, 2015 News? Link to comment Share on other sites More sharing options...
Broly Posted April 11, 2018 Share Posted April 11, 2018 (edited) bump. now that i have some free time on my hands, i hope to work on this some more. i *think* it should show up as this: Quote Quote | | +-o AppleACPIPCI | | +-o ESI@0 | | +-o IOU2@1 | | | +-o IOPP | | | +-o I2PS@0 | | | +-o IOPP | | | +-o PPB2@2 | | | | +-o IOPP | | | | +-o PXS3@0 | | | | +-o IOPP | | | | +-o pci13f6,8788@4 | | | +-o PPB4@4 | | | +-o IOPP this *looks* right but i could be wrong. however the card is now powered and this does not conflict with the video card stuff (i don't think the 580 has audio output, but i could be wrong): Quote Quote | | +-o IOU0@3 | | | +-o IOPP | | | +-o PXS1@0 | | | | +-o NVDAHal | | | | +-o NVDAgl | | | | +-o NVDA,Display-A@0 | | | | | +-o NVDA | | | | | +-o AppleMCCSControlModule | | | | | | +-o AppleMCCSParameterHandler | | | | | +-o AppleUpstreamUserClientDriver | | | | | +-o AGPM | | | | | | +-o gpu-control | | | | | | +-o IOHWControl | | | | | +-o IOFramebufferI2CInterface | | | | | +-o display0 | | | | | | +-o AppleDisplay | | | | | +-o IOFramebufferUserClient | | | | | +-o IOFramebufferSharedUserClient | | | | +-o nvAccelerator | | | | | +-o nv2DContext | | | | | +-o nv2DContext | | | | | +-o nvDevice | | | | | +-o nvSharedUserClient | | | | | +-o nvShareGroupContext | | | | | +-o nvFermiGLContext | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvDevice | | | | | +-o nvSharedUserClient | | | | | +-o nvDevice | | | | | +-o nvSharedUserClient | | | | | +-o nvShareGroupContext | | | | | +-o nvFermiGLContext | | | | | +-o nvSurface | | | | | +-o nvDevice | | | | | +-o nvSharedUserClient | | | | | +-o nvShareGroupContext | | | | | +-o nvFermiGLContext | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvSurface | | | | | +-o nvDevice | | | | | +-o nvSharedUserClient | | | | | +-o nvShareGroupContext | | | | | +-o nvFermiGLContext | | | | | +-o nvShareGroupContext | | | | | +-o nvFermiGLContext | | | | | +-o nvShareGroupContext | | | | | +-o nvFermiGLContext | | | | +-o NVDA,Display-B@1 | | | | | +-o NVDA | | | | | +-o AppleMCCSControlModule | | | | | | +-o AppleMCCSParameterHandler | | | | | +-o AppleUpstreamUserClientDriver | | | | | +-o IOFramebufferI2CInterface | | | | | +-o IOFramebufferUserClient | | | | +-o NVDC | | | | | +-o AppleGraphicsDeviceControlClient | | | | +-o NVDAinitgl | | | +-o PXS1@0,1 it seems to me the xonar hdav1.3 is wrapping the PCI interface to PCI-E, which is not a surprise since the bandwidth requirements are typically within PCI spec. again i could be wrong, but given the 8788 PCI and PXS1@0,1's IDs being consecutive (0x1000001f3 and 0x1000001f4, respectively), i think detection is right. hopefully i can contribute something useful here... exciting area given that IOKit really has not been touched at the level necessary to contribute a proper CMI8788 driver. progress is here Edited April 17, 2018 by Broly linking github for interested parties. Link to comment Share on other sites More sharing options...
Broly Posted April 14, 2020 Share Posted April 14, 2020 i've actually made quite a bit of progress, see below. however i still have to get the streams, mixers, and volume controls setup. 2 Link to comment Share on other sites More sharing options...
glamurol Posted May 30, 2020 Share Posted May 30, 2020 (edited) How install it on Catalina? Edited November 7, 2020 by glamurol time Link to comment Share on other sites More sharing options...
ITzTravelInTime Posted August 19, 2020 Share Posted August 19, 2020 (edited) On 4/14/2020 at 9:32 PM, Broly said: i've actually made quite a bit of progress, see below. however i still have to get the streams, mixers, and volume controls setup. I have created a pull request in your github repo, please check it out Edited August 19, 2020 by ITzTravelInTime Link to comment Share on other sites More sharing options...
Recommended Posts