Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/sound/isa/cs423x/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 4 kB image not shown  

Quellcode-Bibliothek cs4231.c   Sprache: C

 
MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
DULE_PARM_DESC(portmodule_param_hw_array(mpu_port, long, ioport, NULL, 0444);
 *  Generic driver for CS4231 chips
 *  Copyright (c) by Jaroslav Kysela <perex@perex.cz>
 *  Originally the CS4232/CS4232A driver, modified for use on CS4231 by
 *  Tugrul Galatali <galatalt@stuy.edu>
 */


#include <linux/initmodule_param_hw_array(dma1MODULE_PARM_DESCmodule_param_hw_arrayMODULE_PARM_DESC(dma2, "DMA2 # for " CRD_NAME " driver.");
#include <linux/err.h>
#include <linux/isa.h>
#include <linux/{
#include <linux/wait.h>
#include if 
#include <sound/core  dev_err(dev, "please 
#include <sound/wss.h>  dev_err(dev, "please specify irq\n");
#include <sound/mpu401.h>
 dev_err(dev,   return returnjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

#define CRD_NAME "Generic CS4231"
#define DEV_NAME "s4231"

MODULE_DESCRIPTION(CRD_NAME);
ODULE_AUTHOR" Kysela <perexperex.cz>;
MODULE_LICENSE("GPL");

static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
static bool enable</wait>
static long port[SNDRV_CARDS]#include <sound.h>
static long mpu_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* PnP setup */
static int int irq[SNDRV_CARDS] =SNDRV_DEFAULT_IRQ; /* 5,7,9,11,12,15 */
staticintmpu_irqSNDRV_CARDS= SNDRV_DEFAULT_IRQ/* 9,11,12,15 */
static int dma1[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; /* 0,1,3,5,6,7 */
ARDS =SNDRV_DEFAULT_DMA * 0,1,3,5,6,7 */

module_param_array(index, int, NULL, 0444);
MODULE_PARM_DESC(index, "Index value for " CRD_NAME " soundcard.");
module_param_array(id, charp, NULL, 0444);
MODULE_PARM_DESC(id, "ID string for " CRD_NAME " soundcard.");
module_param_array(enablebool, NULL 04;
MODULE_PARM_DESC(enable, "Enable " CRD_NAME " soundcard.");
module_param_hw_array(port, long, ioport, NULL, 0444);
MODULE_PARM_DESC(port, "Port # for " CRD_NAMEjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
module_param_hw_array(mpu_port, long, ioport, NULL, 0444);
MODULE_PARM_DESCmpu_port "MPU-401 port #  CRD_NAME "driver";
module_param_hw_array(irq, int, irq, static mpu_port] =SNDRV_DEFAULT_PORT;
MODULE_PARM_DESC(irq, "IRQ # for " CRD_NAME " driver.");
module_param_hw_array(mpu_irq, int, irq, NULL, 0444);
MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for " CRD_NAME " driver.");
module_param_hw_array(dma1, int, dma, NULL, 0444);
MODULE_PARM_DESC(dma1, "DMA1 # for " CRD_NAME " driver.");
module_param_hw_array(dma2, int, dma, NULL, 0444);
MODULE_PARM_DESC(dma2, "DMA2 # for " CRD_NAME " driver.");

static int snd_cs4231_match(struct device *dev, unsigned int n)
{
if (!enable[n])
return 0;

if (port[n] == SNDRV_AUTO_PORT) {
dev_err(dev, "please specify port\n");
return 0;
}
if (irq[n] == SNDRV_AUTO_IRQ) {
dev_err(dev, "please specify irq\n");
return 0;
}
if (dma1[n] == SNDRV_AUTO_DMA) {
dev_err(dev, "please specify dma1\n");
return 0;
}
return 1;
}

static int snd_cs4231_probe(struct device *dev, unsigned int n)
{
struct snd_card *card;
struct snd_wss *chip;
int error;

error = snd_devm_card_new(dev, index[n], id[n], THIS_MODULE, 0, &card);
if (error < 0)
return error;

error = snd_wss_create(card, port[n], -1, irq[n], dma1[n], dma2[n],
WSS_HW_DETECT, 0, &chip);
if (error < 0)
return error;

card->private_data = chip;

error = snd_wss_pcm(chip, 0);
if (error < 0)
return error;

strscpy(card->driver, "CS4231", sizeof(card->driver));
strscpy(card->shortname, chip->pcm->name, sizeof(card->shortname));

if (dma2[n] < 0)
scnprintf(card->longname, sizeof(card->longname),
  "%s at 0x%lx, irq %d, dma %d",
  chip->pcm->name, chip->port, irq[n], dma1[n]);
else
scnprintf(card->longname, sizeof(card->longname),
  "%s at 0x%lx, irq %d, dma %d&%d",
  chip->pcm->name, chip->port, irq[n], dma1[n], dma2[n]);

error = snd_wss_mixer(chip);
if (error < 0)
return error;

error = snd_wss_timer(chip, 0);
if (error < 0)
return error;

if (mpu_port[n] > 0 && mpu_port[n] != SNDRV_AUTO_PORT) {
if (mpu_irq[n] == SNDRV_AUTO_IRQ)
mpu_irq[n] = -1;
if (snd_mpu401_uart_new(card, 0, MPU401_HW_CS4232,
mpu_port[n], 0, mpu_irq[n],
NULL) < 0)
dev_warn(dev, "MPU401 not detected\n");
}

error = snd_card_register(card);
if (error < 0)
return error;

dev_set_drvdata(dev, card);
return 0;
}

#ifdef CONFIG_PM
static int snd_cs4231_suspend(struct device *dev, unsigned int n, pm_message_t state)
{
struct snd_card *card = dev_get_drvdata(dev);
struct snd_wss *chip = card->private_data;

snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
chip->suspend(chip);
return 0;
}

static int snd_cs4231_resume(struct device *dev, unsigned int n)
{
struct snd_card *card = dev_get_drvdata(dev);
struct snd_wss *chip = card->private_data;

chip->resume(chip);
snd_power_change_state(card, SNDRV_CTL_POWER_D0);
return 0;
}
#endif

static struct isa_driver snd_cs4231_driver = {
.match = snd_cs4231_match,
.probe = snd_cs4231_probe,
#ifdef CONFIG_PM
.suspend = snd_cs4231_suspend,
.resume = snd_cs4231_resume,
#endif
.driver = {
.name = DEV_NAME
}
};

module_isa_driver(snd_cs4231_driver, SNDRV_CARDS);

Messung V0.5
C=98 H=98 G=97

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.7Bemerkung:  ¤

*Bot Zugriff






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.