Skip to contentSkip to conversation

Linux driver for c-media cm8x38 ver 4.12 released

DISCUSSION cmedia 2 participants 5 messages Nov 23, 2000 – Nov 28, 2000

lore
Share & tools
lore

cmedia

author
#0 lore raw

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/

#1 lore raw

[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/

author
#2 lore raw
In reply to cmedia
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 */
+#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.

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");
 #endif

No 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

__init is 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/

#3 lore raw
In reply to cmedia

[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/

author
#4 lore raw
In reply to cmedia

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/