Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
这个提交包含在:
12
sound/pci/cs46xx/Makefile
普通文件
12
sound/pci/cs46xx/Makefile
普通文件
@@ -0,0 +1,12 @@
|
||||
#
|
||||
# Makefile for ALSA
|
||||
# Copyright (c) 2001 by Jaroslav Kysela <perex@suse.cz>
|
||||
#
|
||||
|
||||
snd-cs46xx-objs := cs46xx.o cs46xx_lib.o
|
||||
ifeq ($(CONFIG_SND_CS46XX_NEW_DSP),y)
|
||||
snd-cs46xx-objs += dsp_spos.o dsp_spos_scb_lib.o
|
||||
endif
|
||||
|
||||
# Toplevel Module Dependency
|
||||
obj-$(CONFIG_SND_CS46XX) += snd-cs46xx.o
|
183
sound/pci/cs46xx/cs46xx.c
普通文件
183
sound/pci/cs46xx/cs46xx.c
普通文件
@@ -0,0 +1,183 @@
|
||||
/*
|
||||
* The driver for the Cirrus Logic's Sound Fusion CS46XX based soundcards
|
||||
* Copyright (c) by Jaroslav Kysela <perex@suse.cz>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
NOTES:
|
||||
- sometimes the sound is metallic and sibilant, unloading and
|
||||
reloading the module may solve this.
|
||||
*/
|
||||
|
||||
#include <sound/driver.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include <sound/core.h>
|
||||
#include <sound/cs46xx.h>
|
||||
#include <sound/initval.h>
|
||||
|
||||
MODULE_AUTHOR("Jaroslav Kysela <perex@suse.cz>");
|
||||
MODULE_DESCRIPTION("Cirrus Logic Sound Fusion CS46XX");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_SUPPORTED_DEVICE("{{Cirrus Logic,Sound Fusion (CS4280)},"
|
||||
"{Cirrus Logic,Sound Fusion (CS4610)},"
|
||||
"{Cirrus Logic,Sound Fusion (CS4612)},"
|
||||
"{Cirrus Logic,Sound Fusion (CS4615)},"
|
||||
"{Cirrus Logic,Sound Fusion (CS4622)},"
|
||||
"{Cirrus Logic,Sound Fusion (CS4624)},"
|
||||
"{Cirrus Logic,Sound Fusion (CS4630)}}");
|
||||
|
||||
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
|
||||
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
|
||||
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */
|
||||
static int external_amp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
|
||||
static int thinkpad[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 0};
|
||||
static int mmap_valid[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
|
||||
|
||||
module_param_array(index, int, NULL, 0444);
|
||||
MODULE_PARM_DESC(index, "Index value for the CS46xx soundcard.");
|
||||
module_param_array(id, charp, NULL, 0444);
|
||||
MODULE_PARM_DESC(id, "ID string for the CS46xx soundcard.");
|
||||
module_param_array(enable, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(enable, "Enable CS46xx soundcard.");
|
||||
module_param_array(external_amp, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(external_amp, "Force to enable external amplifer.");
|
||||
module_param_array(thinkpad, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(thinkpad, "Force to enable Thinkpad's CLKRUN control.");
|
||||
module_param_array(mmap_valid, bool, NULL, 0444);
|
||||
MODULE_PARM_DESC(mmap_valid, "Support OSS mmap.");
|
||||
|
||||
static struct pci_device_id snd_cs46xx_ids[] = {
|
||||
{ 0x1013, 0x6001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4280 */
|
||||
{ 0x1013, 0x6003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4612 */
|
||||
{ 0x1013, 0x6004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, /* CS4615 */
|
||||
{ 0, }
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(pci, snd_cs46xx_ids);
|
||||
|
||||
static int __devinit snd_card_cs46xx_probe(struct pci_dev *pci,
|
||||
const struct pci_device_id *pci_id)
|
||||
{
|
||||
static int dev;
|
||||
snd_card_t *card;
|
||||
cs46xx_t *chip;
|
||||
int err;
|
||||
|
||||
if (dev >= SNDRV_CARDS)
|
||||
return -ENODEV;
|
||||
if (!enable[dev]) {
|
||||
dev++;
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
|
||||
if (card == NULL)
|
||||
return -ENOMEM;
|
||||
if ((err = snd_cs46xx_create(card, pci,
|
||||
external_amp[dev], thinkpad[dev],
|
||||
&chip)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
chip->accept_valid = mmap_valid[dev];
|
||||
if ((err = snd_cs46xx_pcm(chip, 0, NULL)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
#ifdef CONFIG_SND_CS46XX_NEW_DSP
|
||||
if ((err = snd_cs46xx_pcm_rear(chip,1, NULL)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
if ((err = snd_cs46xx_pcm_iec958(chip,2,NULL)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
if ((err = snd_cs46xx_mixer(chip)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
#ifdef CONFIG_SND_CS46XX_NEW_DSP
|
||||
if (chip->nr_ac97_codecs ==2) {
|
||||
if ((err = snd_cs46xx_pcm_center_lfe(chip,3,NULL)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if ((err = snd_cs46xx_midi(chip, 0, NULL)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
if ((err = snd_cs46xx_start_dsp(chip)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
snd_cs46xx_gameport(chip);
|
||||
|
||||
strcpy(card->driver, "CS46xx");
|
||||
strcpy(card->shortname, "Sound Fusion CS46xx");
|
||||
sprintf(card->longname, "%s at 0x%lx/0x%lx, irq %i",
|
||||
card->shortname,
|
||||
chip->ba0_addr,
|
||||
chip->ba1_addr,
|
||||
chip->irq);
|
||||
|
||||
if ((err = snd_card_register(card)) < 0) {
|
||||
snd_card_free(card);
|
||||
return err;
|
||||
}
|
||||
|
||||
pci_set_drvdata(pci, card);
|
||||
dev++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __devexit snd_card_cs46xx_remove(struct pci_dev *pci)
|
||||
{
|
||||
snd_card_free(pci_get_drvdata(pci));
|
||||
pci_set_drvdata(pci, NULL);
|
||||
}
|
||||
|
||||
static struct pci_driver driver = {
|
||||
.name = "Sound Fusion CS46xx",
|
||||
.id_table = snd_cs46xx_ids,
|
||||
.probe = snd_card_cs46xx_probe,
|
||||
.remove = __devexit_p(snd_card_cs46xx_remove),
|
||||
SND_PCI_PM_CALLBACKS
|
||||
};
|
||||
|
||||
static int __init alsa_card_cs46xx_init(void)
|
||||
{
|
||||
return pci_module_init(&driver);
|
||||
}
|
||||
|
||||
static void __exit alsa_card_cs46xx_exit(void)
|
||||
{
|
||||
pci_unregister_driver(&driver);
|
||||
}
|
||||
|
||||
module_init(alsa_card_cs46xx_init)
|
||||
module_exit(alsa_card_cs46xx_exit)
|
3468
sound/pci/cs46xx/cs46xx_image.h
普通文件
3468
sound/pci/cs46xx/cs46xx_image.h
普通文件
文件差异内容过多而无法显示
加载差异
3922
sound/pci/cs46xx/cs46xx_lib.c
普通文件
3922
sound/pci/cs46xx/cs46xx_lib.c
普通文件
文件差异内容过多而无法显示
加载差异
182
sound/pci/cs46xx/cs46xx_lib.h
普通文件
182
sound/pci/cs46xx/cs46xx_lib.h
普通文件
@@ -0,0 +1,182 @@
|
||||
/*
|
||||
* The driver for the Cirrus Logic's Sound Fusion CS46XX based soundcards
|
||||
* Copyright (c) by Jaroslav Kysela <perex@suse.cz>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __CS46XX_LIB_H__
|
||||
#define __CS46XX_LIB_H__
|
||||
|
||||
/*
|
||||
* constants
|
||||
*/
|
||||
|
||||
#define CS46XX_BA0_SIZE 0x1000
|
||||
#define CS46XX_BA1_DATA0_SIZE 0x3000
|
||||
#define CS46XX_BA1_DATA1_SIZE 0x3800
|
||||
#define CS46XX_BA1_PRG_SIZE 0x7000
|
||||
#define CS46XX_BA1_REG_SIZE 0x0100
|
||||
|
||||
|
||||
|
||||
#ifdef CONFIG_SND_CS46XX_NEW_DSP
|
||||
#define CS46XX_MIN_PERIOD_SIZE 1
|
||||
#define CS46XX_MAX_PERIOD_SIZE 1024*1024
|
||||
#else
|
||||
#define CS46XX_MIN_PERIOD_SIZE 2048
|
||||
#define CS46XX_MAX_PERIOD_SIZE 2048
|
||||
#endif
|
||||
|
||||
#define CS46XX_FRAGS 2
|
||||
/* #define CS46XX_BUFFER_SIZE CS46XX_MAX_PERIOD_SIZE * CS46XX_FRAGS */
|
||||
|
||||
#define SCB_NO_PARENT 0
|
||||
#define SCB_ON_PARENT_NEXT_SCB 1
|
||||
#define SCB_ON_PARENT_SUBLIST_SCB 2
|
||||
|
||||
/* 3*1024 parameter, 3.5*1024 sample, 2*3.5*1024 code */
|
||||
#define BA1_DWORD_SIZE (13 * 1024 + 512)
|
||||
#define BA1_MEMORY_COUNT 3
|
||||
|
||||
/*
|
||||
* common I/O routines
|
||||
*/
|
||||
|
||||
static inline void snd_cs46xx_poke(cs46xx_t *chip, unsigned long reg, unsigned int val)
|
||||
{
|
||||
unsigned int bank = reg >> 16;
|
||||
unsigned int offset = reg & 0xffff;
|
||||
|
||||
/*if (bank == 0) printk("snd_cs46xx_poke: %04X - %08X\n",reg >> 2,val); */
|
||||
writel(val, chip->region.idx[bank+1].remap_addr + offset);
|
||||
}
|
||||
|
||||
static inline unsigned int snd_cs46xx_peek(cs46xx_t *chip, unsigned long reg)
|
||||
{
|
||||
unsigned int bank = reg >> 16;
|
||||
unsigned int offset = reg & 0xffff;
|
||||
return readl(chip->region.idx[bank+1].remap_addr + offset);
|
||||
}
|
||||
|
||||
static inline void snd_cs46xx_pokeBA0(cs46xx_t *chip, unsigned long offset, unsigned int val)
|
||||
{
|
||||
writel(val, chip->region.name.ba0.remap_addr + offset);
|
||||
}
|
||||
|
||||
static inline unsigned int snd_cs46xx_peekBA0(cs46xx_t *chip, unsigned long offset)
|
||||
{
|
||||
return readl(chip->region.name.ba0.remap_addr + offset);
|
||||
}
|
||||
|
||||
dsp_spos_instance_t * cs46xx_dsp_spos_create (cs46xx_t * chip);
|
||||
void cs46xx_dsp_spos_destroy (cs46xx_t * chip);
|
||||
int cs46xx_dsp_load_module (cs46xx_t * chip,dsp_module_desc_t * module);
|
||||
symbol_entry_t * cs46xx_dsp_lookup_symbol (cs46xx_t * chip,char * symbol_name,int symbol_type);
|
||||
int cs46xx_dsp_proc_init (snd_card_t * card, cs46xx_t *chip);
|
||||
int cs46xx_dsp_proc_done (cs46xx_t *chip);
|
||||
int cs46xx_dsp_scb_and_task_init (cs46xx_t *chip);
|
||||
int snd_cs46xx_download (cs46xx_t *chip,u32 *src,unsigned long offset,
|
||||
unsigned long len);
|
||||
int snd_cs46xx_clear_BA1(cs46xx_t *chip,unsigned long offset,unsigned long len);
|
||||
int cs46xx_dsp_enable_spdif_out (cs46xx_t *chip);
|
||||
int cs46xx_dsp_enable_spdif_hw (cs46xx_t *chip);
|
||||
int cs46xx_dsp_disable_spdif_out (cs46xx_t *chip);
|
||||
int cs46xx_dsp_enable_spdif_in (cs46xx_t *chip);
|
||||
int cs46xx_dsp_disable_spdif_in (cs46xx_t *chip);
|
||||
int cs46xx_dsp_enable_pcm_capture (cs46xx_t *chip);
|
||||
int cs46xx_dsp_disable_pcm_capture (cs46xx_t *chip);
|
||||
int cs46xx_dsp_enable_adc_capture (cs46xx_t *chip);
|
||||
int cs46xx_dsp_disable_adc_capture (cs46xx_t *chip);
|
||||
int cs46xx_poke_via_dsp (cs46xx_t *chip,u32 address,u32 data);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_scb (cs46xx_t *chip,char * name, u32 * scb_data,u32 dest);
|
||||
void cs46xx_dsp_proc_free_scb_desc (dsp_scb_descriptor_t * scb);
|
||||
void cs46xx_dsp_proc_register_scb_desc (cs46xx_t *chip,dsp_scb_descriptor_t * scb);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_timing_master_scb (cs46xx_t *chip);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_codec_out_scb(cs46xx_t * chip,char * codec_name,
|
||||
u16 channel_disp,u16 fifo_addr,
|
||||
u16 child_scb_addr,
|
||||
u32 dest,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_codec_in_scb(cs46xx_t * chip,char * codec_name,
|
||||
u16 channel_disp,u16 fifo_addr,
|
||||
u16 sample_buffer_addr,
|
||||
u32 dest,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
void cs46xx_dsp_remove_scb (cs46xx_t *chip,dsp_scb_descriptor_t * scb);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_codec_in_scb(cs46xx_t * chip,char * codec_name,
|
||||
u16 channel_disp,u16 fifo_addr,
|
||||
u16 sample_buffer_addr,
|
||||
u32 dest,dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_src_task_scb(cs46xx_t * chip,char * scb_name,
|
||||
int sample_rate,
|
||||
u16 src_buffer_addr,
|
||||
u16 src_delay_buffer_addr,u32 dest,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type,
|
||||
int pass_through);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_mix_only_scb(cs46xx_t * chip,char * scb_name,
|
||||
u16 mix_buffer_addr,u32 dest,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_vari_decimate_scb(cs46xx_t * chip,char * scb_name,
|
||||
u16 vari_buffer_addr0,
|
||||
u16 vari_buffer_addr1,
|
||||
u32 dest,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_asynch_fg_rx_scb(cs46xx_t * chip,char * scb_name,u32 dest,
|
||||
u16 hfg_scb_address,
|
||||
u16 asynch_buffer_address,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_spio_write_scb(cs46xx_t * chip,char * scb_name,u32 dest,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_mix_to_ostream_scb(cs46xx_t * chip,char * scb_name,
|
||||
u16 mix_buffer_addr,u16 writeback_spb,u32 dest,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
dsp_scb_descriptor_t * cs46xx_dsp_create_magic_snoop_scb(cs46xx_t * chip,char * scb_name,u32 dest,
|
||||
u16 snoop_buffer_address,
|
||||
dsp_scb_descriptor_t * snoop_scb,
|
||||
dsp_scb_descriptor_t * parent_scb,
|
||||
int scb_child_type);
|
||||
pcm_channel_descriptor_t * cs46xx_dsp_create_pcm_channel (cs46xx_t * chip,u32 sample_rate, void * private_data, u32 hw_dma_addr,
|
||||
int pcm_channel_id);
|
||||
void cs46xx_dsp_destroy_pcm_channel (cs46xx_t * chip,
|
||||
pcm_channel_descriptor_t * pcm_channel);
|
||||
int cs46xx_dsp_pcm_unlink (cs46xx_t * chip,pcm_channel_descriptor_t * pcm_channel);
|
||||
int cs46xx_dsp_pcm_link (cs46xx_t * chip,pcm_channel_descriptor_t * pcm_channel);
|
||||
dsp_scb_descriptor_t * cs46xx_add_record_source (cs46xx_t *chip,dsp_scb_descriptor_t * source,
|
||||
u16 addr,char * scb_name);
|
||||
int cs46xx_src_unlink(cs46xx_t *chip,dsp_scb_descriptor_t * src);
|
||||
int cs46xx_src_link(cs46xx_t *chip,dsp_scb_descriptor_t * src);
|
||||
int cs46xx_iec958_pre_open (cs46xx_t *chip);
|
||||
int cs46xx_iec958_post_close (cs46xx_t *chip);
|
||||
int cs46xx_dsp_pcm_channel_set_period (cs46xx_t * chip,
|
||||
pcm_channel_descriptor_t * pcm_channel,
|
||||
int period_size);
|
||||
int cs46xx_dsp_pcm_ostream_set_period (cs46xx_t * chip,
|
||||
int period_size);
|
||||
int cs46xx_dsp_set_dac_volume (cs46xx_t * chip,u16 left,u16 right);
|
||||
int cs46xx_dsp_set_iec958_volume (cs46xx_t * chip,u16 left,u16 right);
|
||||
#endif /* __CS46XX_LIB_H__ */
|
1892
sound/pci/cs46xx/dsp_spos.c
普通文件
1892
sound/pci/cs46xx/dsp_spos.c
普通文件
文件差异内容过多而无法显示
加载差异
225
sound/pci/cs46xx/dsp_spos.h
普通文件
225
sound/pci/cs46xx/dsp_spos.h
普通文件
@@ -0,0 +1,225 @@
|
||||
/*
|
||||
* The driver for the Cirrus Logic's Sound Fusion CS46XX based soundcards
|
||||
* Copyright (c) by Jaroslav Kysela <perex@suse.cz>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* 2002-07 Benny Sjostrand benny@hostmobility.com
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_SND_CS46XX_NEW_DSP /* hack ... */
|
||||
#ifndef __DSP_SPOS_H__
|
||||
#define __DSP_SPOS_H__
|
||||
|
||||
#define DSP_MAX_SYMBOLS 1024
|
||||
#define DSP_MAX_MODULES 64
|
||||
|
||||
#define DSP_CODE_BYTE_SIZE 0x00007000UL
|
||||
#define DSP_PARAMETER_BYTE_SIZE 0x00003000UL
|
||||
#define DSP_SAMPLE_BYTE_SIZE 0x00003800UL
|
||||
#define DSP_PARAMETER_BYTE_OFFSET 0x00000000UL
|
||||
#define DSP_SAMPLE_BYTE_OFFSET 0x00010000UL
|
||||
#define DSP_CODE_BYTE_OFFSET 0x00020000UL
|
||||
|
||||
#define WIDE_INSTR_MASK 0x0040
|
||||
#define WIDE_LADD_INSTR_MASK 0x0380
|
||||
|
||||
/* this instruction types
|
||||
needs to be reallocated when load
|
||||
code into DSP */
|
||||
typedef enum {
|
||||
WIDE_FOR_BEGIN_LOOP = 0x20,
|
||||
WIDE_FOR_BEGIN_LOOP2,
|
||||
|
||||
WIDE_COND_GOTO_ADDR = 0x30,
|
||||
WIDE_COND_GOTO_CALL,
|
||||
|
||||
WIDE_TBEQ_COND_GOTO_ADDR = 0x70,
|
||||
WIDE_TBEQ_COND_CALL_ADDR,
|
||||
WIDE_TBEQ_NCOND_GOTO_ADDR,
|
||||
WIDE_TBEQ_NCOND_CALL_ADDR,
|
||||
WIDE_TBEQ_COND_GOTO1_ADDR,
|
||||
WIDE_TBEQ_COND_CALL1_ADDR,
|
||||
WIDE_TBEQ_NCOND_GOTOI_ADDR,
|
||||
WIDE_TBEQ_NCOND_CALL1_ADDR,
|
||||
} wide_opcode_t;
|
||||
|
||||
/* SAMPLE segment */
|
||||
#define VARI_DECIMATE_BUF1 0x0000
|
||||
#define WRITE_BACK_BUF1 0x0400
|
||||
#define CODEC_INPUT_BUF1 0x0500
|
||||
#define PCM_READER_BUF1 0x0600
|
||||
#define SRC_DELAY_BUF1 0x0680
|
||||
#define VARI_DECIMATE_BUF0 0x0780
|
||||
#define SRC_OUTPUT_BUF1 0x07A0
|
||||
#define ASYNC_IP_OUTPUT_BUFFER1 0x0A00
|
||||
#define OUTPUT_SNOOP_BUFFER 0x0B00
|
||||
#define SPDIFI_IP_OUTPUT_BUFFER1 0x0E00
|
||||
#define SPDIFO_IP_OUTPUT_BUFFER1 0x1000
|
||||
#define MIX_SAMPLE_BUF1 0x1400
|
||||
#define MIX_SAMPLE_BUF2 0x2E80
|
||||
#define MIX_SAMPLE_BUF3 0x2F00
|
||||
#define MIX_SAMPLE_BUF4 0x2F80
|
||||
#define MIX_SAMPLE_BUF5 0x3000
|
||||
|
||||
/* Task stack address */
|
||||
#define HFG_STACK 0x066A
|
||||
#define FG_STACK 0x066E
|
||||
#define BG_STACK 0x068E
|
||||
|
||||
/* SCB's addresses */
|
||||
#define SPOSCB_ADDR 0x070
|
||||
#define BG_TREE_SCB_ADDR 0x635
|
||||
#define NULL_SCB_ADDR 0x000
|
||||
#define TIMINGMASTER_SCB_ADDR 0x010
|
||||
#define CODECOUT_SCB_ADDR 0x020
|
||||
#define PCMREADER_SCB_ADDR 0x030
|
||||
#define WRITEBACK_SCB_ADDR 0x040
|
||||
#define CODECIN_SCB_ADDR 0x080
|
||||
#define MASTERMIX_SCB_ADDR 0x090
|
||||
#define SRCTASK_SCB_ADDR 0x0A0
|
||||
#define VARIDECIMATE_SCB_ADDR 0x0B0
|
||||
#define PCMSERIALIN_SCB_ADDR 0x0C0
|
||||
#define FG_TASK_HEADER_ADDR 0x600
|
||||
#define ASYNCTX_SCB_ADDR 0x0E0
|
||||
#define ASYNCRX_SCB_ADDR 0x0F0
|
||||
#define SRCTASKII_SCB_ADDR 0x100
|
||||
#define OUTPUTSNOOP_SCB_ADDR 0x110
|
||||
#define PCMSERIALINII_SCB_ADDR 0x120
|
||||
#define SPIOWRITE_SCB_ADDR 0x130
|
||||
#define REAR_CODECOUT_SCB_ADDR 0x140
|
||||
#define OUTPUTSNOOPII_SCB_ADDR 0x150
|
||||
#define PCMSERIALIN_PCM_SCB_ADDR 0x160
|
||||
#define RECORD_MIXER_SCB_ADDR 0x170
|
||||
#define REAR_MIXER_SCB_ADDR 0x180
|
||||
#define CLFE_MIXER_SCB_ADDR 0x190
|
||||
#define CLFE_CODEC_SCB_ADDR 0x1A0
|
||||
|
||||
/* hyperforground SCB's*/
|
||||
#define HFG_TREE_SCB 0xBA0
|
||||
#define SPDIFI_SCB_INST 0xBB0
|
||||
#define SPDIFO_SCB_INST 0xBC0
|
||||
#define WRITE_BACK_SPB 0x0D0
|
||||
|
||||
/* offsets */
|
||||
#define AsyncCIOFIFOPointer 0xd
|
||||
#define SPDIFOFIFOPointer 0xd
|
||||
#define SPDIFIFIFOPointer 0xd
|
||||
#define TCBData 0xb
|
||||
#define HFGFlags 0xa
|
||||
#define TCBContextBlk 0x10
|
||||
#define AFGTxAccumPhi 0x4
|
||||
#define SCBsubListPtr 0x9
|
||||
#define SCBfuncEntryPtr 0xA
|
||||
#define SRCCorPerGof 0x2
|
||||
#define SRCPhiIncr6Int26Frac 0xd
|
||||
#define SCBVolumeCtrl 0xe
|
||||
|
||||
/* conf */
|
||||
#define UseASER1Input 1
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* The following defines are for the flags in the rsConfig01/23 registers of
|
||||
* the SP.
|
||||
*/
|
||||
|
||||
#define RSCONFIG_MODULO_SIZE_MASK 0x0000000FL
|
||||
#define RSCONFIG_MODULO_16 0x00000001L
|
||||
#define RSCONFIG_MODULO_32 0x00000002L
|
||||
#define RSCONFIG_MODULO_64 0x00000003L
|
||||
#define RSCONFIG_MODULO_128 0x00000004L
|
||||
#define RSCONFIG_MODULO_256 0x00000005L
|
||||
#define RSCONFIG_MODULO_512 0x00000006L
|
||||
#define RSCONFIG_MODULO_1024 0x00000007L
|
||||
#define RSCONFIG_MODULO_4 0x00000008L
|
||||
#define RSCONFIG_MODULO_8 0x00000009L
|
||||
#define RSCONFIG_SAMPLE_SIZE_MASK 0x000000C0L
|
||||
#define RSCONFIG_SAMPLE_8MONO 0x00000000L
|
||||
#define RSCONFIG_SAMPLE_8STEREO 0x00000040L
|
||||
#define RSCONFIG_SAMPLE_16MONO 0x00000080L
|
||||
#define RSCONFIG_SAMPLE_16STEREO 0x000000C0L
|
||||
#define RSCONFIG_UNDERRUN_ZERO 0x00004000L
|
||||
#define RSCONFIG_DMA_TO_HOST 0x00008000L
|
||||
#define RSCONFIG_STREAM_NUM_MASK 0x00FF0000L
|
||||
#define RSCONFIG_MAX_DMA_SIZE_MASK 0x1F000000L
|
||||
#define RSCONFIG_DMA_ENABLE 0x20000000L
|
||||
#define RSCONFIG_PRIORITY_MASK 0xC0000000L
|
||||
#define RSCONFIG_PRIORITY_HIGH 0x00000000L
|
||||
#define RSCONFIG_PRIORITY_MEDIUM_HIGH 0x40000000L
|
||||
#define RSCONFIG_PRIORITY_MEDIUM_LOW 0x80000000L
|
||||
#define RSCONFIG_PRIORITY_LOW 0xC0000000L
|
||||
#define RSCONFIG_STREAM_NUM_SHIFT 16L
|
||||
#define RSCONFIG_MAX_DMA_SIZE_SHIFT 24L
|
||||
|
||||
/* SP constants */
|
||||
#define FG_INTERVAL_TIMER_PERIOD 0x0051
|
||||
#define BG_INTERVAL_TIMER_PERIOD 0x0100
|
||||
|
||||
|
||||
/* Only SP accessible registers */
|
||||
#define SP_ASER_COUNTDOWN 0x8040
|
||||
#define SP_SPDOUT_FIFO 0x0108
|
||||
#define SP_SPDIN_MI_FIFO 0x01E0
|
||||
#define SP_SPDIN_D_FIFO 0x01F0
|
||||
#define SP_SPDIN_STATUS 0x8048
|
||||
#define SP_SPDIN_CONTROL 0x8049
|
||||
#define SP_SPDIN_FIFOPTR 0x804A
|
||||
#define SP_SPDOUT_STATUS 0x804C
|
||||
#define SP_SPDOUT_CONTROL 0x804D
|
||||
#define SP_SPDOUT_CSUV 0x808E
|
||||
|
||||
static inline u8 _wrap_all_bits (u8 val) {
|
||||
u8 wrapped;
|
||||
|
||||
/* wrap all 8 bits */
|
||||
wrapped =
|
||||
((val & 0x1 ) << 7) |
|
||||
((val & 0x2 ) << 5) |
|
||||
((val & 0x4 ) << 3) |
|
||||
((val & 0x8 ) << 1) |
|
||||
((val & 0x10) >> 1) |
|
||||
((val & 0x20) >> 3) |
|
||||
((val & 0x40) >> 5) |
|
||||
((val & 0x80) >> 7);
|
||||
|
||||
return wrapped;
|
||||
|
||||
}
|
||||
|
||||
|
||||
static inline void cs46xx_dsp_spos_update_scb (cs46xx_t * chip,dsp_scb_descriptor_t * scb)
|
||||
{
|
||||
/* update nextSCB and subListPtr in SCB */
|
||||
snd_cs46xx_poke(chip,
|
||||
(scb->address + SCBsubListPtr) << 2,
|
||||
(scb->sub_list_ptr->address << 0x10) |
|
||||
(scb->next_scb_ptr->address));
|
||||
}
|
||||
|
||||
static inline void cs46xx_dsp_scb_set_volume (cs46xx_t * chip,dsp_scb_descriptor_t * scb,
|
||||
u16 left,u16 right) {
|
||||
unsigned int val = ((0xffff - left) << 16 | (0xffff - right));
|
||||
|
||||
snd_cs46xx_poke(chip, (scb->address + SCBVolumeCtrl) << 2, val);
|
||||
snd_cs46xx_poke(chip, (scb->address + SCBVolumeCtrl + 1) << 2, val);
|
||||
}
|
||||
#endif /* __DSP_SPOS_H__ */
|
||||
#endif /* CONFIG_SND_CS46XX_NEW_DSP */
|
1750
sound/pci/cs46xx/dsp_spos_scb_lib.c
普通文件
1750
sound/pci/cs46xx/dsp_spos_scb_lib.c
普通文件
文件差异内容过多而无法显示
加载差异
320
sound/pci/cs46xx/imgs/cwc4630.h
普通文件
320
sound/pci/cs46xx/imgs/cwc4630.h
普通文件
@@ -0,0 +1,320 @@
|
||||
/* generated from cwc4630.osp DO NOT MODIFY */
|
||||
|
||||
#ifndef __HEADER_cwc4630_H__
|
||||
#define __HEADER_cwc4630_H__
|
||||
|
||||
static symbol_entry_t cwc4630_symbols[] = {
|
||||
{ 0x0000, "BEGINADDRESS",0x00 },
|
||||
{ 0x8000, "EXECCHILD",0x03 },
|
||||
{ 0x8001, "EXECCHILD_98",0x03 },
|
||||
{ 0x8003, "EXECCHILD_PUSH1IND",0x03 },
|
||||
{ 0x8008, "EXECSIBLING",0x03 },
|
||||
{ 0x800a, "EXECSIBLING_298",0x03 },
|
||||
{ 0x800b, "EXECSIBLING_2IND1",0x03 },
|
||||
{ 0x8010, "TIMINGMASTER",0x03 },
|
||||
{ 0x804f, "S16_CODECINPUTTASK",0x03 },
|
||||
{ 0x805e, "PCMSERIALINPUTTASK",0x03 },
|
||||
{ 0x806d, "S16_MIX_TO_OSTREAM",0x03 },
|
||||
{ 0x809a, "S16_MIX",0x03 },
|
||||
{ 0x80bb, "S16_UPSRC",0x03 },
|
||||
{ 0x813b, "MIX3_EXP",0x03 },
|
||||
{ 0x8164, "DECIMATEBYPOW2",0x03 },
|
||||
{ 0x8197, "VARIDECIMATE",0x03 },
|
||||
{ 0x81f2, "_3DINPUTTASK",0x03 },
|
||||
{ 0x820a, "_3DPRLGCINPTASK",0x03 },
|
||||
{ 0x8227, "_3DSTEREOINPUTTASK",0x03 },
|
||||
{ 0x8242, "_3DOUTPUTTASK",0x03 },
|
||||
{ 0x82c4, "HRTF_MORPH_TASK",0x03 },
|
||||
{ 0x82c6, "WAIT4DATA",0x03 },
|
||||
{ 0x82fa, "PROLOGIC",0x03 },
|
||||
{ 0x8496, "DECORRELATOR",0x03 },
|
||||
{ 0x84a4, "STEREO2MONO",0x03 },
|
||||
{ 0x0070, "SPOSCB",0x02 },
|
||||
{ 0x0107, "TASKTREETHREAD",0x03 },
|
||||
{ 0x013c, "TASKTREEHEADERCODE",0x03 },
|
||||
{ 0x0145, "FGTASKTREEHEADERCODE",0x03 },
|
||||
{ 0x0169, "NULLALGORITHM",0x03 },
|
||||
{ 0x016d, "HFGEXECCHILD",0x03 },
|
||||
{ 0x016e, "HFGEXECCHILD_98",0x03 },
|
||||
{ 0x0170, "HFGEXECCHILD_PUSH1IND",0x03 },
|
||||
{ 0x0173, "HFGEXECSIBLING",0x03 },
|
||||
{ 0x0175, "HFGEXECSIBLING_298",0x03 },
|
||||
{ 0x0176, "HFGEXECSIBLING_2IND1",0x03 },
|
||||
{ 0x0179, "S16_CODECOUTPUTTASK",0x03 },
|
||||
{ 0x0194, "#CODE_END",0x00 },
|
||||
}; /* cwc4630 symbols */
|
||||
|
||||
static u32 cwc4630_code[] = {
|
||||
/* BEGINADDRESS */
|
||||
/* 0000 */ 0x00040730,0x00001002,0x000f619e,0x00001003,
|
||||
/* 0002 */ 0x00001705,0x00001400,0x000a411e,0x00001003,
|
||||
/* 0004 */ 0x00040730,0x00001002,0x000f619e,0x00001003,
|
||||
/* 0006 */ 0x00009705,0x00001400,0x000a411e,0x00001003,
|
||||
/* 0008 */ 0x00040730,0x00001002,0x000f619e,0x00001003,
|
||||
/* 000A */ 0x00011705,0x00001400,0x000a411e,0x00001003,
|
||||
/* 000C */ 0x00040730,0x00001002,0x000f619e,0x00001003,
|
||||
/* 000E */ 0x00019705,0x00001400,0x000a411e,0x00001003,
|
||||
/* 0010 */ 0x00040730,0x00001002,0x000f619e,0x00001003,
|
||||
/* 0012 */ 0x00021705,0x00001400,0x000a411e,0x00001003,
|
||||
/* 0014 */ 0x00040730,0x00001002,0x000f619e,0x00001003,
|
||||
/* 0016 */ 0x00029705,0x00001400,0x000a411e,0x00001003,
|
||||
/* 0018 */ 0x00040730,0x00001002,0x000f619e,0x00001003,
|
||||
/* 001A */ 0x00031705,0x00001400,0x000a411e,0x00001003,
|
||||
/* 001C */ 0x00040730,0x00001002,0x000f619e,0x00001003,
|
||||
/* 001E */ 0x00039705,0x00001400,0x000a411e,0x00001003,
|
||||
/* 0020 */ 0x000fe19e,0x00001003,0x0009c730,0x00001003,
|
||||
/* 0022 */ 0x0008e19c,0x00001003,0x000083c1,0x00093040,
|
||||
/* 0024 */ 0x00098730,0x00001002,0x000ee19e,0x00001003,
|
||||
/* 0026 */ 0x00009705,0x00001400,0x000a211e,0x00001003,
|
||||
/* 0028 */ 0x00098730,0x00001002,0x000ee19e,0x00001003,
|
||||
/* 002A */ 0x00011705,0x00001400,0x000a211e,0x00001003,
|
||||
/* 002C */ 0x00098730,0x00001002,0x000ee19e,0x00001003,
|
||||
/* 002E */ 0x00019705,0x00001400,0x000a211e,0x00001003,
|
||||
/* 0030 */ 0x00098730,0x00001002,0x000ee19e,0x00001003,
|
||||
/* 0032 */ 0x00021705,0x00001400,0x000a211e,0x00001003,
|
||||
/* 0034 */ 0x00098730,0x00001002,0x000ee19e,0x00001003,
|
||||
/* 0036 */ 0x00029705,0x00001400,0x000a211e,0x00001003,
|
||||
/* 0038 */ 0x00098730,0x00001002,0x000ee19e,0x00001003,
|
||||
/* 003A */ 0x00031705,0x00001400,0x000a211e,0x00001003,
|
||||
/* 003C */ 0x00098730,0x00001002,0x000ee19e,0x00001003,
|
||||
/* 003E */ 0x00039705,0x00001400,0x000a211e,0x00001003,
|
||||
/* 0040 */ 0x0001a730,0x00001008,0x000e2730,0x00001002,
|
||||
/* 0042 */ 0x0000a731,0x00001002,0x0000a731,0x00001002,
|
||||
/* 0044 */ 0x0000a731,0x00001002,0x0000a731,0x00001002,
|
||||
/* 0046 */ 0x0000a731,0x00001002,0x0000a731,0x00001002,
|
||||
/* 0048 */ 0x00000000,0x00000000,0x000f619c,0x00001003,
|
||||
/* 004A */ 0x0007f801,0x000c0000,0x00000037,0x00001000,
|
||||
/* 004C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 004E */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0050 */ 0x00000000,0x000c0000,0x00000000,0x00000000,
|
||||
/* 0052 */ 0x0000373c,0x00001000,0x00000000,0x00000000,
|
||||
/* 0054 */ 0x000ee19c,0x00001003,0x0007f801,0x000c0000,
|
||||
/* 0056 */ 0x00000037,0x00001000,0x00000000,0x00000000,
|
||||
/* 0058 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 005A */ 0x00000000,0x00000000,0x0000273c,0x00001000,
|
||||
/* 005C */ 0x00000033,0x00001000,0x000e679e,0x00001003,
|
||||
/* 005E */ 0x00007705,0x00001400,0x000ac71e,0x00001003,
|
||||
/* 0060 */ 0x00087fc1,0x000c3be0,0x0007f801,0x000c0000,
|
||||
/* 0062 */ 0x00000037,0x00001000,0x00000000,0x00000000,
|
||||
/* 0064 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0066 */ 0x00000000,0x00000000,0x0000a730,0x00001003,
|
||||
/* 0068 */ 0x00000033,0x00001000,0x0007f801,0x000c0000,
|
||||
/* 006A */ 0x00000037,0x00001000,0x00000000,0x00000000,
|
||||
/* 006C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 006E */ 0x00000000,0x00000000,0x00000000,0x000c0000,
|
||||
/* 0070 */ 0x00000032,0x00001000,0x0000273d,0x00001000,
|
||||
/* 0072 */ 0x0004a730,0x00001003,0x00000f41,0x00097140,
|
||||
/* 0074 */ 0x0000a841,0x0009b240,0x0000a0c1,0x0009f040,
|
||||
/* 0076 */ 0x0001c641,0x00093540,0x0001cec1,0x0009b5c0,
|
||||
/* 0078 */ 0x00000000,0x00000000,0x0001bf05,0x0003fc40,
|
||||
/* 007A */ 0x00002725,0x000aa400,0x00013705,0x00093a00,
|
||||
/* 007C */ 0x0000002e,0x0009d6c0,0x0002ef8a,0x00000000,
|
||||
/* 007E */ 0x00040630,0x00001004,0x0004ef0a,0x000eb785,
|
||||
/* 0080 */ 0x0003fc8a,0x00000000,0x00000000,0x000c70e0,
|
||||
/* 0082 */ 0x0007d182,0x0002c640,0x00008630,0x00001004,
|
||||
/* 0084 */ 0x000799b8,0x0002c6c0,0x00031705,0x00092240,
|
||||
/* 0086 */ 0x00039f05,0x000932c0,0x0003520a,0x00000000,
|
||||
/* 0088 */ 0x00070731,0x0000100b,0x00010705,0x000b20c0,
|
||||
/* 008A */ 0x00000000,0x000eba44,0x00032108,0x000c60c4,
|
||||
/* 008C */ 0x00065208,0x000c2917,0x000486b0,0x00001007,
|
||||
/* 008E */ 0x00012f05,0x00036880,0x0002818e,0x000c0000,
|
||||
/* 0090 */ 0x0004410a,0x00000000,0x00048630,0x00001007,
|
||||
/* 0092 */ 0x00029705,0x000c0000,0x00000000,0x00000000,
|
||||
/* 0094 */ 0x00003fc1,0x0003fc40,0x000037c1,0x00091b40,
|
||||
/* 0096 */ 0x00003fc1,0x000911c0,0x000037c1,0x000957c0,
|
||||
/* 0098 */ 0x00003fc1,0x000951c0,0x000037c1,0x00000000,
|
||||
/* 009A */ 0x00003fc1,0x000991c0,0x000037c1,0x00000000,
|
||||
/* 009C */ 0x00003fc1,0x0009d1c0,0x000037c1,0x00000000,
|
||||
/* 009E */ 0x0001ccc1,0x000915c0,0x0001c441,0x0009d800,
|
||||
/* 00A0 */ 0x0009cdc1,0x00091240,0x0001c541,0x00091d00,
|
||||
/* 00A2 */ 0x0009cfc1,0x00095240,0x0001c741,0x00095c80,
|
||||
/* 00A4 */ 0x000e8ca9,0x00099240,0x000e85ad,0x00095640,
|
||||
/* 00A6 */ 0x00069ca9,0x00099d80,0x000e952d,0x00099640,
|
||||
/* 00A8 */ 0x000eaca9,0x0009d6c0,0x000ea5ad,0x00091a40,
|
||||
/* 00AA */ 0x0006bca9,0x0009de80,0x000eb52d,0x00095a40,
|
||||
/* 00AC */ 0x000ecca9,0x00099ac0,0x000ec5ad,0x0009da40,
|
||||
/* 00AE */ 0x000edca9,0x0009d300,0x000a6e0a,0x00001000,
|
||||
/* 00B0 */ 0x000ed52d,0x00091e40,0x000eeca9,0x00095ec0,
|
||||
/* 00B2 */ 0x000ee5ad,0x00099e40,0x0006fca9,0x00002500,
|
||||
/* 00B4 */ 0x000fb208,0x000c59a0,0x000ef52d,0x0009de40,
|
||||
/* 00B6 */ 0x00068ca9,0x000912c1,0x000683ad,0x00095241,
|
||||
/* 00B8 */ 0x00020f05,0x000991c1,0x00000000,0x00000000,
|
||||
/* 00BA */ 0x00086f88,0x00001000,0x0009cf81,0x000b5340,
|
||||
/* 00BC */ 0x0009c701,0x000b92c0,0x0009de81,0x000bd300,
|
||||
/* 00BE */ 0x0009d601,0x000b1700,0x0001fd81,0x000b9d80,
|
||||
/* 00C0 */ 0x0009f501,0x000b57c0,0x000a0f81,0x000bd740,
|
||||
/* 00C2 */ 0x00020701,0x000b5c80,0x000a1681,0x000b97c0,
|
||||
/* 00C4 */ 0x00021601,0x00002500,0x000a0701,0x000b9b40,
|
||||
/* 00C6 */ 0x000a0f81,0x000b1bc0,0x00021681,0x00002d00,
|
||||
/* 00C8 */ 0x00020f81,0x000bd800,0x000a0701,0x000b5bc0,
|
||||
/* 00CA */ 0x00021601,0x00003500,0x000a0f81,0x000b5f40,
|
||||
/* 00CC */ 0x000a0701,0x000bdbc0,0x00021681,0x00003d00,
|
||||
/* 00CE */ 0x00020f81,0x000b1d00,0x000a0701,0x000b1fc0,
|
||||
/* 00D0 */ 0x00021601,0x00020500,0x00020f81,0x000b1341,
|
||||
/* 00D2 */ 0x000a0701,0x000b9fc0,0x00021681,0x00020d00,
|
||||
/* 00D4 */ 0x00020f81,0x000bde80,0x000a0701,0x000bdfc0,
|
||||
/* 00D6 */ 0x00021601,0x00021500,0x00020f81,0x000b9341,
|
||||
/* 00D8 */ 0x00020701,0x000b53c1,0x00021681,0x00021d00,
|
||||
/* 00DA */ 0x000a0f81,0x000d0380,0x0000b601,0x000b15c0,
|
||||
/* 00DC */ 0x00007b01,0x00000000,0x00007b81,0x000bd1c0,
|
||||
/* 00DE */ 0x00007b01,0x00000000,0x00007b81,0x000b91c0,
|
||||
/* 00E0 */ 0x00007b01,0x000b57c0,0x00007b81,0x000b51c0,
|
||||
/* 00E2 */ 0x00007b01,0x000b1b40,0x00007b81,0x000b11c0,
|
||||
/* 00E4 */ 0x00087b01,0x000c3dc0,0x0007e488,0x000d7e45,
|
||||
/* 00E6 */ 0x00000000,0x000d7a44,0x0007e48a,0x00000000,
|
||||
/* 00E8 */ 0x00011f05,0x00084080,0x00000000,0x00000000,
|
||||
/* 00EA */ 0x00001705,0x000b3540,0x00008a01,0x000bf040,
|
||||
/* 00EC */ 0x00007081,0x000bb5c0,0x00055488,0x00000000,
|
||||
/* 00EE */ 0x0000d482,0x0003fc40,0x0003fc88,0x00000000,
|
||||
/* 00F0 */ 0x0001e401,0x000b3a00,0x0001ec81,0x000bd6c0,
|
||||
/* 00F2 */ 0x0002ef88,0x000e7784,0x00056f08,0x00000000,
|
||||
/* 00F4 */ 0x000d86b0,0x00001007,0x00008281,0x000bb240,
|
||||
/* 00F6 */ 0x0000b801,0x000b7140,0x00007888,0x00000000,
|
||||
/* 00F8 */ 0x0000073c,0x00001000,0x0007f188,0x000c0000,
|
||||
/* 00FA */ 0x00000000,0x00000000,0x00055288,0x000c555c,
|
||||
/* 00FC */ 0x0005528a,0x000c0000,0x0009fa88,0x000c5d00,
|
||||
/* 00FE */ 0x0000fa88,0x00000000,0x00000032,0x00001000,
|
||||
/* 0100 */ 0x0000073d,0x00001000,0x0007f188,0x000c0000,
|
||||
/* 0102 */ 0x00000000,0x00000000,0x0008c01c,0x00001003,
|
||||
/* 0104 */ 0x00002705,0x00001008,0x0008b201,0x000c1392,
|
||||
/* 0106 */ 0x0000ba01,0x00000000,
|
||||
/* TASKTREETHREAD */
|
||||
/* 0107 */ 0x00008731,0x00001400,0x0004c108,0x000fe0c4,
|
||||
/* 0109 */ 0x00057488,0x00000000,0x000a6388,0x00001001,
|
||||
/* 010B */ 0x0008b334,0x000bc141,0x0003020e,0x00000000,
|
||||
/* 010D */ 0x000986b0,0x00001008,0x00003625,0x000c5dfa,
|
||||
/* 010F */ 0x000a638a,0x00001001,0x0008020e,0x00001002,
|
||||
/* 0111 */ 0x0009a6b0,0x00001008,0x0007f301,0x00000000,
|
||||
/* 0113 */ 0x00000000,0x00000000,0x00002725,0x000a8c40,
|
||||
/* 0115 */ 0x000000ae,0x00000000,0x000e8630,0x00001008,
|
||||
/* 0117 */ 0x00000000,0x000c74e0,0x0007d182,0x0002d640,
|
||||
/* 0119 */ 0x000b8630,0x00001008,0x000799b8,0x0002d6c0,
|
||||
/* 011B */ 0x0000748a,0x000c3ec5,0x0007420a,0x000c0000,
|
||||
/* 011D */ 0x00062208,0x000c4117,0x000a0630,0x00001009,
|
||||
/* 011F */ 0x00000000,0x000c0000,0x0001022e,0x00000000,
|
||||
/* 0121 */ 0x0006a630,0x00001009,0x00000032,0x00001000,
|
||||
/* 0123 */ 0x000ca21c,0x00001003,0x00005a02,0x00000000,
|
||||
/* 0125 */ 0x0001a630,0x00001009,0x00000000,0x000c0000,
|
||||
/* 0127 */ 0x00000036,0x00001000,0x00000000,0x00000000,
|
||||
/* 0129 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 012B */ 0x00000000,0x00000000,0x0003a730,0x00001008,
|
||||
/* 012D */ 0x0007f801,0x000c0000,0x00000037,0x00001000,
|
||||
/* 012F */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0131 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0133 */ 0x0003a730,0x00001008,0x00000033,0x00001000,
|
||||
/* 0135 */ 0x0003a705,0x00001008,0x00007a01,0x000c0000,
|
||||
/* 0137 */ 0x000e6288,0x000d550a,0x0006428a,0x00000000,
|
||||
/* 0139 */ 0x00090730,0x0000100a,0x00000000,0x000c0000,
|
||||
/* 013B */ 0x00000000,0x00000000,
|
||||
/* TASKTREEHEADERCODE */
|
||||
/* 013C */ 0x0007aab0,0x00034880,0x000a8fb0,0x0000100b,
|
||||
/* 013E */ 0x00057488,0x00000000,0x00033b94,0x00081140,
|
||||
/* 0140 */ 0x000183ae,0x00000000,0x000a86b0,0x0000100b,
|
||||
/* 0142 */ 0x00022f05,0x000c3545,0x0000eb8a,0x00000000,
|
||||
/* 0144 */ 0x00042731,0x00001003,
|
||||
/* FGTASKTREEHEADERCODE */
|
||||
/* 0145 */ 0x0007aab0,0x00034880,0x00078fb0,0x0000100a,
|
||||
/* 0147 */ 0x00057488,0x00000000,0x00033b94,0x00081140,
|
||||
/* 0149 */ 0x000183ae,0x00000000,0x000b06b0,0x0000100b,
|
||||
/* 014B */ 0x00022f05,0x00000000,0x00007401,0x00091140,
|
||||
/* 014D */ 0x00048f05,0x000951c0,0x00042731,0x00001003,
|
||||
/* 014F */ 0x0000473d,0x00001000,0x000f19b0,0x000bbc47,
|
||||
/* 0151 */ 0x00080000,0x000bffc7,0x000fe19e,0x00001003,
|
||||
/* 0153 */ 0x00000000,0x00000000,0x0008e19c,0x00001003,
|
||||
/* 0155 */ 0x000083c1,0x00093040,0x00000f41,0x00097140,
|
||||
/* 0157 */ 0x0000a841,0x0009b240,0x0000a0c1,0x0009f040,
|
||||
/* 0159 */ 0x0001c641,0x00093540,0x0001cec1,0x0009b5c0,
|
||||
/* 015B */ 0x00000000,0x000fdc44,0x00055208,0x00000000,
|
||||
/* 015D */ 0x00010705,0x000a2880,0x0000a23a,0x00093a00,
|
||||
/* 015F */ 0x0003fc8a,0x000df6c5,0x0004ef0a,0x000c0000,
|
||||
/* 0161 */ 0x00012f05,0x00036880,0x00065308,0x000c2997,
|
||||
/* 0163 */ 0x000086b0,0x0000100b,0x0004410a,0x000d40c7,
|
||||
/* 0165 */ 0x00000000,0x00000000,0x00088730,0x00001004,
|
||||
/* 0167 */ 0x00056f0a,0x000ea105,0x00000000,0x00000000,
|
||||
/* NULLALGORITHM */
|
||||
/* 0169 */ 0x0000473d,0x00001000,0x000f19b0,0x000bbc47,
|
||||
/* 016B */ 0x00080000,0x000bffc7,0x0000273d,0x00001000,
|
||||
/* HFGEXECCHILD */
|
||||
/* 016D */ 0x00000000,0x000eba44,
|
||||
/* HFGEXECCHILD_98 */
|
||||
/* 016E */ 0x00048f05,0x0000f440,0x00007401,0x0000f7c0,
|
||||
/* HFGEXECCHILD_PUSH1IND */
|
||||
/* 0170 */ 0x00000734,0x00001000,0x00010705,0x000a6880,
|
||||
/* 0172 */ 0x00006a88,0x000c75c4,
|
||||
/* HFGEXECSIBLING */
|
||||
/* 0173 */ 0x00000000,0x000e5084,0x00000000,0x000eba44,
|
||||
/* HFGEXECSIBLING_298 */
|
||||
/* 0175 */ 0x00087401,0x000e4782,
|
||||
/* HFGEXECSIBLING_2IND1 */
|
||||
/* 0176 */ 0x00000734,0x00001000,0x00010705,0x000a6880,
|
||||
/* 0178 */ 0x00006a88,0x000c75c4,
|
||||
/* S16_CODECOUTPUTTASK */
|
||||
/* 0179 */ 0x0007c108,0x000c0000,0x0007e721,0x000bed40,
|
||||
/* 017B */ 0x00005f25,0x000badc0,0x0003ba97,0x000beb80,
|
||||
/* 017D */ 0x00065590,0x000b2e00,0x00033217,0x00003ec0,
|
||||
/* 017F */ 0x00065590,0x000b8e40,0x0003ed80,0x000491c0,
|
||||
/* 0181 */ 0x00073fb0,0x00074c80,0x000583a0,0x0000100c,
|
||||
/* 0183 */ 0x000ee388,0x00042970,0x00008301,0x00021ef2,
|
||||
/* 0185 */ 0x000b8f14,0x0000000f,0x000c4d8d,0x0000001b,
|
||||
/* 0187 */ 0x000d6dc2,0x000e06c6,0x000032ac,0x000c3916,
|
||||
/* 0189 */ 0x0004edc2,0x00074c80,0x00078898,0x00001000,
|
||||
/* 018B */ 0x00038894,0x00000032,0x000c4d8d,0x00092e1b,
|
||||
/* 018D */ 0x000d6dc2,0x000e06c6,0x0004edc2,0x000c1956,
|
||||
/* 018F */ 0x0000722c,0x00034a00,0x00041705,0x0009ed40,
|
||||
/* 0191 */ 0x00058730,0x00001400,0x000d7488,0x000c3a00,
|
||||
/* 0193 */ 0x00048f05,0x00000000
|
||||
};
|
||||
/* #CODE_END */
|
||||
|
||||
static u32 cwc4630_parameter[] = {
|
||||
/* 0000 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0004 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0008 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 000C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0010 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0014 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0018 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 001C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0020 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0024 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0028 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 002C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0030 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0034 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0038 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 003C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0040 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0044 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0048 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 004C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0050 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0054 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0058 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 005C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0060 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0064 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0068 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 006C */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0070 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0074 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 0078 */ 0x00000000,0x00000000,0x00000000,0x00000000,
|
||||
/* 007C */ 0x00000000,0x00000000,0x00000000,0x00000000
|
||||
}; /* #PARAMETER_END */
|
||||
|
||||
|
||||
static segment_desc_t cwc4630_segments[] = {
|
||||
{ SEGTYPE_SP_PROGRAM, 0x00000000, 0x00000328, cwc4630_code },
|
||||
{ SEGTYPE_SP_PARAMETER, 0x00000000, 0x00000080, cwc4630_parameter },
|
||||
};
|
||||
|
||||
static dsp_module_desc_t cwc4630_module = {
|
||||
"cwc4630",
|
||||
{
|
||||
38,
|
||||
cwc4630_symbols
|
||||
},
|
||||
2,
|
||||
cwc4630_segments,
|
||||
};
|
||||
|
||||
#endif /* __HEADER_cwc4630_H__ */
|
176
sound/pci/cs46xx/imgs/cwcasync.h
普通文件
176
sound/pci/cs46xx/imgs/cwcasync.h
普通文件
@@ -0,0 +1,176 @@
|
||||
/* generated from cwcasync.osp DO NOT MODIFY */
|
||||
|
||||
#ifndef __HEADER_cwcasync_H__
|
||||
#define __HEADER_cwcasync_H__
|
||||
|
||||
static symbol_entry_t cwcasync_symbols[] = {
|
||||
{ 0x8000, "EXECCHILD",0x03 },
|
||||
{ 0x8001, "EXECCHILD_98",0x03 },
|
||||
{ 0x8003, "EXECCHILD_PUSH1IND",0x03 },
|
||||
{ 0x8008, "EXECSIBLING",0x03 },
|
||||
{ 0x800a, "EXECSIBLING_298",0x03 },
|
||||
{ 0x800b, "EXECSIBLING_2IND1",0x03 },
|
||||
{ 0x8010, "TIMINGMASTER",0x03 },
|
||||
{ 0x804f, "S16_CODECINPUTTASK",0x03 },
|
||||
{ 0x805e, "PCMSERIALINPUTTASK",0x03 },
|
||||
{ 0x806d, "S16_MIX_TO_OSTREAM",0x03 },
|
||||
{ 0x809a, "S16_MIX",0x03 },
|
||||
{ 0x80bb, "S16_UPSRC",0x03 },
|
||||
{ 0x813b, "MIX3_EXP",0x03 },
|
||||
{ 0x8164, "DECIMATEBYPOW2",0x03 },
|
||||
{ 0x8197, "VARIDECIMATE",0x03 },
|
||||
{ 0x81f2, "_3DINPUTTASK",0x03 },
|
||||
{ 0x820a, "_3DPRLGCINPTASK",0x03 },
|
||||
{ 0x8227, "_3DSTEREOINPUTTASK",0x03 },
|
||||
{ 0x8242, "_3DOUTPUTTASK",0x03 },
|
||||
{ 0x82c4, "HRTF_MORPH_TASK",0x03 },
|
||||
{ 0x82c6, "WAIT4DATA",0x03 },
|
||||
{ 0x82fa, "PROLOGIC",0x03 },
|
||||
{ 0x8496, "DECORRELATOR",0x03 },
|
||||
{ 0x84a4, "STEREO2MONO",0x03 },
|
||||
{ 0x0000, "OVERLAYBEGINADDRESS",0x00 },
|
||||
{ 0x0000, "SPIOWRITE",0x03 },
|
||||
{ 0x000d, "S16_ASYNCCODECINPUTTASK",0x03 },
|
||||
{ 0x0043, "SPDIFITASK",0x03 },
|
||||
{ 0x007b, "SPDIFOTASK",0x03 },
|
||||
{ 0x0097, "ASYNCHFGTXCODE",0x03 },
|
||||
{ 0x00be, "ASYNCHFGRXCODE",0x03 },
|
||||
{ 0x00db, "#CODE_END",0x00 },
|
||||
}; /* cwcasync symbols */
|
||||
|
||||
static u32 cwcasync_code[] = {
|
||||
/* OVERLAYBEGINADDRESS */
|
||||
/* 0000 */ 0x00002731,0x00001400,0x00003725,0x000a8440,
|
||||
/* 0002 */ 0x000000ae,0x00000000,0x00060630,0x00001000,
|
||||
/* 0004 */ 0x00000000,0x000c7560,0x00075282,0x0002d640,
|
||||
/* 0006 */ 0x00021705,0x00000000,0x00072ab8,0x0002d6c0,
|
||||
/* 0008 */ 0x00020630,0x00001000,0x000c74c2,0x000d4b82,
|
||||
/* 000A */ 0x000475c2,0x00000000,0x0003430a,0x000c0000,
|
||||
/* 000C */ 0x00042730,0x00001400,
|
||||
/* S16_ASYNCCODECINPUTTASK */
|
||||
/* 000D */ 0x0006a108,0x000cf2c4,0x0004f4c0,0x00000000,
|
||||
/* 000F */ 0x000fa418,0x0000101f,0x0005d402,0x0001c500,
|
||||
/* 0011 */ 0x000f0630,0x00001000,0x00004418,0x00001380,
|
||||
/* 0013 */ 0x000e243d,0x000d394a,0x00049705,0x00000000,
|
||||
/* 0015 */ 0x0007d530,0x000b4240,0x000e00f2,0x00001000,
|
||||
/* 0017 */ 0x00009134,0x000ca20a,0x00004c90,0x00001000,
|
||||
/* 0019 */ 0x0005d705,0x00000000,0x00004f25,0x00098240,
|
||||
/* 001B */ 0x00004725,0x00000000,0x0000e48a,0x00000000,
|
||||
/* 001D */ 0x00027295,0x0009c2c0,0x0003df25,0x00000000,
|
||||
/* 001F */ 0x000e8030,0x00001001,0x0005f718,0x000ac600,
|
||||
/* 0021 */ 0x0007cf30,0x000c2a01,0x00082630,0x00001001,
|
||||
/* 0023 */ 0x000504a0,0x00001001,0x00029314,0x000bcb80,
|
||||
/* 0025 */ 0x0003cf25,0x000b0e00,0x0004f5c0,0x00000000,
|
||||
/* 0027 */ 0x00049118,0x000d888a,0x0007dd02,0x000c6efa,
|
||||
/* 0029 */ 0x00000000,0x00000000,0x0004f5c0,0x00069c80,
|
||||
/* 002B */ 0x0000d402,0x00000000,0x000e8630,0x00001001,
|
||||
/* 002D */ 0x00079130,0x00000000,0x00049118,0x00090e00,
|
||||
/* 002F */ 0x0006c10a,0x00000000,0x00000000,0x000c0000,
|
||||
/* 0031 */ 0x0007cf30,0x00030580,0x00005725,0x00000000,
|
||||
/* 0033 */ 0x000d84a0,0x00001001,0x00029314,0x000b4780,
|
||||
/* 0035 */ 0x0003cf25,0x000b8600,0x00000000,0x00000000,
|
||||
/* 0037 */ 0x00000000,0x000c0000,0x00000000,0x00042c80,
|
||||
/* 0039 */ 0x0001dec1,0x000e488c,0x00031114,0x00000000,
|
||||
/* 003B */ 0x0004f5c2,0x00000000,0x0003640a,0x00000000,
|
||||
/* 003D */ 0x00000000,0x000e5084,0x00000000,0x000eb844,
|
||||
/* 003F */ 0x00007001,0x00000000,0x00000734,0x00001000,
|
||||
/* 0041 */ 0x00010705,0x000a6880,0x00006a88,0x000c75c4,
|
||||
/* SPDIFITASK */
|
||||
/* 0043 */ 0x0006a108,0x000cf2c4,0x0004f4c0,0x000d5384,
|
||||
/* 0045 */ 0x0007e48a,0x00000000,0x00067718,0x00001000,
|
||||
/* 0047 */ 0x0007a418,0x00001000,0x0007221a,0x00000000,
|
||||
/* 0049 */ 0x0005d402,0x00014500,0x000b8630,0x00001002,
|
||||
/* 004B */ 0x00004418,0x00001780,0x000e243d,0x000d394a,
|
||||
/* 004D */ 0x00049705,0x00000000,0x0007d530,0x000b4240,
|
||||
/* 004F */ 0x000ac0f2,0x00001002,0x00014414,0x00000000,
|
||||
/* 0051 */ 0x00004c90,0x00001000,0x0005d705,0x00000000,
|
||||
/* 0053 */ 0x00004f25,0x00098240,0x00004725,0x00000000,
|
||||
/* 0055 */ 0x0000e48a,0x00000000,0x00027295,0x0009c2c0,
|
||||
/* 0057 */ 0x0007df25,0x00000000,0x000ac030,0x00001003,
|
||||
/* 0059 */ 0x0005f718,0x000fe798,0x00029314,0x000bcb80,
|
||||
/* 005B */ 0x00000930,0x000b0e00,0x0004f5c0,0x000de204,
|
||||
/* 005D */ 0x000884a0,0x00001003,0x0007cf25,0x000e3560,
|
||||
/* 005F */ 0x00049118,0x00000000,0x00049118,0x000d888a,
|
||||
/* 0061 */ 0x0007dd02,0x000c6efa,0x0000c434,0x00030040,
|
||||
/* 0063 */ 0x000fda82,0x000c2312,0x000fdc0e,0x00001001,
|
||||
/* 0065 */ 0x00083402,0x000c2b92,0x000706b0,0x00001003,
|
||||
/* 0067 */ 0x00075a82,0x00000000,0x0000d625,0x000b0940,
|
||||
/* 0069 */ 0x0000840e,0x00001002,0x0000aabc,0x000c511e,
|
||||
/* 006B */ 0x00078730,0x00001003,0x0000aaf4,0x000e910a,
|
||||
/* 006D */ 0x0004628a,0x00000000,0x00006aca,0x00000000,
|
||||
/* 006F */ 0x00000930,0x00000000,0x0004f5c0,0x00069c80,
|
||||
/* 0071 */ 0x00046ac0,0x00000000,0x0003c40a,0x000fc898,
|
||||
/* 0073 */ 0x00049118,0x00090e00,0x0006c10a,0x00000000,
|
||||
/* 0075 */ 0x00000000,0x000e5084,0x00000000,0x000eb844,
|
||||
/* 0077 */ 0x00007001,0x00000000,0x00000734,0x00001000,
|
||||
/* 0079 */ 0x00010705,0x000a6880,0x00006a88,0x000c75c4,
|
||||
/* SPDIFOTASK */
|
||||
/* 007B */ 0x0006a108,0x000c0000,0x0004f4c0,0x000c3245,
|
||||
/* 007D */ 0x0000a418,0x00001000,0x0003a20a,0x00000000,
|
||||
/* 007F */ 0x00004418,0x00001380,0x000e243d,0x000d394a,
|
||||
/* 0081 */ 0x000c9705,0x000def92,0x0008c030,0x00001004,
|
||||
/* 0083 */ 0x0005f718,0x000fe798,0x00000000,0x000c0000,
|
||||
/* 0085 */ 0x00005725,0x00000000,0x000704a0,0x00001004,
|
||||
/* 0087 */ 0x00029314,0x000b4780,0x0003cf25,0x000b8600,
|
||||
/* 0089 */ 0x00000000,0x00000000,0x00000000,0x000c0000,
|
||||
/* 008B */ 0x00000000,0x00042c80,0x0001dec1,0x000e488c,
|
||||
/* 008D */ 0x00031114,0x00000000,0x0004f5c2,0x00000000,
|
||||
/* 008F */ 0x0004a918,0x00098600,0x0006c28a,0x00000000,
|
||||
/* 0091 */ 0x00000000,0x000e5084,0x00000000,0x000eb844,
|
||||
/* 0093 */ 0x00007001,0x00000000,0x00000734,0x00001000,
|
||||
/* 0095 */ 0x00010705,0x000a6880,0x00006a88,0x000c75c4,
|
||||
/* ASYNCHFGTXCODE */
|
||||
/* 0097 */ 0x0002a880,0x000b4e40,0x00042214,0x000e5548,
|
||||
/* 0099 */ 0x000542bf,0x00000000,0x00000000,0x000481c0,
|
||||
/* 009B */ 0x00000000,0x00000000,0x00000000,0x00000030,
|
||||
/* 009D */ 0x0000072d,0x000fbf8a,0x00077f94,0x000ea7df,
|
||||
/* 009F */ 0x0002ac95,0x000d3145,0x00002731,0x00001400,
|
||||
/* 00A1 */ 0x00006288,0x000c71c4,0x00014108,0x000e6044,
|
||||
/* 00A3 */ 0x00035408,0x00000000,0x00025418,0x000a0ec0,
|
||||
/* 00A5 */ 0x0001443d,0x000ca21e,0x00046595,0x000d730c,
|
||||
/* 00A7 */ 0x0006538e,0x00000000,0x00064630,0x00001005,
|
||||
/* 00A9 */ 0x000e7b0e,0x000df782,0x000746b0,0x00001005,
|
||||
/* 00AB */ 0x00036f05,0x000c0000,0x00043695,0x000d598c,
|
||||
/* 00AD */ 0x0005331a,0x000f2185,0x00000000,0x00000000,
|
||||
/* 00AF */ 0x000007ae,0x000bdb00,0x00040630,0x00001400,
|
||||
/* 00B1 */ 0x0005e708,0x000c0000,0x0007ef30,0x000b1c00,
|
||||
/* 00B3 */ 0x000d86a0,0x00001005,0x00066408,0x000c0000,
|
||||
/* 00B5 */ 0x00000000,0x00000000,0x00021843,0x00000000,
|
||||
/* 00B7 */ 0x00000cac,0x00062c00,0x00001dac,0x00063400,
|
||||
/* 00B9 */ 0x00002cac,0x0006cc80,0x000db943,0x000e5ca1,
|
||||
/* 00BB */ 0x00000000,0x00000000,0x0006680a,0x000f3205,
|
||||
/* 00BD */ 0x00042730,0x00001400,
|
||||
/* ASYNCHFGRXCODE */
|
||||
/* 00BE */ 0x00014108,0x000f2204,0x00025418,0x000a2ec0,
|
||||
/* 00C0 */ 0x00015dbd,0x00038100,0x00015dbc,0x00000000,
|
||||
/* 00C2 */ 0x0005e415,0x00034880,0x0001258a,0x000d730c,
|
||||
/* 00C4 */ 0x0006538e,0x000baa40,0x00060630,0x00001006,
|
||||
/* 00C6 */ 0x00067b0e,0x000ac380,0x0003ef05,0x00000000,
|
||||
/* 00C8 */ 0x0000f734,0x0001c300,0x000586b0,0x00001400,
|
||||
/* 00CA */ 0x000b6f05,0x000c3a00,0x00048f05,0x00000000,
|
||||
/* 00CC */ 0x0005b695,0x0008c380,0x0002058e,0x00000000,
|
||||
/* 00CE */ 0x000500b0,0x00001400,0x0002b318,0x000e998d,
|
||||
/* 00D0 */ 0x0006430a,0x00000000,0x00000000,0x000ef384,
|
||||
/* 00D2 */ 0x00004725,0x000c0000,0x00000000,0x000f3204,
|
||||
/* 00D4 */ 0x00004f25,0x000c0000,0x00080000,0x000e5ca1,
|
||||
/* 00D6 */ 0x000cb943,0x000e5ca1,0x0004b943,0x00000000,
|
||||
/* 00D8 */ 0x00040730,0x00001400,0x000cb943,0x000e5ca1,
|
||||
/* 00DA */ 0x0004b943,0x00000000
|
||||
};
|
||||
/* #CODE_END */
|
||||
|
||||
static segment_desc_t cwcasync_segments[] = {
|
||||
{ SEGTYPE_SP_PROGRAM, 0x00000000, 0x000001b6, cwcasync_code },
|
||||
};
|
||||
|
||||
static dsp_module_desc_t cwcasync_module = {
|
||||
"cwcasync",
|
||||
{
|
||||
32,
|
||||
cwcasync_symbols
|
||||
},
|
||||
1,
|
||||
cwcasync_segments,
|
||||
};
|
||||
|
||||
#endif /* __HEADER_cwcasync_H__ */
|
@@ -0,0 +1,48 @@
|
||||
/* generated by Benny
|
||||
MODIFY ON YOUR OWN RISK */
|
||||
|
||||
#ifndef __HEADER_cwcbinhack_H__
|
||||
#define __HEADER_cwcbinhack_H__
|
||||
|
||||
static symbol_entry_t cwcbinhack_symbols[] = {
|
||||
{ 0x02c8, "OVERLAYBEGINADDRESS",0x00 },
|
||||
{ 0x02c8, "MAGICSNOOPTASK",0x03 },
|
||||
{ 0x0308, "#CODE_END",0x00 },
|
||||
}; /* cwcbinhack symbols */
|
||||
|
||||
static u32 cwcbinhack_code[] = {
|
||||
/* 0x02c8 */
|
||||
0x0007bfb0,0x000bc240,0x00000c2e,0x000c6084, /* 1 */
|
||||
0x000b8630,0x00001016,0x00006408,0x000efb84, /* 2 */
|
||||
0x00016008,0x00000000,0x0001c088,0x000c0000, /* 3 */
|
||||
0x000fc908,0x000e3392,0x0005f488,0x000efb84, /* 4 */
|
||||
0x0001d402,0x000b2e00,0x0003d418,0x00001000, /* 5 */
|
||||
0x0008d574,0x000c4293,0x00065625,0x000ea30e, /* 6 */
|
||||
0x00096c01,0x000c6f92,0x0001a58a,0x000c6085, /* 7 */
|
||||
0x00002f43,0x00000000,0x000e03a0,0x00001016, /* 8 */
|
||||
0x0005e608,0x000c0000,0x00000000,0x00000000, /* 9 */
|
||||
0x000ca108,0x000dcca1,0x00003bac,0x000c3205, /* 10 */
|
||||
0x00073843,0x00000000,0x00010730,0x00001017, /* 11 */
|
||||
0x0001600a,0x000c0000,0x00057488,0x00000000, /* 12 */
|
||||
0x00000000,0x000e5084,0x00000000,0x000eba44, /* 13 */
|
||||
0x00087401,0x000e4782,0x00000734,0x00001000, /* 14 */
|
||||
0x00010705,0x000a6880,0x00006a88,0x000c75c4, /* 15 */
|
||||
0x00000000,0x00000000,0x00000000,0x00000000, /* 16 */
|
||||
};
|
||||
/* #CODE_END */
|
||||
|
||||
static segment_desc_t cwcbinhack_segments[] = {
|
||||
{ SEGTYPE_SP_PROGRAM, 0x00000000, 64, cwcbinhack_code },
|
||||
};
|
||||
|
||||
static dsp_module_desc_t cwcbinhack_module = {
|
||||
"cwcbinhack",
|
||||
{
|
||||
3,
|
||||
cwcbinhack_symbols
|
||||
},
|
||||
1,
|
||||
cwcbinhack_segments,
|
||||
};
|
||||
|
||||
#endif /* __HEADER_cwcbinhack_H__ */
|
169
sound/pci/cs46xx/imgs/cwcdma.asp
普通文件
169
sound/pci/cs46xx/imgs/cwcdma.asp
普通文件
@@ -0,0 +1,169 @@
|
||||
//
|
||||
// Copyright(c) by Benny Sjostrand (benny@hostmobility.com)
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
//
|
||||
|
||||
|
||||
//
|
||||
// This code runs inside the DSP (cs4610, cs4612, cs4624, or cs4630),
|
||||
// to compile it you need a tool named SPASM 3.0 and DSP code owned by
|
||||
// Cirrus Logic(R). The SPASM program will generate a object file (cwcdma.osp),
|
||||
// the "ospparser" tool will genereate the cwcdma.h file it's included from
|
||||
// the cs46xx_lib.c file.
|
||||
//
|
||||
//
|
||||
// The purpose of this code is very simple: make it possible to tranfser
|
||||
// the samples 'as they are' with no alteration from a PCMreader SCB (DMA from host)
|
||||
// to any other SCB. This is useful for AC3 throug SPDIF. SRC (source rate converters)
|
||||
// task always alters the samples in some how, however it's from 48khz -> 48khz. The
|
||||
// alterations are not audible, but AC3 wont work.
|
||||
//
|
||||
// ...
|
||||
// |
|
||||
// +---------------+
|
||||
// | AsynchFGTxSCB |
|
||||
// +---------------+
|
||||
// |
|
||||
// subListPtr
|
||||
// |
|
||||
// +--------------+
|
||||
// | DMAReader |
|
||||
// +--------------+
|
||||
// |
|
||||
// subListPtr
|
||||
// |
|
||||
// +-------------+
|
||||
// | PCMReader |
|
||||
// +-------------+
|
||||
// (DMA from host)
|
||||
//
|
||||
|
||||
struct dmaSCB
|
||||
{
|
||||
long dma_reserved1[3];
|
||||
|
||||
short dma_reserved2:dma_outBufPtr;
|
||||
|
||||
short dma_unused1:dma_unused2;
|
||||
|
||||
long dma_reserved3[4];
|
||||
|
||||
short dma_subListPtr:dma_nextSCB;
|
||||
short dma_SPBptr:dma_entryPoint;
|
||||
|
||||
long dma_strmRsConfig;
|
||||
long dma_strmBufPtr;
|
||||
|
||||
long dma_reserved4;
|
||||
|
||||
VolumeControl s2m_volume;
|
||||
};
|
||||
|
||||
#export DMAReader
|
||||
void DMAReader()
|
||||
{
|
||||
execChild();
|
||||
r2 = r0->dma_subListPtr;
|
||||
r1 = r0->nextSCB;
|
||||
|
||||
rsConfig01 = r2->strmRsConfig;
|
||||
// Load rsConfig for input buffer
|
||||
|
||||
rsDMA01 = r2->basicReq.daw, , tb = Z(0 - rf);
|
||||
// Load rsDMA in case input buffer is a DMA buffer Test to see if there is any data to transfer
|
||||
|
||||
if (tb) goto execSibling_2ind1 after {
|
||||
r5 = rf + (-1);
|
||||
r6 = r1->dma_entryPoint; // r6 = entry point of sibling task
|
||||
r1 = r1->dma_SPBptr, // r1 = pointer to sibling task's SPB
|
||||
, ind = r6; // Load entry point of sibling task
|
||||
}
|
||||
|
||||
rsConfig23 = r0->dma_strmRsConfig;
|
||||
// Load rsConfig for output buffer (never a DMA buffer)
|
||||
|
||||
r4 = r0->dma_outBufPtr;
|
||||
|
||||
rsa0 = r2->strmBufPtr;
|
||||
// rsa0 = input buffer pointer
|
||||
|
||||
for (i = r5; i >= 0; --i)
|
||||
after {
|
||||
rsa2 = r4;
|
||||
// rsa2 = output buffer pointer
|
||||
|
||||
nop;
|
||||
nop;
|
||||
}
|
||||
//*****************************
|
||||
// TODO: cycles to this point *
|
||||
//*****************************
|
||||
{
|
||||
acc0 = (rsd0 = *rsa0++1);
|
||||
// get sample
|
||||
|
||||
nop; // Those "nop"'s are really uggly, but there's
|
||||
nop; // something with DSP's pipelines which I don't
|
||||
nop; // understand, resulting this code to fail without
|
||||
// having those "nop"'s (Benny)
|
||||
|
||||
rsa0?reqDMA = r2;
|
||||
// Trigger DMA transfer on input stream,
|
||||
// if needed to replenish input buffer
|
||||
|
||||
nop;
|
||||
// Yet another magic "nop" to make stuff work
|
||||
|
||||
,,r98 = acc0 $+>> 0;
|
||||
// store sample in ALU
|
||||
|
||||
nop;
|
||||
// latency on load register.
|
||||
// (this one is understandable)
|
||||
|
||||
*rsa2++1 = r98;
|
||||
// store sample in output buffer
|
||||
|
||||
nop; // The same story
|
||||
nop; // as above again ...
|
||||
nop;
|
||||
}
|
||||
// TODO: cycles per loop iteration
|
||||
|
||||
r2->strmBufPtr = rsa0,, ;
|
||||
// Update the modified buffer pointers
|
||||
|
||||
r4 = rsa2;
|
||||
// Load output pointer position into r4
|
||||
|
||||
r2 = r0->nextSCB;
|
||||
// Sibling task
|
||||
|
||||
goto execSibling_2ind1 // takes 6 cycles
|
||||
after {
|
||||
r98 = r2->thisSPB:entryPoint;
|
||||
// Load child routine entry and data address
|
||||
|
||||
r1 = r9;
|
||||
// r9 is r2->thisSPB
|
||||
|
||||
r0->dma_outBufPtr = r4,,
|
||||
// Store updated output buffer pointer
|
||||
|
||||
ind = r8;
|
||||
// r8 is r2->entryPoint
|
||||
}
|
||||
}
|
68
sound/pci/cs46xx/imgs/cwcdma.h
普通文件
68
sound/pci/cs46xx/imgs/cwcdma.h
普通文件
@@ -0,0 +1,68 @@
|
||||
/* generated from cwcdma.osp DO NOT MODIFY */
|
||||
|
||||
#ifndef __HEADER_cwcdma_H__
|
||||
#define __HEADER_cwcdma_H__
|
||||
|
||||
static symbol_entry_t cwcdma_symbols[] = {
|
||||
{ 0x8000, "EXECCHILD",0x03 },
|
||||
{ 0x8001, "EXECCHILD_98",0x03 },
|
||||
{ 0x8003, "EXECCHILD_PUSH1IND",0x03 },
|
||||
{ 0x8008, "EXECSIBLING",0x03 },
|
||||
{ 0x800a, "EXECSIBLING_298",0x03 },
|
||||
{ 0x800b, "EXECSIBLING_2IND1",0x03 },
|
||||
{ 0x8010, "TIMINGMASTER",0x03 },
|
||||
{ 0x804f, "S16_CODECINPUTTASK",0x03 },
|
||||
{ 0x805e, "PCMSERIALINPUTTASK",0x03 },
|
||||
{ 0x806d, "S16_MIX_TO_OSTREAM",0x03 },
|
||||
{ 0x809a, "S16_MIX",0x03 },
|
||||
{ 0x80bb, "S16_UPSRC",0x03 },
|
||||
{ 0x813b, "MIX3_EXP",0x03 },
|
||||
{ 0x8164, "DECIMATEBYPOW2",0x03 },
|
||||
{ 0x8197, "VARIDECIMATE",0x03 },
|
||||
{ 0x81f2, "_3DINPUTTASK",0x03 },
|
||||
{ 0x820a, "_3DPRLGCINPTASK",0x03 },
|
||||
{ 0x8227, "_3DSTEREOINPUTTASK",0x03 },
|
||||
{ 0x8242, "_3DOUTPUTTASK",0x03 },
|
||||
{ 0x82c4, "HRTF_MORPH_TASK",0x03 },
|
||||
{ 0x82c6, "WAIT4DATA",0x03 },
|
||||
{ 0x82fa, "PROLOGIC",0x03 },
|
||||
{ 0x8496, "DECORRELATOR",0x03 },
|
||||
{ 0x84a4, "STEREO2MONO",0x03 },
|
||||
{ 0x0000, "OVERLAYBEGINADDRESS",0x00 },
|
||||
{ 0x0000, "DMAREADER",0x03 },
|
||||
{ 0x0018, "#CODE_END",0x00 },
|
||||
}; /* cwcdma symbols */
|
||||
|
||||
static u32 cwcdma_code[] = {
|
||||
/* OVERLAYBEGINADDRESS */
|
||||
/* 0000 */ 0x00002731,0x00001400,0x0004c108,0x000e5044,
|
||||
/* 0002 */ 0x0005f608,0x00000000,0x000007ae,0x000be300,
|
||||
/* 0004 */ 0x00058630,0x00001400,0x0007afb0,0x000e9584,
|
||||
/* 0006 */ 0x00007301,0x000a9840,0x0005e708,0x000cd104,
|
||||
/* 0008 */ 0x00067008,0x00000000,0x000902a0,0x00001000,
|
||||
/* 000A */ 0x00012a01,0x000c0000,0x00000000,0x00000000,
|
||||
/* 000C */ 0x00021843,0x000c0000,0x00000000,0x000c0000,
|
||||
/* 000E */ 0x0000e101,0x000c0000,0x00000cac,0x00000000,
|
||||
/* 0010 */ 0x00080000,0x000e5ca1,0x00000000,0x000c0000,
|
||||
/* 0012 */ 0x00000000,0x00000000,0x00000000,0x00092c00,
|
||||
/* 0014 */ 0x000122c1,0x000e5084,0x00058730,0x00001400,
|
||||
/* 0016 */ 0x000d7488,0x000e4782,0x00007401,0x0001c100
|
||||
};
|
||||
|
||||
/* #CODE_END */
|
||||
|
||||
static segment_desc_t cwcdma_segments[] = {
|
||||
{ SEGTYPE_SP_PROGRAM, 0x00000000, 0x00000030, cwcdma_code },
|
||||
};
|
||||
|
||||
static dsp_module_desc_t cwcdma_module = {
|
||||
"cwcdma",
|
||||
{
|
||||
27,
|
||||
cwcdma_symbols
|
||||
},
|
||||
1,
|
||||
cwcdma_segments,
|
||||
};
|
||||
|
||||
#endif /* __HEADER_cwcdma_H__ */
|
1607
sound/pci/cs46xx/imgs/cwcemb80.h
普通文件
1607
sound/pci/cs46xx/imgs/cwcemb80.h
普通文件
文件差异内容过多而无法显示
加载差异
46
sound/pci/cs46xx/imgs/cwcsnoop.h
普通文件
46
sound/pci/cs46xx/imgs/cwcsnoop.h
普通文件
@@ -0,0 +1,46 @@
|
||||
/* generated from cwcsnoop.osp DO NOT MODIFY */
|
||||
|
||||
#ifndef __HEADER_cwcsnoop_H__
|
||||
#define __HEADER_cwcsnoop_H__
|
||||
|
||||
static symbol_entry_t cwcsnoop_symbols[] = {
|
||||
{ 0x0500, "OVERLAYBEGINADDRESS",0x00 },
|
||||
{ 0x0500, "OUTPUTSNOOP",0x03 },
|
||||
{ 0x051f, "#CODE_END",0x00 },
|
||||
}; /* cwcsnoop symbols */
|
||||
|
||||
static u32 cwcsnoop_code[] = {
|
||||
/* 0000 */ 0x0007bfb0,0x000b4e40,0x0007c088,0x000c0617,
|
||||
/* 0002 */ 0x00049705,0x00000000,0x00080630,0x00001028,
|
||||
/* 0004 */ 0x00076408,0x000efb84,0x00066008,0x00000000,
|
||||
/* 0006 */ 0x0007c908,0x000c0000,0x00046725,0x000efa44,
|
||||
/* 0008 */ 0x0005f708,0x00000000,0x0001d402,0x000b2e00,
|
||||
/* 000A */ 0x0003d418,0x00001000,0x0008d574,0x000c4293,
|
||||
/* 000C */ 0x00065625,0x000ea30e,0x00096c01,0x000c6f92,
|
||||
/* 000E */ 0x0006a58a,0x000f6085,0x00002f43,0x00000000,
|
||||
/* 0010 */ 0x000a83a0,0x00001028,0x0005e608,0x000c0000,
|
||||
/* 0012 */ 0x00000000,0x00000000,0x000ca108,0x000dcca1,
|
||||
/* 0014 */ 0x00003bac,0x000fb205,0x00073843,0x00000000,
|
||||
/* 0016 */ 0x000d8730,0x00001028,0x0006600a,0x000c0000,
|
||||
/* 0018 */ 0x00057488,0x00000000,0x00000000,0x000e5084,
|
||||
/* 001A */ 0x00000000,0x000eba44,0x00087401,0x000e4782,
|
||||
/* 001C */ 0x00000734,0x00001000,0x00010705,0x000a6880,
|
||||
/* 001E */ 0x00006a88,0x000c75c4
|
||||
};
|
||||
/* #CODE_END */
|
||||
|
||||
static segment_desc_t cwcsnoop_segments[] = {
|
||||
{ SEGTYPE_SP_PROGRAM, 0x00000000, 0x0000003e, cwcsnoop_code },
|
||||
};
|
||||
|
||||
static dsp_module_desc_t cwcsnoop_module = {
|
||||
"cwcsnoop",
|
||||
{
|
||||
3,
|
||||
cwcsnoop_symbols
|
||||
},
|
||||
1,
|
||||
cwcsnoop_segments,
|
||||
};
|
||||
|
||||
#endif /* __HEADER_cwcsnoop_H__ */
|
在新工单中引用
屏蔽一个用户