Linux driver for c-media cm8x38 ver 4.12 released
Hi all,
For those who has C-Media 8338/8738-based sound card or as on-board sound chip and need to work with Linux or BeOS, please download the beta driver at http://members.home.net/puresoft/cmedia.html. The Linux driver can work with kernel 2.2 and 2.4.
For questions, please e-mail to [email protected], thanks a lot !
Sincerely,
ChenLi Tien
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
[ChenLi Tien, from http://members.home.net/puresoft/cmedia.html]
Quoted 5 lines
- * Copyright (C) 1999 ChenLi Tien ([email protected])
- *
- * Based on the PCI drivers by Thomas Sailer ([email protected])
+ * Copyright (C) 1999 ChenLi Tien ([email protected])
+ * C-media support ([email protected])
This is somewhat impolite -- unless the driver is *not* actually based on Tom's work.
Quoted 15 lines
(quoted diff) +11
-0+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) + owner: THIS_MODULE, +#endif llseek: cm_llseek, ioctl: cm_ioctl_mixdev, open: cm_open_mixdev, release: cm_release_mixdev, +#else + &cm_llseek, + NULL, /* read */ + NULL, /* write */ + NULL, /* readdir */ + NULL, /* poll */ + &cm_ioctl_mixdev,
Review
Quoted 10 lines
(quoted diff) +10
-0+ NULL, /* mmap */ + &cm_open_mixdev, + NULL, /* flush */ + &cm_release_mixdev, + NULL, /* fsync */ + NULL, /* fasync */ + NULL, /* check_media_change */ + NULL, /* revalidate */ + NULL, /* lock */ +#endif
I don't think the (2,3,0) ifdef is necessary. Just use the labeled initializers for all kernels. See also cm_audio_fops, cm_dsp_fops, cm_midi_fops, cm_dmfm_fops.
Review
Quoted 10 lines
(quoted diff) +9
-0+#ifdef MODULE +MODULE_PARM(mpu_io, "i"); +MODULE_PARM(fm_io, "i"); +MODULE_PARM(spdif_inverse, "i"); +MODULE_PARM(spdif_loop, "i"); +MODULE_PARM(four_sp, "i"); +MODULE_PARM(rear_out, "i"); +MODULE_PARM(modem, "i"); +MODULE_PARM(joystick, "i"); #endif
No need for '#ifdef MODULE'.
Quoted 5 lines
(quoted diff) +5
-0+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) +static int __init init_cmpci(void) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0) +#ifdef MODULE +int __init init_module(void)
Review
Quoted 10 lines
(quoted diff) +8
-0+#else int __init init_cmpci(void) #endif +#else +#ifdef MODULE +__initfunc(int init_module(void)) +#else +__initfunc(int init_cmpci(void)) +#endif +#endif
__init is fine in 2.2, no need for conditional __initfunc().
Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
Quoted 10 lines · Peter Samuelson
[ChenLi Tien, from http://members.home.net/puresoft/cmedia.html]
Quoted 5 lines
- * Copyright (C) 1999 ChenLi Tien ([email protected])
- *
- * Based on the PCI drivers by Thomas Sailer ([email protected])
+ * Copyright (C) 1999 ChenLi Tien ([email protected])
+ * C-media support ([email protected])This is somewhat impolite -- unless the driver is *not* actually based on Tom's work.
I didn't notice someone add this line, but I will be happy to add it.
Quoted 22 lines
Quoted 22 lines
(quoted diff) +17
-0+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) + owner: THIS_MODULE, +#endif llseek: cm_llseek, ioctl: cm_ioctl_mixdev, open: cm_open_mixdev, release: cm_release_mixdev, +#else + &cm_llseek, + NULL, /* read */ + NULL, /* write */ + NULL, /* readdir */ + NULL, /* poll */ + &cm_ioctl_mixdev, + NULL, /* mmap */ + &cm_open_mixdev, + NULL, /* flush */ + &cm_release_mixdev, + NULL, /* fsync */ + NULL, /* fasync */
Quoted 8 lines
Review
Quoted 4 lines
(quoted diff) +4
-0+ NULL, /* check_media_change */ + NULL, /* revalidate */ + NULL, /* lock */ +#endifI don't think the (2,3,0) ifdef is necessary. Just use the labeled initializers for all kernels. See also
cm_audio_fops,cm_dsp_fops,cm_midi_fops,cm_dmfm_fops.
Yes, as 2.3.x series is not for end-user, I can remove them. I keep it for easy to tell what's different for kernel 2.3 and 2.4.
Quoted 14 lines
Review
Quoted 12 lines
(quoted diff) +9
-0+#ifdef MODULE +MODULE_PARM(mpu_io, "i"); +MODULE_PARM(fm_io, "i"); +MODULE_PARM(spdif_inverse, "i"); +MODULE_PARM(spdif_loop, "i"); +MODULE_PARM(four_sp, "i"); +MODULE_PARM(rear_out, "i"); +MODULE_PARM(modem, "i"); +MODULE_PARM(joystick, "i"); #endifNo need for '#ifdef MODULE'.
I will remove it if kernel 2.2 can work.
Quoted 20 lines
Quoted 7 lines
(quoted diff) +5
-0+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0) +static int __init init_cmpci(void) +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0) +#ifdef MODULE +int __init init_module(void)Review
Quoted 10 lines
(quoted diff) +8
-0+#else int __init init_cmpci(void) #endif +#else +#ifdef MODULE +__initfunc(int init_module(void)) +#else +__initfunc(int init_cmpci(void)) +#endif +#endif
__initis fine in 2.2, no need for conditional__initfunc().
Quoted 1 line
Peter
Thanks for your suggestion, I can change it.
ChenLi Tien
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
[ChenLi Tien]
Quoted 6 lines
Quoted 3 lines
I don't think the (2,3,0) ifdef is necessary. Just use the labeled initializers for all kernels. See also
cm_audio_fops,cm_dsp_fops,cm_midi_fops,cm_dmfm_fops.Yes, as 2.3.x series is not for end-user, I can remove them. I keep it for easy to tell what's different for kernel 2.3 and 2.4.
What I meant was, the code which you have '#if version >= 2.3.0' is also valid for 2.2. You should not have any conditional code there except the 'owner:' member, which is '#if version >= 2.4.0'.
Quoted 3 lines
Quoted 1 line
No need for '#ifdef MODULE'.
I will remove it if kernel 2.2 can work.
It can. I checked 2.2.0.
Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/
Hi,
I change it so a release 4.14 posted at
http://members.home.net/puresoft/cmedia.html. This version has no functional change.
Sincerely,
ChenLi Tien
Quoted 12 lines · Peter Samuelson
[ChenLi Tien]
Quoted 6 lines
Quoted 3 lines
I don't think the (2,3,0) ifdef is necessary. Just use the labeled initializers for all kernels. See also
cm_audio_fops,cm_dsp_fops,cm_midi_fops,cm_dmfm_fops.Yes, as 2.3.x series is not for end-user, I can remove them. I keep it for easy to tell what's different for kernel 2.3 and 2.4.
What I meant was, the code which you have '#if version >= 2.3.0' is also valid for 2.2. You should not have any conditional code there except the 'owner:' member, which is '#if version >= 2.4.0'.
Quoted 7 lines
Quoted 3 lines
Quoted 1 line
No need for '#ifdef MODULE'.
I will remove it if kernel 2.2 can work.
It can. I checked 2.2.0.
Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
Please read the FAQ at http://www.tux.org/lkml/