Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit decebabf authored by Krzysztof Hałasa's avatar Krzysztof Hałasa Committed by Greg Kroah-Hartman
Browse files

staging: Solo6x10: Changed solo6010* -> solo*, solo6x10* etc.

parent ae69b22c
Loading
Loading
Loading
Loading
+30 −30
Original line number Original line Diff line number Diff line
@@ -25,27 +25,27 @@
#include "solo6x10.h"
#include "solo6x10.h"
#include "tw28.h"
#include "tw28.h"


MODULE_DESCRIPTION("Softlogic 6010 MP4 Encoder/Decoder V4L2/ALSA Driver");
MODULE_DESCRIPTION("Softlogic 6x10 MP4/H.264 Encoder/Decoder V4L2/ALSA Driver");
MODULE_AUTHOR("Ben Collins <bcollins@bluecherry.net>");
MODULE_AUTHOR("Ben Collins <bcollins@bluecherry.net>");
MODULE_VERSION(SOLO6010_VERSION);
MODULE_VERSION(SOLO6X10_VERSION);
MODULE_LICENSE("GPL");
MODULE_LICENSE("GPL");


void solo6010_irq_on(struct solo6010_dev *solo_dev, u32 mask)
void solo_irq_on(struct solo_dev *solo_dev, u32 mask)
{
{
	solo_dev->irq_mask |= mask;
	solo_dev->irq_mask |= mask;
	solo_reg_write(solo_dev, SOLO_IRQ_ENABLE, solo_dev->irq_mask);
	solo_reg_write(solo_dev, SOLO_IRQ_ENABLE, solo_dev->irq_mask);
}
}


void solo6010_irq_off(struct solo6010_dev *solo_dev, u32 mask)
void solo_irq_off(struct solo_dev *solo_dev, u32 mask)
{
{
	solo_dev->irq_mask &= ~mask;
	solo_dev->irq_mask &= ~mask;
	solo_reg_write(solo_dev, SOLO_IRQ_ENABLE, solo_dev->irq_mask);
	solo_reg_write(solo_dev, SOLO_IRQ_ENABLE, solo_dev->irq_mask);
}
}


/* XXX We should check the return value of the sub-device ISR's */
/* XXX We should check the return value of the sub-device ISR's */
static irqreturn_t solo6010_isr(int irq, void *data)
static irqreturn_t solo_isr(int irq, void *data)
{
{
	struct solo6010_dev *solo_dev = data;
	struct solo_dev *solo_dev = data;
	u32 status;
	u32 status;
	int i;
	int i;


@@ -88,7 +88,7 @@ static irqreturn_t solo6010_isr(int irq, void *data)
	return IRQ_HANDLED;
	return IRQ_HANDLED;
}
}


static void free_solo_dev(struct solo6010_dev *solo_dev)
static void free_solo_dev(struct solo_dev *solo_dev)
{
{
	struct pci_dev *pdev;
	struct pci_dev *pdev;


@@ -116,7 +116,7 @@ static void free_solo_dev(struct solo6010_dev *solo_dev)


	/* Now cleanup the PCI device */
	/* Now cleanup the PCI device */
	if (solo_dev->reg_base) {
	if (solo_dev->reg_base) {
		solo6010_irq_off(solo_dev, ~0);
		solo_irq_off(solo_dev, ~0);
		pci_iounmap(pdev, solo_dev->reg_base);
		pci_iounmap(pdev, solo_dev->reg_base);
		free_irq(pdev->irq, solo_dev);
		free_irq(pdev->irq, solo_dev);
	}
	}
@@ -128,10 +128,10 @@ static void free_solo_dev(struct solo6010_dev *solo_dev)
	kfree(solo_dev);
	kfree(solo_dev);
}
}


