[PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE

Harin Lee posted 6 patches 1 week, 3 days ago
There is a newer version of this series
sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
sound/pci/ctxfi/ctatc.h      |  8 +--
sound/pci/ctxfi/ctdaio.c     | 18 ++++---
sound/pci/ctxfi/ctdaio.h     |  3 ++
sound/pci/ctxfi/cthardware.h |  4 +-
sound/pci/ctxfi/cthw20k1.c   |  3 +-
sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
8 files changed, 223 insertions(+), 62 deletions(-)
[PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE
Posted by Harin Lee 1 week, 3 days ago
I added support for the Onkyo SE-300PCIE (OK0010), a Creative X-Fi
CA20K2-based sound card with dual TI PCM1798 DACs, a single TI PCM1681
DAC for 7.1ch output, and a CS5364 ADC. This model differs
significantly from other CA20K2-based variants.

Since official driver support for this hardware was discontinued a long
time ago, this patch series enables the card to be used on modern
platforms.

This patch series was developed using QEMU vfio tracing, and PCIe BAR
dumps. Tested with analog output (up to 192kHz) and line/microphone
input (up to 96kHz) at various sample rates.

Changes in v2:
 - Fix coding style issue (mixed declaration and code) in
   dedicated_rca_put().

Harin Lee (6):
  ALSA: ctxfi: Add hw parameter to daio_mgr_dao_init()
  ALSA: ctxfi: Add ADC helper functions for GPIO
  ALSA: ctxfi: Use explicit output flag for DAIO resources
  ALSA: ctxfi: Refactor resource alloc for sparse mappings
  ALSA: ctxfi: Add support for dedicated RCA switching
  ALSA: ctxfi: Add support for Onkyo SE-300PCIE (OK0010)

 sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
 sound/pci/ctxfi/ctatc.h      |  8 +--
 sound/pci/ctxfi/ctdaio.c     | 18 ++++---
 sound/pci/ctxfi/ctdaio.h     |  3 ++
 sound/pci/ctxfi/cthardware.h |  4 +-
 sound/pci/ctxfi/cthw20k1.c   |  3 +-
 sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
 sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
 8 files changed, 223 insertions(+), 62 deletions(-)

-- 
2.52.0
Re: [PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE
Posted by Harin Lee 1 week, 2 days ago
I noticed that 'rca_state' in patch 5 uses 'unsigned char'. While it is
safe due to the bounds check, I plan to switch it to 'unsigned int' for
strict correctness.

I also have two questions regarding conventions:

1. ALSA control name (on patch 5): Is "Dedicated Output Playback Enum"
acceptable, or would you prefer a simpler name?
2. CA20K2 port logic (on patch 6): The condition
'if ((idx < 4) && ((hw->model != CTOK0010) || (idx < 3)))' handles
the non-standard RCA port mapping. Does this line require additional
comments or a helper function for better readability?

Please let me know if you would prefer me to send a v3.

On 11/22/25 12:22 AM, Harin Lee wrote:
> I added support for the Onkyo SE-300PCIE (OK0010), a Creative X-Fi
> CA20K2-based sound card with dual TI PCM1798 DACs, a single TI PCM1681
> DAC for 7.1ch output, and a CS5364 ADC. This model differs
> significantly from other CA20K2-based variants.
> 
> Since official driver support for this hardware was discontinued a long
> time ago, this patch series enables the card to be used on modern
> platforms.
> 
> This patch series was developed using QEMU vfio tracing, and PCIe BAR
> dumps. Tested with analog output (up to 192kHz) and line/microphone
> input (up to 96kHz) at various sample rates.
> 
> Changes in v2:
>   - Fix coding style issue (mixed declaration and code) in
>     dedicated_rca_put().
> 
> Harin Lee (6):
>    ALSA: ctxfi: Add hw parameter to daio_mgr_dao_init()
>    ALSA: ctxfi: Add ADC helper functions for GPIO
>    ALSA: ctxfi: Use explicit output flag for DAIO resources
>    ALSA: ctxfi: Refactor resource alloc for sparse mappings
>    ALSA: ctxfi: Add support for dedicated RCA switching
>    ALSA: ctxfi: Add support for Onkyo SE-300PCIE (OK0010)
> 
>   sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
>   sound/pci/ctxfi/ctatc.h      |  8 +--
>   sound/pci/ctxfi/ctdaio.c     | 18 ++++---
>   sound/pci/ctxfi/ctdaio.h     |  3 ++
>   sound/pci/ctxfi/cthardware.h |  4 +-
>   sound/pci/ctxfi/cthw20k1.c   |  3 +-
>   sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
>   sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
>   8 files changed, 223 insertions(+), 62 deletions(-)
>
Re: [PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE
Posted by Takashi Iwai 1 week, 2 days ago
On Sat, 22 Nov 2025 10:00:29 +0100,
Harin Lee wrote:
> 
> I noticed that 'rca_state' in patch 5 uses 'unsigned char'. While it is
> safe due to the bounds check, I plan to switch it to 'unsigned int' for
> strict correctness.
> 
> I also have two questions regarding conventions:
> 
> 1. ALSA control name (on patch 5): Is "Dedicated Output Playback Enum"
> acceptable, or would you prefer a simpler name?

I personally prefer a simpler one, but maybe it'd be a question how
this (or equivalent) control is called on Windows or other OS.
If it's also "Dedicated Output", then we can use it as is, too.

> 2. CA20K2 port logic (on patch 6): The condition
> 'if ((idx < 4) && ((hw->model != CTOK0010) || (idx < 3)))' handles
> the non-standard RCA port mapping. Does this line require additional
> comments or a helper function for better readability?

Sure, a more comment wouldn't hurt.


thanks,

Takashi

> Please let me know if you would prefer me to send a v3.
> 
> On 11/22/25 12:22 AM, Harin Lee wrote:
> > I added support for the Onkyo SE-300PCIE (OK0010), a Creative X-Fi
> > CA20K2-based sound card with dual TI PCM1798 DACs, a single TI PCM1681
> > DAC for 7.1ch output, and a CS5364 ADC. This model differs
> > significantly from other CA20K2-based variants.
> > 
> > Since official driver support for this hardware was discontinued a long
> > time ago, this patch series enables the card to be used on modern
> > platforms.
> > 
> > This patch series was developed using QEMU vfio tracing, and PCIe BAR
> > dumps. Tested with analog output (up to 192kHz) and line/microphone
> > input (up to 96kHz) at various sample rates.
> > 
> > Changes in v2:
> >   - Fix coding style issue (mixed declaration and code) in
> >     dedicated_rca_put().
> > 
> > Harin Lee (6):
> >    ALSA: ctxfi: Add hw parameter to daio_mgr_dao_init()
> >    ALSA: ctxfi: Add ADC helper functions for GPIO
> >    ALSA: ctxfi: Use explicit output flag for DAIO resources
> >    ALSA: ctxfi: Refactor resource alloc for sparse mappings
> >    ALSA: ctxfi: Add support for dedicated RCA switching
> >    ALSA: ctxfi: Add support for Onkyo SE-300PCIE (OK0010)
> > 
> >   sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
> >   sound/pci/ctxfi/ctatc.h      |  8 +--
> >   sound/pci/ctxfi/ctdaio.c     | 18 ++++---
> >   sound/pci/ctxfi/ctdaio.h     |  3 ++
> >   sound/pci/ctxfi/cthardware.h |  4 +-
> >   sound/pci/ctxfi/cthw20k1.c   |  3 +-
> >   sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
> >   sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
> >   8 files changed, 223 insertions(+), 62 deletions(-)
> > 
>
Re: [PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE
Posted by Harin Lee 1 week, 2 days ago
Hi Takashi,

The official Windows driver does not expose a specific mixer control
for this. It implicitly reserves RCA for stereo output and Front for
7.1ch surround, and simply appears as 'Speaker' device in the Control
Panel.

Please let me know if there are any additional points I should address
before I send v3.

Thanks,
Harin Lee

On 11/22/25 6:29 PM, Takashi Iwai wrote:
> On Sat, 22 Nov 2025 10:00:29 +0100,
> Harin Lee wrote:
>>
>> I noticed that 'rca_state' in patch 5 uses 'unsigned char'. While it is
>> safe due to the bounds check, I plan to switch it to 'unsigned int' for
>> strict correctness.
>>
>> I also have two questions regarding conventions:
>>
>> 1. ALSA control name (on patch 5): Is "Dedicated Output Playback Enum"
>> acceptable, or would you prefer a simpler name?
> 
> I personally prefer a simpler one, but maybe it'd be a question how
> this (or equivalent) control is called on Windows or other OS.
> If it's also "Dedicated Output", then we can use it as is, too.
> 
>> 2. CA20K2 port logic (on patch 6): The condition
>> 'if ((idx < 4) && ((hw->model != CTOK0010) || (idx < 3)))' handles
>> the non-standard RCA port mapping. Does this line require additional
>> comments or a helper function for better readability?
> 
> Sure, a more comment wouldn't hurt.
> 
> 
> thanks,
> 
> Takashi
> 
>> Please let me know if you would prefer me to send a v3.
>>
>> On 11/22/25 12:22 AM, Harin Lee wrote:
>>> I added support for the Onkyo SE-300PCIE (OK0010), a Creative X-Fi
>>> CA20K2-based sound card with dual TI PCM1798 DACs, a single TI PCM1681
>>> DAC for 7.1ch output, and a CS5364 ADC. This model differs
>>> significantly from other CA20K2-based variants.
>>>
>>> Since official driver support for this hardware was discontinued a long
>>> time ago, this patch series enables the card to be used on modern
>>> platforms.
>>>
>>> This patch series was developed using QEMU vfio tracing, and PCIe BAR
>>> dumps. Tested with analog output (up to 192kHz) and line/microphone
>>> input (up to 96kHz) at various sample rates.
>>>
>>> Changes in v2:
>>>    - Fix coding style issue (mixed declaration and code) in
>>>      dedicated_rca_put().
>>>
>>> Harin Lee (6):
>>>     ALSA: ctxfi: Add hw parameter to daio_mgr_dao_init()
>>>     ALSA: ctxfi: Add ADC helper functions for GPIO
>>>     ALSA: ctxfi: Use explicit output flag for DAIO resources
>>>     ALSA: ctxfi: Refactor resource alloc for sparse mappings
>>>     ALSA: ctxfi: Add support for dedicated RCA switching
>>>     ALSA: ctxfi: Add support for Onkyo SE-300PCIE (OK0010)
>>>
>>>    sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
>>>    sound/pci/ctxfi/ctatc.h      |  8 +--
>>>    sound/pci/ctxfi/ctdaio.c     | 18 ++++---
>>>    sound/pci/ctxfi/ctdaio.h     |  3 ++
>>>    sound/pci/ctxfi/cthardware.h |  4 +-
>>>    sound/pci/ctxfi/cthw20k1.c   |  3 +-
>>>    sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
>>>    sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
>>>    8 files changed, 223 insertions(+), 62 deletions(-)
>>>
>>
Re: [PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE
Posted by Takashi Iwai 1 week ago
On Sat, 22 Nov 2025 12:33:51 +0100,
Harin Lee wrote:
> 
> Hi Takashi,
> 
> The official Windows driver does not expose a specific mixer control
> for this. It implicitly reserves RCA for stereo output and Front for
> 7.1ch surround, and simply appears as 'Speaker' device in the Control
> Panel.
> 
> Please let me know if there are any additional points I should address
> before I send v3.

Then maybe we should reconsider what exactly this control serves for.
It's for a dedicated control for what and how?

The dedicated mic stuff seems rather internal-only, so it wasn't
explicitly exposed.  But when we expose this, it should look more
intuitive.


thanks,

Takashi

> 
> Thanks,
> Harin Lee
> 
> On 11/22/25 6:29 PM, Takashi Iwai wrote:
> > On Sat, 22 Nov 2025 10:00:29 +0100,
> > Harin Lee wrote:
> >> 
> >> I noticed that 'rca_state' in patch 5 uses 'unsigned char'. While it is
> >> safe due to the bounds check, I plan to switch it to 'unsigned int' for
> >> strict correctness.
> >> 
> >> I also have two questions regarding conventions:
> >> 
> >> 1. ALSA control name (on patch 5): Is "Dedicated Output Playback Enum"
> >> acceptable, or would you prefer a simpler name?
> > 
> > I personally prefer a simpler one, but maybe it'd be a question how
> > this (or equivalent) control is called on Windows or other OS.
> > If it's also "Dedicated Output", then we can use it as is, too.
> > 
> >> 2. CA20K2 port logic (on patch 6): The condition
> >> 'if ((idx < 4) && ((hw->model != CTOK0010) || (idx < 3)))' handles
> >> the non-standard RCA port mapping. Does this line require additional
> >> comments or a helper function for better readability?
> > 
> > Sure, a more comment wouldn't hurt.
> > 
> > 
> > thanks,
> > 
> > Takashi
> > 
> >> Please let me know if you would prefer me to send a v3.
> >> 
> >> On 11/22/25 12:22 AM, Harin Lee wrote:
> >>> I added support for the Onkyo SE-300PCIE (OK0010), a Creative X-Fi
> >>> CA20K2-based sound card with dual TI PCM1798 DACs, a single TI PCM1681
> >>> DAC for 7.1ch output, and a CS5364 ADC. This model differs
> >>> significantly from other CA20K2-based variants.
> >>> 
> >>> Since official driver support for this hardware was discontinued a long
> >>> time ago, this patch series enables the card to be used on modern
> >>> platforms.
> >>> 
> >>> This patch series was developed using QEMU vfio tracing, and PCIe BAR
> >>> dumps. Tested with analog output (up to 192kHz) and line/microphone
> >>> input (up to 96kHz) at various sample rates.
> >>> 
> >>> Changes in v2:
> >>>    - Fix coding style issue (mixed declaration and code) in
> >>>      dedicated_rca_put().
> >>> 
> >>> Harin Lee (6):
> >>>     ALSA: ctxfi: Add hw parameter to daio_mgr_dao_init()
> >>>     ALSA: ctxfi: Add ADC helper functions for GPIO
> >>>     ALSA: ctxfi: Use explicit output flag for DAIO resources
> >>>     ALSA: ctxfi: Refactor resource alloc for sparse mappings
> >>>     ALSA: ctxfi: Add support for dedicated RCA switching
> >>>     ALSA: ctxfi: Add support for Onkyo SE-300PCIE (OK0010)
> >>> 
> >>>    sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
> >>>    sound/pci/ctxfi/ctatc.h      |  8 +--
> >>>    sound/pci/ctxfi/ctdaio.c     | 18 ++++---
> >>>    sound/pci/ctxfi/ctdaio.h     |  3 ++
> >>>    sound/pci/ctxfi/cthardware.h |  4 +-
> >>>    sound/pci/ctxfi/cthw20k1.c   |  3 +-
> >>>    sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
> >>>    sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
> >>>    8 files changed, 223 insertions(+), 62 deletions(-)
> >>> 
> >> 
>
Re: [PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE
Posted by Harin Lee 1 week ago
Thank you for the review.

The SE-300PCIE features separate hardware routing and DACs for the
Hi-Fi RCA output and the 7.1ch Front output, unlike other X-Fi cards
where the Front port serves both purposes.

While ALSA resources typically map 1:1 to hardware, exposing a separate
mixer for the RCA port would likely confuse users and applications
regarding which device to use as the primary output. Therefore, the
"Dedicated Output Playback Enum" control is designed to let the user
select which physical output port (RCA or Front) is used for the
primary output.

If you could suggest a standardized ALSA Enum name for this control, or
any better method to handle this, please let me know.

Thanks,
Harin Lee

On 11/24/25 5:38 PM, Takashi Iwai wrote:
> On Sat, 22 Nov 2025 12:33:51 +0100,
> Harin Lee wrote:
>>
>> Hi Takashi,
>>
>> The official Windows driver does not expose a specific mixer control
>> for this. It implicitly reserves RCA for stereo output and Front for
>> 7.1ch surround, and simply appears as 'Speaker' device in the Control
>> Panel.
>>
>> Please let me know if there are any additional points I should address
>> before I send v3.
> 
> Then maybe we should reconsider what exactly this control serves for.
> It's for a dedicated control for what and how?
> 
> The dedicated mic stuff seems rather internal-only, so it wasn't
> explicitly exposed.  But when we expose this, it should look more
> intuitive.
> 
> 
> thanks,
> 
> Takashi
> 
>>
>> Thanks,
>> Harin Lee
>>
>> On 11/22/25 6:29 PM, Takashi Iwai wrote:
>>> On Sat, 22 Nov 2025 10:00:29 +0100,
>>> Harin Lee wrote:
>>>>
>>>> I noticed that 'rca_state' in patch 5 uses 'unsigned char'. While it is
>>>> safe due to the bounds check, I plan to switch it to 'unsigned int' for
>>>> strict correctness.
>>>>
>>>> I also have two questions regarding conventions:
>>>>
>>>> 1. ALSA control name (on patch 5): Is "Dedicated Output Playback Enum"
>>>> acceptable, or would you prefer a simpler name?
>>>
>>> I personally prefer a simpler one, but maybe it'd be a question how
>>> this (or equivalent) control is called on Windows or other OS.
>>> If it's also "Dedicated Output", then we can use it as is, too.
>>>
>>>> 2. CA20K2 port logic (on patch 6): The condition
>>>> 'if ((idx < 4) && ((hw->model != CTOK0010) || (idx < 3)))' handles
>>>> the non-standard RCA port mapping. Does this line require additional
>>>> comments or a helper function for better readability?
>>>
>>> Sure, a more comment wouldn't hurt.
>>>
>>>
>>> thanks,
>>>
>>> Takashi
>>>
>>>> Please let me know if you would prefer me to send a v3.
>>>>
>>>> On 11/22/25 12:22 AM, Harin Lee wrote:
>>>>> I added support for the Onkyo SE-300PCIE (OK0010), a Creative X-Fi
>>>>> CA20K2-based sound card with dual TI PCM1798 DACs, a single TI PCM1681
>>>>> DAC for 7.1ch output, and a CS5364 ADC. This model differs
>>>>> significantly from other CA20K2-based variants.
>>>>>
>>>>> Since official driver support for this hardware was discontinued a long
>>>>> time ago, this patch series enables the card to be used on modern
>>>>> platforms.
>>>>>
>>>>> This patch series was developed using QEMU vfio tracing, and PCIe BAR
>>>>> dumps. Tested with analog output (up to 192kHz) and line/microphone
>>>>> input (up to 96kHz) at various sample rates.
>>>>>
>>>>> Changes in v2:
>>>>>     - Fix coding style issue (mixed declaration and code) in
>>>>>       dedicated_rca_put().
>>>>>
>>>>> Harin Lee (6):
>>>>>      ALSA: ctxfi: Add hw parameter to daio_mgr_dao_init()
>>>>>      ALSA: ctxfi: Add ADC helper functions for GPIO
>>>>>      ALSA: ctxfi: Use explicit output flag for DAIO resources
>>>>>      ALSA: ctxfi: Refactor resource alloc for sparse mappings
>>>>>      ALSA: ctxfi: Add support for dedicated RCA switching
>>>>>      ALSA: ctxfi: Add support for Onkyo SE-300PCIE (OK0010)
>>>>>
>>>>>     sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
>>>>>     sound/pci/ctxfi/ctatc.h      |  8 +--
>>>>>     sound/pci/ctxfi/ctdaio.c     | 18 ++++---
>>>>>     sound/pci/ctxfi/ctdaio.h     |  3 ++
>>>>>     sound/pci/ctxfi/cthardware.h |  4 +-
>>>>>     sound/pci/ctxfi/cthw20k1.c   |  3 +-
>>>>>     sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
>>>>>     sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
>>>>>     8 files changed, 223 insertions(+), 62 deletions(-)
>>>>>
>>>>
>>
Re: [PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE
Posted by Takashi Iwai 1 week ago
On Mon, 24 Nov 2025 11:22:32 +0100,
Harin Lee wrote:
> 
> Thank you for the review.
> 
> The SE-300PCIE features separate hardware routing and DACs for the
> Hi-Fi RCA output and the 7.1ch Front output, unlike other X-Fi cards
> where the Front port serves both purposes.
> 
> While ALSA resources typically map 1:1 to hardware, exposing a separate
> mixer for the RCA port would likely confuse users and applications
> regarding which device to use as the primary output. Therefore, the
> "Dedicated Output Playback Enum" control is designed to let the user
> select which physical output port (RCA or Front) is used for the
> primary output.
> 
> If you could suggest a standardized ALSA Enum name for this control, or
> any better method to handle this, please let me know.

So it chooses the exclusive output for the main playback streams?
Then it could be something like "Master Playback Route".
If it doesn't include the digital outputs like SPDIF, it could be
"Analog Playback Route" or whatever, too.


HTH,

Takashi

> 
> Thanks,
> Harin Lee
> 
> On 11/24/25 5:38 PM, Takashi Iwai wrote:
> > On Sat, 22 Nov 2025 12:33:51 +0100,
> > Harin Lee wrote:
> >> 
> >> Hi Takashi,
> >> 
> >> The official Windows driver does not expose a specific mixer control
> >> for this. It implicitly reserves RCA for stereo output and Front for
> >> 7.1ch surround, and simply appears as 'Speaker' device in the Control
> >> Panel.
> >> 
> >> Please let me know if there are any additional points I should address
> >> before I send v3.
> > 
> > Then maybe we should reconsider what exactly this control serves for.
> > It's for a dedicated control for what and how?
> > 
> > The dedicated mic stuff seems rather internal-only, so it wasn't
> > explicitly exposed.  But when we expose this, it should look more
> > intuitive.
> > 
> > 
> > thanks,
> > 
> > Takashi
> > 
> >> 
> >> Thanks,
> >> Harin Lee
> >> 
> >> On 11/22/25 6:29 PM, Takashi Iwai wrote:
> >>> On Sat, 22 Nov 2025 10:00:29 +0100,
> >>> Harin Lee wrote:
> >>>> 
> >>>> I noticed that 'rca_state' in patch 5 uses 'unsigned char'. While it is
> >>>> safe due to the bounds check, I plan to switch it to 'unsigned int' for
> >>>> strict correctness.
> >>>> 
> >>>> I also have two questions regarding conventions:
> >>>> 
> >>>> 1. ALSA control name (on patch 5): Is "Dedicated Output Playback Enum"
> >>>> acceptable, or would you prefer a simpler name?
> >>> 
> >>> I personally prefer a simpler one, but maybe it'd be a question how
> >>> this (or equivalent) control is called on Windows or other OS.
> >>> If it's also "Dedicated Output", then we can use it as is, too.
> >>> 
> >>>> 2. CA20K2 port logic (on patch 6): The condition
> >>>> 'if ((idx < 4) && ((hw->model != CTOK0010) || (idx < 3)))' handles
> >>>> the non-standard RCA port mapping. Does this line require additional
> >>>> comments or a helper function for better readability?
> >>> 
> >>> Sure, a more comment wouldn't hurt.
> >>> 
> >>> 
> >>> thanks,
> >>> 
> >>> Takashi
> >>> 
> >>>> Please let me know if you would prefer me to send a v3.
> >>>> 
> >>>> On 11/22/25 12:22 AM, Harin Lee wrote:
> >>>>> I added support for the Onkyo SE-300PCIE (OK0010), a Creative X-Fi
> >>>>> CA20K2-based sound card with dual TI PCM1798 DACs, a single TI PCM1681
> >>>>> DAC for 7.1ch output, and a CS5364 ADC. This model differs
> >>>>> significantly from other CA20K2-based variants.
> >>>>> 
> >>>>> Since official driver support for this hardware was discontinued a long
> >>>>> time ago, this patch series enables the card to be used on modern
> >>>>> platforms.
> >>>>> 
> >>>>> This patch series was developed using QEMU vfio tracing, and PCIe BAR
> >>>>> dumps. Tested with analog output (up to 192kHz) and line/microphone
> >>>>> input (up to 96kHz) at various sample rates.
> >>>>> 
> >>>>> Changes in v2:
> >>>>>     - Fix coding style issue (mixed declaration and code) in
> >>>>>       dedicated_rca_put().
> >>>>> 
> >>>>> Harin Lee (6):
> >>>>>      ALSA: ctxfi: Add hw parameter to daio_mgr_dao_init()
> >>>>>      ALSA: ctxfi: Add ADC helper functions for GPIO
> >>>>>      ALSA: ctxfi: Use explicit output flag for DAIO resources
> >>>>>      ALSA: ctxfi: Refactor resource alloc for sparse mappings
> >>>>>      ALSA: ctxfi: Add support for dedicated RCA switching
> >>>>>      ALSA: ctxfi: Add support for Onkyo SE-300PCIE (OK0010)
> >>>>> 
> >>>>>     sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
> >>>>>     sound/pci/ctxfi/ctatc.h      |  8 +--
> >>>>>     sound/pci/ctxfi/ctdaio.c     | 18 ++++---
> >>>>>     sound/pci/ctxfi/ctdaio.h     |  3 ++
> >>>>>     sound/pci/ctxfi/cthardware.h |  4 +-
> >>>>>     sound/pci/ctxfi/cthw20k1.c   |  3 +-
> >>>>>     sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
> >>>>>     sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
> >>>>>     8 files changed, 223 insertions(+), 62 deletions(-)
> >>>>> 
> >>>> 
> >> 
>
Re: [PATCH v2 0/6] ALSA: ctxfi: Add support for Onkyo SE-300PCIE
Posted by Harin Lee 1 week ago
Thanks for the suggestion.

Since this control only affects the routing between the RCA and Front
outputs (excluding S/PDIF), "Analog Playback Route" is the technically
correct name.

I will use "Analog Playback Route" as the ALSA control name and address
the points we discussed in v3.

Thanks,
Harin Lee

On 11/25/25 12:54 AM, Takashi Iwai wrote:
> On Mon, 24 Nov 2025 11:22:32 +0100,
> Harin Lee wrote:
>>
>> Thank you for the review.
>>
>> The SE-300PCIE features separate hardware routing and DACs for the
>> Hi-Fi RCA output and the 7.1ch Front output, unlike other X-Fi cards
>> where the Front port serves both purposes.
>>
>> While ALSA resources typically map 1:1 to hardware, exposing a separate
>> mixer for the RCA port would likely confuse users and applications
>> regarding which device to use as the primary output. Therefore, the
>> "Dedicated Output Playback Enum" control is designed to let the user
>> select which physical output port (RCA or Front) is used for the
>> primary output.
>>
>> If you could suggest a standardized ALSA Enum name for this control, or
>> any better method to handle this, please let me know.
> 
> So it chooses the exclusive output for the main playback streams?
> Then it could be something like "Master Playback Route".
> If it doesn't include the digital outputs like SPDIF, it could be
> "Analog Playback Route" or whatever, too.
> 
> 
> HTH,
> 
> Takashi
> 
>>
>> Thanks,
>> Harin Lee
>>
>> On 11/24/25 5:38 PM, Takashi Iwai wrote:
>>> On Sat, 22 Nov 2025 12:33:51 +0100,
>>> Harin Lee wrote:
>>>>
>>>> Hi Takashi,
>>>>
>>>> The official Windows driver does not expose a specific mixer control
>>>> for this. It implicitly reserves RCA for stereo output and Front for
>>>> 7.1ch surround, and simply appears as 'Speaker' device in the Control
>>>> Panel.
>>>>
>>>> Please let me know if there are any additional points I should address
>>>> before I send v3.
>>>
>>> Then maybe we should reconsider what exactly this control serves for.
>>> It's for a dedicated control for what and how?
>>>
>>> The dedicated mic stuff seems rather internal-only, so it wasn't
>>> explicitly exposed.  But when we expose this, it should look more
>>> intuitive.
>>>
>>>
>>> thanks,
>>>
>>> Takashi
>>>
>>>>
>>>> Thanks,
>>>> Harin Lee
>>>>
>>>> On 11/22/25 6:29 PM, Takashi Iwai wrote:
>>>>> On Sat, 22 Nov 2025 10:00:29 +0100,
>>>>> Harin Lee wrote:
>>>>>>
>>>>>> I noticed that 'rca_state' in patch 5 uses 'unsigned char'. While it is
>>>>>> safe due to the bounds check, I plan to switch it to 'unsigned int' for
>>>>>> strict correctness.
>>>>>>
>>>>>> I also have two questions regarding conventions:
>>>>>>
>>>>>> 1. ALSA control name (on patch 5): Is "Dedicated Output Playback Enum"
>>>>>> acceptable, or would you prefer a simpler name?
>>>>>
>>>>> I personally prefer a simpler one, but maybe it'd be a question how
>>>>> this (or equivalent) control is called on Windows or other OS.
>>>>> If it's also "Dedicated Output", then we can use it as is, too.
>>>>>
>>>>>> 2. CA20K2 port logic (on patch 6): The condition
>>>>>> 'if ((idx < 4) && ((hw->model != CTOK0010) || (idx < 3)))' handles
>>>>>> the non-standard RCA port mapping. Does this line require additional
>>>>>> comments or a helper function for better readability?
>>>>>
>>>>> Sure, a more comment wouldn't hurt.
>>>>>
>>>>>
>>>>> thanks,
>>>>>
>>>>> Takashi
>>>>>
>>>>>> Please let me know if you would prefer me to send a v3.
>>>>>>
>>>>>> On 11/22/25 12:22 AM, Harin Lee wrote:
>>>>>>> I added support for the Onkyo SE-300PCIE (OK0010), a Creative X-Fi
>>>>>>> CA20K2-based sound card with dual TI PCM1798 DACs, a single TI PCM1681
>>>>>>> DAC for 7.1ch output, and a CS5364 ADC. This model differs
>>>>>>> significantly from other CA20K2-based variants.
>>>>>>>
>>>>>>> Since official driver support for this hardware was discontinued a long
>>>>>>> time ago, this patch series enables the card to be used on modern
>>>>>>> platforms.
>>>>>>>
>>>>>>> This patch series was developed using QEMU vfio tracing, and PCIe BAR
>>>>>>> dumps. Tested with analog output (up to 192kHz) and line/microphone
>>>>>>> input (up to 96kHz) at various sample rates.
>>>>>>>
>>>>>>> Changes in v2:
>>>>>>>      - Fix coding style issue (mixed declaration and code) in
>>>>>>>        dedicated_rca_put().
>>>>>>>
>>>>>>> Harin Lee (6):
>>>>>>>       ALSA: ctxfi: Add hw parameter to daio_mgr_dao_init()
>>>>>>>       ALSA: ctxfi: Add ADC helper functions for GPIO
>>>>>>>       ALSA: ctxfi: Use explicit output flag for DAIO resources
>>>>>>>       ALSA: ctxfi: Refactor resource alloc for sparse mappings
>>>>>>>       ALSA: ctxfi: Add support for dedicated RCA switching
>>>>>>>       ALSA: ctxfi: Add support for Onkyo SE-300PCIE (OK0010)
>>>>>>>
>>>>>>>      sound/pci/ctxfi/ctatc.c      | 97 ++++++++++++++++++++++++++----------
>>>>>>>      sound/pci/ctxfi/ctatc.h      |  8 +--
>>>>>>>      sound/pci/ctxfi/ctdaio.c     | 18 ++++---
>>>>>>>      sound/pci/ctxfi/ctdaio.h     |  3 ++
>>>>>>>      sound/pci/ctxfi/cthardware.h |  4 +-
>>>>>>>      sound/pci/ctxfi/cthw20k1.c   |  3 +-
>>>>>>>      sound/pci/ctxfi/cthw20k2.c   | 79 ++++++++++++++++++++++-------
>>>>>>>      sound/pci/ctxfi/ctmixer.c    | 73 +++++++++++++++++++++++++--
>>>>>>>      8 files changed, 223 insertions(+), 62 deletions(-)
>>>>>>>
>>>>>>
>>>>
>>