static int __devinit solo6010_pci_probe(struct pci_dev *pdev,
static int __devinit solo_pci_probe(struct pci_dev *pdev,
				    const struct pci_device_id *id)
				    const struct pci_device_id *id)
{
{
	struct solo6010_dev *solo_dev;
	struct solo_dev *solo_dev;
	int ret;
	int ret;
	int sdram;
	int sdram;
	u8 chip_id;
	u8 chip_id;
@@ -151,7 +151,7 @@ static int __devinit solo6010_pci_probe(struct pci_dev *pdev,


	pci_set_master(pdev);
	pci_set_master(pdev);


	ret = pci_request_regions(pdev, SOLO6010_NAME);
	ret = pci_request_regions(pdev, SOLO6X10_NAME);
	if (ret)
	if (ret)
		goto fail_probe;
		goto fail_probe;


@@ -184,7 +184,7 @@ static int __devinit solo6010_pci_probe(struct pci_dev *pdev,
	solo_dev->flags = id->driver_data;
	solo_dev->flags = id->driver_data;


	/* Disable all interrupts to start */
	/* Disable all interrupts to start */
	solo6010_irq_off(solo_dev, ~0);
	solo_irq_off(solo_dev, ~0);


	reg = SOLO_SYS_CFG_SDRAM64BIT;
	reg = SOLO_SYS_CFG_SDRAM64BIT;
	/* Initial global settings */
	/* Initial global settings */
@@ -223,13 +223,13 @@ static int __devinit solo6010_pci_probe(struct pci_dev *pdev,
	/* PLL locking time of 1ms */
	/* PLL locking time of 1ms */
	mdelay(1);
	mdelay(1);


	ret = request_irq(pdev->irq, solo6010_isr, IRQF_SHARED, SOLO6010_NAME,
	ret = request_irq(pdev->irq, solo_isr, IRQF_SHARED, SOLO6X10_NAME,
			  solo_dev);
			  solo_dev);
	if (ret)
	if (ret)
		goto fail_probe;
		goto fail_probe;


	/* Handle this from the start */
	/* Handle this from the start */
	solo6010_irq_on(solo_dev, SOLO_IRQ_PCI_ERR);
	solo_irq_on(solo_dev, SOLO_IRQ_PCI_ERR);


	ret = solo_i2c_init(solo_dev);
	ret = solo_i2c_init(solo_dev);
	if (ret)
	if (ret)
@@ -283,14 +283,14 @@ static int __devinit solo6010_pci_probe(struct pci_dev *pdev,
	return ret;
	return ret;
}
}


static void __devexit solo6010_pci_remove(struct pci_dev *pdev)
static void __devexit solo_pci_remove(struct pci_dev *pdev)
{
{
	struct solo6010_dev *solo_dev = pci_get_drvdata(pdev);
	struct solo_dev *solo_dev = pci_get_drvdata(pdev);


	free_solo_dev(solo_dev);
	free_solo_dev(solo_dev);
}
}


static struct pci_device_id solo6010_id_table[] = {
static struct pci_device_id solo_id_table[] = {
	/* 6010 based cards */
	/* 6010 based cards */
	{PCI_DEVICE(PCI_VENDOR_ID_SOFTLOGIC, PCI_DEVICE_ID_SOLO6010)},
	{PCI_DEVICE(PCI_VENDOR_ID_SOFTLOGIC, PCI_DEVICE_ID_SOLO6010)},
	{PCI_DEVICE(PCI_VENDOR_ID_SOFTLOGIC, PCI_DEVICE_ID_SOLO6110),
	{PCI_DEVICE(PCI_VENDOR_ID_SOFTLOGIC, PCI_DEVICE_ID_SOLO6110),
@@ -308,24 +308,24 @@ static struct pci_device_id solo6010_id_table[] = {
	{0,}
	{0,}
};
};


MODULE_DEVICE_TABLE(pci, solo6010_id_table);
MODULE_DEVICE_TABLE(pci, solo_id_table);


static struct pci_driver solo6010_pci_driver = {
static struct pci_driver solo_pci_driver = {
	.name = SOLO6010_NAME,
	.name = SOLO6X10_NAME,
	.id_table = solo6010_id_table,
	.id_table = solo_id_table,
	.probe = solo6010_pci_probe,
	.probe = solo_pci_probe,
	.remove = solo6010_pci_remove,
	.remove = solo_pci_remove,
};
};


static int __init solo6010_module_init(void)
static int __init solo_module_init(void)
{
{
	return pci_register_driver(&solo6010_pci_driver);
	return pci_register_driver(&solo_pci_driver);
}
}


static void __exit solo6010_module_exit(void)
static void __exit solo_module_exit(void)
{
{
	pci_unregister_driver(&solo6010_pci_driver);
	pci_unregister_driver(&solo_pci_driver);
}
}


module_init(solo6010_module_init);
module_init(solo_module_init);
module_exit(solo6010_module_exit);
module_exit(solo_module_exit);
+8 −8
Original line number Original line Diff line number Diff line
@@ -37,7 +37,7 @@ static unsigned video_type;
module_param(video_type, uint, 0644);
module_param(video_type, uint, 0644);
MODULE_PARM_DESC(video_type, "video_type (0 = NTSC/Default, 1 = PAL)");
MODULE_PARM_DESC(video_type, "video_type (0 = NTSC/Default, 1 = PAL)");


static void solo_vin_config(struct solo6010_dev *solo_dev)
static void solo_vin_config(struct solo_dev *solo_dev)
{
{
	solo_dev->vin_hstart = 8;
	solo_dev->vin_hstart = 8;
	solo_dev->vin_vstart = 2;
	solo_dev->vin_vstart = 2;
@@ -97,7 +97,7 @@ static void solo_vin_config(struct solo6010_dev *solo_dev)
		       SOLO_VI_PB_HSTOP(16 + 720));
		       SOLO_VI_PB_HSTOP(16 + 720));
}
}


static void solo_disp_config(struct solo6010_dev *solo_dev)
static void solo_disp_config(struct solo_dev *solo_dev)
{
{
	solo_dev->vout_hstart = 6;
	solo_dev->vout_hstart = 6;
	solo_dev->vout_vstart = 8;
	solo_dev->vout_vstart = 8;
@@ -145,7 +145,7 @@ static void solo_disp_config(struct solo6010_dev *solo_dev)
	solo_reg_write(solo_dev, SOLO_WATCHDOG, 0);
	solo_reg_write(solo_dev, SOLO_WATCHDOG, 0);
}
}


static int solo_dma_vin_region(struct solo6010_dev *solo_dev, u32 off,
static int solo_dma_vin_region(struct solo_dev *solo_dev, u32 off,
			       u16 val, int reg_size)
			       u16 val, int reg_size)
{
{
	u16 buf[64];
	u16 buf[64];
@@ -163,7 +163,7 @@ static int solo_dma_vin_region(struct solo6010_dev *solo_dev, u32 off,
	return ret;
	return ret;
}
}


void solo_set_motion_threshold(struct solo6010_dev *solo_dev, u8 ch, u16 val)
void solo_set_motion_threshold(struct solo_dev *solo_dev, u8 ch, u16 val)
{
{
	if (ch > solo_dev->nr_chans)
	if (ch > solo_dev->nr_chans)
		return;
		return;
@@ -177,7 +177,7 @@ void solo_set_motion_threshold(struct solo6010_dev *solo_dev, u8 ch, u16 val)
 * threshold and working table for each channel. Atleast that's what the
 * threshold and working table for each channel. Atleast that's what the
 * spec says. However, this code (take from rdk) has some mystery 8k
 * spec says. However, this code (take from rdk) has some mystery 8k
 * block right after the flag area, before the first thresh table. */
 * block right after the flag area, before the first thresh table. */
static void solo_motion_config(struct solo6010_dev *solo_dev)
static void solo_motion_config(struct solo_dev *solo_dev)
{
{
	int i;
	int i;


@@ -209,7 +209,7 @@ static void solo_motion_config(struct solo6010_dev *solo_dev)
	solo_reg_write(solo_dev, SOLO_VI_MOTION_BAR, 0);
	solo_reg_write(solo_dev, SOLO_VI_MOTION_BAR, 0);
}
}


int solo_disp_init(struct solo6010_dev *solo_dev)
int solo_disp_init(struct solo_dev *solo_dev)
{
{
	int i;
	int i;


@@ -234,11 +234,11 @@ int solo_disp_init(struct solo6010_dev *solo_dev)
	return 0;
	return 0;
}
}


void solo_disp_exit(struct solo6010_dev *solo_dev)
void solo_disp_exit(struct solo_dev *solo_dev)
{
{
	int i;
	int i;


	solo6010_irq_off(solo_dev, SOLO_IRQ_MOTION);
	solo_irq_off(solo_dev, SOLO_IRQ_MOTION);


	solo_reg_write(solo_dev, SOLO_VO_DISP_CTRL, 0);
	solo_reg_write(solo_dev, SOLO_VO_DISP_CTRL, 0);
	solo_reg_write(solo_dev, SOLO_VO_ZOOM_CTRL, 0);
	solo_reg_write(solo_dev, SOLO_VO_ZOOM_CTRL, 0);
+8 −8
Original line number Original line Diff line number Diff line
@@ -27,7 +27,7 @@
#define VI_PROG_HSIZE			(1280 - 16)
#define VI_PROG_HSIZE			(1280 - 16)
#define VI_PROG_VSIZE			(1024 - 16)
#define VI_PROG_VSIZE			(1024 - 16)


static void solo_capture_config(struct solo6010_dev *solo_dev)
static void solo_capture_config(struct solo_dev *solo_dev)
{
{
	int i, j;
	int i, j;
	unsigned long height;
	unsigned long height;
@@ -115,7 +115,7 @@ static void solo_capture_config(struct solo6010_dev *solo_dev)


int solo_osd_print(struct solo_enc_dev *solo_enc)
int solo_osd_print(struct solo_enc_dev *solo_enc)
{
{
	struct solo6010_dev *solo_dev = solo_enc->solo_dev;
	struct solo_dev *solo_dev = solo_enc->solo_dev;
	char *str = solo_enc->osd_text;
	char *str = solo_enc->osd_text;
	u8 *buf;
	u8 *buf;
	u32 reg = solo_reg_read(solo_dev, SOLO_VE_OSD_CH);
	u32 reg = solo_reg_read(solo_dev, SOLO_VE_OSD_CH);
@@ -151,7 +151,7 @@ int solo_osd_print(struct solo_enc_dev *solo_enc)
	return 0;
	return 0;
}
}


static void solo_jpeg_config(struct solo6010_dev *solo_dev)
static void solo_jpeg_config(struct solo_dev *solo_dev)
{
{
	u32 reg;
	u32 reg;
	if (solo_dev->flags & FLAGS_6110)
	if (solo_dev->flags & FLAGS_6110)
@@ -169,7 +169,7 @@ static void solo_jpeg_config(struct solo6010_dev *solo_dev)
	solo_reg_write(solo_dev, 0x0688, (0 << 16) | (30 << 8) | 60);
	solo_reg_write(solo_dev, 0x0688, (0 << 16) | (30 << 8) | 60);
}
}


static void solo_mp4e_config(struct solo6010_dev *solo_dev)
static void solo_mp4e_config(struct solo_dev *solo_dev)
{
{
	int i;
	int i;
	u32 reg;
	u32 reg;
@@ -206,7 +206,7 @@ static void solo_mp4e_config(struct solo6010_dev *solo_dev)
		solo_reg_write(solo_dev, 0x0634, 0x00040008); /* ? */
		solo_reg_write(solo_dev, 0x0634, 0x00040008); /* ? */
}
}


int solo_enc_init(struct solo6010_dev *solo_dev)
int solo_enc_init(struct solo_dev *solo_dev)
{
{
	int i;
	int i;


@@ -219,16 +219,16 @@ int solo_enc_init(struct solo6010_dev *solo_dev)
		solo_reg_write(solo_dev, SOLO_CAP_CH_COMP_ENA_E(i), 0);
		solo_reg_write(solo_dev, SOLO_CAP_CH_COMP_ENA_E(i), 0);
	}
	}


	solo6010_irq_on(solo_dev, SOLO_IRQ_ENCODER);
	solo_irq_on(solo_dev, SOLO_IRQ_ENCODER);


	return 0;
	return 0;
}
}


void solo_enc_exit(struct solo6010_dev *solo_dev)
void solo_enc_exit(struct solo_dev *solo_dev)
{
{
	int i;
	int i;


	solo6010_irq_off(solo_dev, SOLO_IRQ_ENCODER);
	solo_irq_off(solo_dev, SOLO_IRQ_ENCODER);


	for (i = 0; i < solo_dev->nr_chans; i++) {
	for (i = 0; i < solo_dev->nr_chans; i++) {
		solo_reg_write(solo_dev, SOLO_CAP_CH_SCALE(i), 0);
		solo_reg_write(solo_dev, SOLO_CAP_CH_SCALE(i), 0);
+21 −21
Original line number Original line Diff line number Diff line
@@ -52,11 +52,11 @@
struct solo_snd_pcm {
struct solo_snd_pcm {
	int		on;
	int		on;
	spinlock_t	lock;
	spinlock_t	lock;
	struct solo6010_dev		*solo_dev;
	struct solo_dev	*solo_dev;
	unsigned char	g723_buf[G723_PERIOD_BYTES];
	unsigned char	g723_buf[G723_PERIOD_BYTES];
};
};


static void solo_g723_config(struct solo6010_dev *solo_dev)
static void solo_g723_config(struct solo_dev *solo_dev)
{
{
	int clk_div;
	int clk_div;


@@ -76,7 +76,7 @@ static void solo_g723_config(struct solo6010_dev *solo_dev)
		       SOLO_AUDIO_I2S_MULTI(3) | SOLO_AUDIO_MODE(OUTMODE_MASK));
		       SOLO_AUDIO_I2S_MULTI(3) | SOLO_AUDIO_MODE(OUTMODE_MASK));
}
}


void solo_g723_isr(struct solo6010_dev *solo_dev)
void solo_g723_isr(struct solo_dev *solo_dev)
{
{
	struct snd_pcm_str *pstr =
	struct snd_pcm_str *pstr =
		&solo_dev->snd_pcm->streams[SNDRV_PCM_STREAM_CAPTURE];
		&solo_dev->snd_pcm->streams[SNDRV_PCM_STREAM_CAPTURE];
@@ -133,7 +133,7 @@ static struct snd_pcm_hardware snd_solo_pcm_hw = {


static int snd_solo_pcm_open(struct snd_pcm_substream *ss)
static int snd_solo_pcm_open(struct snd_pcm_substream *ss)
{
{
	struct solo6010_dev *solo_dev = snd_pcm_substream_chip(ss);
	struct solo_dev *solo_dev = snd_pcm_substream_chip(ss);
	struct solo_snd_pcm *solo_pcm;
	struct solo_snd_pcm *solo_pcm;


	solo_pcm = kzalloc(sizeof(*solo_pcm), GFP_KERNEL);
	solo_pcm = kzalloc(sizeof(*solo_pcm), GFP_KERNEL);
@@ -162,7 +162,7 @@ static int snd_solo_pcm_close(struct snd_pcm_substream *ss)
static int snd_solo_pcm_trigger(struct snd_pcm_substream *ss, int cmd)
static int snd_solo_pcm_trigger(struct snd_pcm_substream *ss, int cmd)
{
{
	struct solo_snd_pcm *solo_pcm = snd_pcm_substream_chip(ss);
	struct solo_snd_pcm *solo_pcm = snd_pcm_substream_chip(ss);
	struct solo6010_dev *solo_dev = solo_pcm->solo_dev;
	struct solo_dev *solo_dev = solo_pcm->solo_dev;
	int ret = 0;
	int ret = 0;


	spin_lock(&solo_pcm->lock);
	spin_lock(&solo_pcm->lock);
@@ -172,7 +172,7 @@ static int snd_solo_pcm_trigger(struct snd_pcm_substream *ss, int cmd)
		if (solo_pcm->on == 0) {
		if (solo_pcm->on == 0) {
			/* If this is the first user, switch on interrupts */
			/* If this is the first user, switch on interrupts */
			if (atomic_inc_return(&solo_dev->snd_users) == 1)
			if (atomic_inc_return(&solo_dev->snd_users) == 1)
				solo6010_irq_on(solo_dev, SOLO_IRQ_G723);
				solo_irq_on(solo_dev, SOLO_IRQ_G723);
			solo_pcm->on = 1;
			solo_pcm->on = 1;
		}
		}
		break;
		break;
@@ -180,7 +180,7 @@ static int snd_solo_pcm_trigger(struct snd_pcm_substream *ss, int cmd)
		if (solo_pcm->on) {
		if (solo_pcm->on) {
			/* If this was our last user, switch them off */
			/* If this was our last user, switch them off */
			if (atomic_dec_return(&solo_dev->snd_users) == 0)
			if (atomic_dec_return(&solo_dev->snd_users) == 0)
				solo6010_irq_off(solo_dev, SOLO_IRQ_G723);
				solo_irq_off(solo_dev, SOLO_IRQ_G723);
			solo_pcm->on = 0;
			solo_pcm->on = 0;
		}
		}
		break;
		break;
@@ -201,7 +201,7 @@ static int snd_solo_pcm_prepare(struct snd_pcm_substream *ss)
static snd_pcm_uframes_t snd_solo_pcm_pointer(struct snd_pcm_substream *ss)
static snd_pcm_uframes_t snd_solo_pcm_pointer(struct snd_pcm_substream *ss)
{
{
	struct solo_snd_pcm *solo_pcm = snd_pcm_substream_chip(ss);
	struct solo_snd_pcm *solo_pcm = snd_pcm_substream_chip(ss);
	struct solo6010_dev *solo_dev = solo_pcm->solo_dev;
	struct solo_dev *solo_dev = solo_pcm->solo_dev;
	snd_pcm_uframes_t idx = solo_reg_read(solo_dev, SOLO_AUDIO_STA) & 0x1f;
	snd_pcm_uframes_t idx = solo_reg_read(solo_dev, SOLO_AUDIO_STA) & 0x1f;


	return idx * G723_FRAMES_PER_PAGE;
	return idx * G723_FRAMES_PER_PAGE;
@@ -212,7 +212,7 @@ static int snd_solo_pcm_copy(struct snd_pcm_substream *ss, int channel,
			     snd_pcm_uframes_t count)
			     snd_pcm_uframes_t count)
{
{
	struct solo_snd_pcm *solo_pcm = snd_pcm_substream_chip(ss);
	struct solo_snd_pcm *solo_pcm = snd_pcm_substream_chip(ss);
	struct solo6010_dev *solo_dev = solo_pcm->solo_dev;
	struct solo_dev *solo_dev = solo_pcm->solo_dev;
	int err, i;
	int err, i;


	for (i = 0; i < (count / G723_FRAMES_PER_PAGE); i++) {
	for (i = 0; i < (count / G723_FRAMES_PER_PAGE); i++) {
@@ -264,7 +264,7 @@ static int snd_solo_capture_volume_info(struct snd_kcontrol *kcontrol,
static int snd_solo_capture_volume_get(struct snd_kcontrol *kcontrol,
static int snd_solo_capture_volume_get(struct snd_kcontrol *kcontrol,
				       struct snd_ctl_elem_value *value)
				       struct snd_ctl_elem_value *value)
{
{
	struct solo6010_dev *solo_dev = snd_kcontrol_chip(kcontrol);
	struct solo_dev *solo_dev = snd_kcontrol_chip(kcontrol);
	u8 ch = value->id.numid - 1;
	u8 ch = value->id.numid - 1;


	value->value.integer.value[0] = tw28_get_audio_gain(solo_dev, ch);
	value->value.integer.value[0] = tw28_get_audio_gain(solo_dev, ch);
@@ -275,7 +275,7 @@ static int snd_solo_capture_volume_get(struct snd_kcontrol *kcontrol,
static int snd_solo_capture_volume_put(struct snd_kcontrol *kcontrol,
static int snd_solo_capture_volume_put(struct snd_kcontrol *kcontrol,
				       struct snd_ctl_elem_value *value)
				       struct snd_ctl_elem_value *value)
{
{
	struct solo6010_dev *solo_dev = snd_kcontrol_chip(kcontrol);
	struct solo_dev *solo_dev = snd_kcontrol_chip(kcontrol);
	u8 ch = value->id.numid - 1;
	u8 ch = value->id.numid - 1;
	u8 old_val;
	u8 old_val;


@@ -296,7 +296,7 @@ static struct snd_kcontrol_new snd_solo_capture_volume = {
	.put = snd_solo_capture_volume_put,
	.put = snd_solo_capture_volume_put,
};
};


static int solo_snd_pcm_init(struct solo6010_dev *solo_dev)
static int solo_snd_pcm_init(struct solo_dev *solo_dev)
{
{
	struct snd_card *card = solo_dev->snd_card;
	struct snd_card *card = solo_dev->snd_card;
	struct snd_pcm *pcm;
	struct snd_pcm *pcm;
@@ -332,7 +332,7 @@ static int solo_snd_pcm_init(struct solo6010_dev *solo_dev)
	return 0;
	return 0;
}
}


int solo_g723_init(struct solo6010_dev *solo_dev)
int solo_g723_init(struct solo_dev *solo_dev)
{
{
	static struct snd_device_ops ops = { NULL };
	static struct snd_device_ops ops = { NULL };
	struct snd_card *card;
	struct snd_card *card;
@@ -352,8 +352,8 @@ int solo_g723_init(struct solo6010_dev *solo_dev)


	card = solo_dev->snd_card;
	card = solo_dev->snd_card;


	strcpy(card->driver, SOLO6010_NAME);
	strcpy(card->driver, SOLO6X10_NAME);
	strcpy(card->shortname, "SOLO-6010 Audio");
	strcpy(card->shortname, "SOLO-6x10 Audio");
	sprintf(card->longname, "%s on %s IRQ %d", card->shortname,
	sprintf(card->longname, "%s on %s IRQ %d", card->shortname,
		pci_name(solo_dev->pdev), solo_dev->pdev->irq);
		pci_name(solo_dev->pdev), solo_dev->pdev->irq);
	snd_card_set_dev(card, &solo_dev->pdev->dev);
	snd_card_set_dev(card, &solo_dev->pdev->dev);
@@ -363,7 +363,7 @@ int solo_g723_init(struct solo6010_dev *solo_dev)
		goto snd_error;
		goto snd_error;


	/* Mixer controls */
	/* Mixer controls */
	strcpy(card->mixername, "SOLO-6010");
	strcpy(card->mixername, "SOLO-6x10");
	kctl = snd_solo_capture_volume;
	kctl = snd_solo_capture_volume;
	kctl.count = solo_dev->nr_chans;
	kctl.count = solo_dev->nr_chans;
	ret = snd_ctl_add(card, snd_ctl_new1(&kctl, solo_dev));
	ret = snd_ctl_add(card, snd_ctl_new1(&kctl, solo_dev));
@@ -389,10 +389,10 @@ int solo_g723_init(struct solo6010_dev *solo_dev)
	return ret;
	return ret;
}
}


void solo_g723_exit(struct solo6010_dev *solo_dev)
void solo_g723_exit(struct solo_dev *solo_dev)
{
{
	solo_reg_write(solo_dev, SOLO_AUDIO_CONTROL, 0);
	solo_reg_write(solo_dev, SOLO_AUDIO_CONTROL, 0);
	solo6010_irq_off(solo_dev, SOLO_IRQ_G723);
	solo_irq_off(solo_dev, SOLO_IRQ_G723);


	snd_card_free(solo_dev->snd_card);
	snd_card_free(solo_dev->snd_card);
}
}
+6 −6
Original line number Original line Diff line number Diff line
@@ -22,7 +22,7 @@
#include <asm/uaccess.h>
#include <asm/uaccess.h>
#include "solo6x10.h"
#include "solo6x10.h"


static void solo_gpio_mode(struct solo6010_dev *solo_dev,
static void solo_gpio_mode(struct solo_dev *solo_dev,
			   unsigned int port_mask, unsigned int mode)
			   unsigned int port_mask, unsigned int mode)
{
{
	int port;
	int port;
@@ -57,19 +57,19 @@ static void solo_gpio_mode(struct solo6010_dev *solo_dev,
	solo_reg_write(solo_dev, SOLO_GPIO_CONFIG_1, ret);
	solo_reg_write(solo_dev, SOLO_GPIO_CONFIG_1, ret);
}
}


static void solo_gpio_set(struct solo6010_dev *solo_dev, unsigned int value)
static void solo_gpio_set(struct solo_dev *solo_dev, unsigned int value)
{
{
	solo_reg_write(solo_dev, SOLO_GPIO_DATA_OUT,
	solo_reg_write(solo_dev, SOLO_GPIO_DATA_OUT,
		       solo_reg_read(solo_dev, SOLO_GPIO_DATA_OUT) | value);
		       solo_reg_read(solo_dev, SOLO_GPIO_DATA_OUT) | value);
}
}


static void solo_gpio_clear(struct solo6010_dev *solo_dev, unsigned int value)
static void solo_gpio_clear(struct solo_dev *solo_dev, unsigned int value)
{
{
	solo_reg_write(solo_dev, SOLO_GPIO_DATA_OUT,
	solo_reg_write(solo_dev, SOLO_GPIO_DATA_OUT,
		       solo_reg_read(solo_dev, SOLO_GPIO_DATA_OUT) & ~value);
		       solo_reg_read(solo_dev, SOLO_GPIO_DATA_OUT) & ~value);
}
}


static void solo_gpio_config(struct solo6010_dev *solo_dev)
static void solo_gpio_config(struct solo_dev *solo_dev)
{
{
	/* Video reset */
	/* Video reset */
	solo_gpio_mode(solo_dev, 0x30, 1);
	solo_gpio_mode(solo_dev, 0x30, 1);
@@ -89,13 +89,13 @@ static void solo_gpio_config(struct solo6010_dev *solo_dev)
	solo_gpio_clear(solo_dev, 0xff00);
	solo_gpio_clear(solo_dev, 0xff00);
}
}


int solo_gpio_init(struct solo6010_dev *solo_dev)
int solo_gpio_init(struct solo_dev *solo_dev)
{
{
	solo_gpio_config(solo_dev);
	solo_gpio_config(solo_dev);
	return 0;
	return 0;
}
}


void solo_gpio_exit(struct solo6010_dev *solo_dev)
void solo_gpio_exit(struct solo_dev *solo_dev)
{
{
	solo_gpio_clear(solo_dev, 0x30);
	solo_gpio_clear(solo_dev, 0x30);
	solo_gpio_config(solo_dev);
	solo_gpio_config(solo_dev);
Loading