forked from len0rd/rockbox
move some audio driver specific code to the correspoding files
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11675 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
3e24665c41
commit
1b967f41df
12 changed files with 179 additions and 166 deletions
|
|
@ -33,6 +33,22 @@
|
|||
#include "i2c-coldfire.h"
|
||||
#include "tlv320.h"
|
||||
|
||||
/* convert tenth of dB volume (-840..0) to master volume register value */
|
||||
int tenthdb2master(int db)
|
||||
{
|
||||
/* +6 to -73dB 1dB steps (plus mute == 80levels) 7bits */
|
||||
/* 1111111 == +6dB (0x7f) */
|
||||
/* 1111001 == 0dB (0x79) */
|
||||
/* 0110000 == -73dB (0x30 */
|
||||
/* 0101111 == mute (0x2f) */
|
||||
|
||||
if (db < VOLUME_MIN) {
|
||||
return 0x2f;
|
||||
} else {
|
||||
return((db/10)+73+0x30);
|
||||
}
|
||||
}
|
||||
|
||||
/* local functions and definations */
|
||||
#define TLV320_ADDR 0x34
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,32 @@
|
|||
#include "uda1380.h"
|
||||
#include "pcf50606.h"
|
||||
|
||||
/* convert tenth of dB volume (-840..0) to master volume register value */
|
||||
int tenthdb2master(int db)
|
||||
{
|
||||
if (db < -720) /* 1.5 dB steps */
|
||||
return (2940 - db) / 15;
|
||||
else if (db < -660) /* 0.75 dB steps */
|
||||
return (1110 - db) * 2 / 15;
|
||||
else if (db < -520) /* 0.5 dB steps */
|
||||
return (520 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
/* convert tenth of dB volume (-780..0) to mixer volume register value */
|
||||
int tenthdb2mixer(int db)
|
||||
{
|
||||
if (db < -660) /* 1.5 dB steps */
|
||||
return (2640 - db) / 15;
|
||||
else if (db < -600) /* 0.75 dB steps */
|
||||
return (990 - db) * 2 / 15;
|
||||
else if (db < -460) /* 0.5 dB steps */
|
||||
return (460 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------- */
|
||||
/* Local functions and variables */
|
||||
/* ------------------------------------------------- */
|
||||
|
|
|
|||
|
|
@ -42,6 +42,34 @@
|
|||
|
||||
#define IPOD_PCM_LEVEL 0x65 /* -6dB */
|
||||
|
||||
/* convert tenth of dB volume (-730..60) to master volume register value */
|
||||
int tenthdb2master(int db)
|
||||
{
|
||||
/* +6 to -73dB 1dB steps (plus mute == 80levels) 7bits */
|
||||
/* 1111111 == +6dB (0x7f) */
|
||||
/* 1111001 == 0dB (0x79) */
|
||||
/* 0110000 == -73dB (0x30 */
|
||||
/* 0101111 == mute (0x2f) */
|
||||
|
||||
if (db < VOLUME_MIN) {
|
||||
return 0x2f;
|
||||
} else {
|
||||
return((db/10)+0x30+73);
|
||||
}
|
||||
}
|
||||
|
||||
/* convert tenth of dB volume (-780..0) to mixer volume register value */
|
||||
int tenthdb2mixer(int db)
|
||||
{
|
||||
if (db < -660) /* 1.5 dB steps */
|
||||
return (2640 - db) / 15;
|
||||
else if (db < -600) /* 0.75 dB steps */
|
||||
return (990 - db) * 2 / 15;
|
||||
else if (db < -460) /* 0.5 dB steps */
|
||||
return (460 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
int audiohw_mute(int mute)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -40,6 +40,37 @@
|
|||
#include "wmcodec.h"
|
||||
#include "wm8758.h"
|
||||
|
||||
/* convert tenth of dB volume (-57..6) to master volume register value */
|
||||
int tenthdb2master(int db)
|
||||
{
|
||||
/* +6 to -57dB in 1dB steps == 64 levels = 6 bits */
|
||||
/* 0111111 == +6dB (0x3f) = 63) */
|
||||
/* 0111001 == 0dB (0x39) = 57) */
|
||||
/* 0000001 == -56dB (0x01) = */
|
||||
/* 0000000 == -57dB (0x00) */
|
||||
|
||||
/* 1000000 == Mute (0x40) */
|
||||
|
||||
if (db < VOLUME_MIN) {
|
||||
return 0x40;
|
||||
} else {
|
||||
return((db/10)+57);
|
||||
}
|
||||
}
|
||||
|
||||
/* convert tenth of dB volume (-780..0) to mixer volume register value */
|
||||
int tenthdb2mixer(int db)
|
||||
{
|
||||
if (db < -660) /* 1.5 dB steps */
|
||||
return (2640 - db) / 15;
|
||||
else if (db < -600) /* 0.75 dB steps */
|
||||
return (990 - db) * 2 / 15;
|
||||
else if (db < -460) /* 0.5 dB steps */
|
||||
return (460 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
void audiohw_reset(void);
|
||||
|
||||
#define IPOD_PCM_LEVEL 0x65 /* -6dB */
|
||||
|
|
|
|||
|
|
@ -40,6 +40,36 @@
|
|||
#include "wmcodec.h"
|
||||
#include "wm8975.h"
|
||||
|
||||
/* convert tenth of dB volume (-730..60) to master volume register value */
|
||||
int tenthdb2master(int db)
|
||||
{
|
||||
/* +6 to -73dB 1dB steps (plus mute == 80levels) 7bits */
|
||||
/* 1111111 == +6dB (0x7f) */
|
||||
/* 1111001 == 0dB (0x79) */
|
||||
/* 0110000 == -73dB (0x30 */
|
||||
/* 0101111 == mute (0x2f) */
|
||||
|
||||
if (db < VOLUME_MIN) {
|
||||
return 0x0;
|
||||
} else {
|
||||
return((db/10)+73+0x30);
|
||||
}
|
||||
}
|
||||
|
||||
/* convert tenth of dB volume (-780..0) to mixer volume register value */
|
||||
int tenthdb2mixer(int db)
|
||||
{
|
||||
if (db < -660) /* 1.5 dB steps */
|
||||
return (2640 - db) / 15;
|
||||
else if (db < -600) /* 0.75 dB steps */
|
||||
return (990 - db) * 2 / 15;
|
||||
else if (db < -460) /* 0.5 dB steps */
|
||||
return (460 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
|
||||
void audiohw_reset(void);
|
||||
|
||||
#define IPOD_PCM_LEVEL 0x65 /* -6dB */
|
||||
|
|
|
|||
|
|
@ -19,6 +19,18 @@
|
|||
#ifndef SOUND_H
|
||||
#define SOUND_H
|
||||
|
||||
#ifdef HAVE_UDA1380
|
||||
#include "uda1380.h"
|
||||
#elif defined(HAVE_WM8975) || defined(HAVE_WM8751)
|
||||
#include "wm8975.h"
|
||||
#elif defined(HAVE_WM8758)
|
||||
#include "wm8758.h"
|
||||
#elif defined(HAVE_WM8731) || defined(HAVE_WM8721)
|
||||
#include "wm8731l.h"
|
||||
#elif defined(HAVE_TLV320)
|
||||
#include "tlv320.h"
|
||||
#endif
|
||||
|
||||
enum {
|
||||
SOUND_VOLUME = 0,
|
||||
SOUND_BASS,
|
||||
|
|
|
|||
|
|
@ -20,6 +20,11 @@
|
|||
#ifndef _TLV320_H_
|
||||
#define _TLV320_H_
|
||||
|
||||
#define VOLUME_MIN -730
|
||||
#define VOLUME_MAX 60
|
||||
|
||||
extern tenthdb2master(int db);
|
||||
|
||||
/*** definitions ***/
|
||||
|
||||
extern void audiohw_init(void);
|
||||
|
|
|
|||
|
|
@ -19,6 +19,14 @@
|
|||
|
||||
#ifndef _UDA1380_H
|
||||
#define _UDA1380_H
|
||||
|
||||
/* volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN -840
|
||||
#define VOLUME_MAX 0
|
||||
|
||||
extern tenthdb2master(int db);
|
||||
extern tenthdb2mixer(int db);
|
||||
|
||||
extern void audiohw_reset(void);
|
||||
extern int audiohw_init(void);
|
||||
extern void audiohw_enable_output(bool enable);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,13 @@
|
|||
#ifndef _WM8731L_H
|
||||
#define _WM8731L_H
|
||||
|
||||
/* volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN -730
|
||||
#define VOLUME_MAX 60
|
||||
|
||||
extern int tenthdb2master(int db);
|
||||
extern int tenthdb2mixer(int db);
|
||||
|
||||
extern void audiohw_reset(void);
|
||||
extern int audiohw_init(void);
|
||||
extern void audiohw_enable_output(bool enable);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,13 @@
|
|||
#ifndef _WM8758_H
|
||||
#define _WM8758_H
|
||||
|
||||
/* volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN -570
|
||||
#define VOLUME_MAX 60
|
||||
|
||||
extern int tenthdb2master(int db);
|
||||
extern int tenthdb2mixer(int db);
|
||||
|
||||
extern void audiohw_reset(void);
|
||||
extern int audiohw_init(void);
|
||||
extern void audiohw_enable_output(bool enable);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,13 @@
|
|||
#ifndef _WM8975_H
|
||||
#define _WM8975_H
|
||||
|
||||
/* volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN -730
|
||||
#define VOLUME_MAX 60
|
||||
|
||||
extern int tenthdb2master(int db);
|
||||
extern int tenthdb2mixer(int db);
|
||||
|
||||
extern void audiohw_reset(void);
|
||||
extern int audiohw_init(void);
|
||||
extern void audiohw_enable_output(bool enable);
|
||||
|
|
|
|||
168
firmware/sound.c
168
firmware/sound.c
|
|
@ -24,17 +24,7 @@
|
|||
#ifndef SIMULATOR
|
||||
#include "i2c.h"
|
||||
#include "mas.h"
|
||||
#ifdef HAVE_UDA1380
|
||||
#include "uda1380.h"
|
||||
#elif defined(HAVE_WM8975) || defined(HAVE_WM8751)
|
||||
#include "wm8975.h"
|
||||
#elif defined(HAVE_WM8758)
|
||||
#include "wm8758.h"
|
||||
#elif defined(HAVE_WM8731) || defined(HAVE_WM8721)
|
||||
#include "wm8731l.h"
|
||||
#elif defined(HAVE_TLV320)
|
||||
#include "tlv320.h"
|
||||
#elif CONFIG_CPU == PNX0101
|
||||
#if CONFIG_CPU == PNX0101
|
||||
#include "pnx0101.h"
|
||||
#endif
|
||||
#include "dac.h"
|
||||
|
|
@ -269,161 +259,7 @@ static int tenthdb2reg(int db)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_UDA1380 /* volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN -840
|
||||
#define VOLUME_MAX 0
|
||||
|
||||
/* convert tenth of dB volume (-840..0) to master volume register value */
|
||||
static int tenthdb2master(int db)
|
||||
{
|
||||
if (db < -720) /* 1.5 dB steps */
|
||||
return (2940 - db) / 15;
|
||||
else if (db < -660) /* 0.75 dB steps */
|
||||
return (1110 - db) * 2 / 15;
|
||||
else if (db < -520) /* 0.5 dB steps */
|
||||
return (520 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
/* convert tenth of dB volume (-780..0) to mixer volume register value */
|
||||
static int tenthdb2mixer(int db)
|
||||
{
|
||||
if (db < -660) /* 1.5 dB steps */
|
||||
return (2640 - db) / 15;
|
||||
else if (db < -600) /* 0.75 dB steps */
|
||||
return (990 - db) * 2 / 15;
|
||||
else if (db < -460) /* 0.5 dB steps */
|
||||
return (460 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
#elif defined(HAVE_TLV320)
|
||||
#define VOLUME_MIN -730
|
||||
#define VOLUME_MAX 60
|
||||
|
||||
/* convert tenth of dB volume (-840..0) to master volume register value */
|
||||
static int tenthdb2master(int db)
|
||||
{
|
||||
/* +6 to -73dB 1dB steps (plus mute == 80levels) 7bits */
|
||||
/* 1111111 == +6dB (0x7f) */
|
||||
/* 1111001 == 0dB (0x79) */
|
||||
/* 0110000 == -73dB (0x30 */
|
||||
/* 0101111 == mute (0x2f) */
|
||||
|
||||
if (db < VOLUME_MIN) {
|
||||
return 0x2f;
|
||||
} else {
|
||||
return((db/10)+73+0x30);
|
||||
}
|
||||
}
|
||||
|
||||
#elif defined(HAVE_WM8975) || defined(HAVE_WM8751)
|
||||
/* volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN -730
|
||||
#define VOLUME_MAX 60
|
||||
|
||||
/* convert tenth of dB volume (-730..60) to master volume register value */
|
||||
static int tenthdb2master(int db)
|
||||
{
|
||||
/* +6 to -73dB 1dB steps (plus mute == 80levels) 7bits */
|
||||
/* 1111111 == +6dB (0x7f) */
|
||||
/* 1111001 == 0dB (0x79) */
|
||||
/* 0110000 == -73dB (0x30 */
|
||||
/* 0101111 == mute (0x2f) */
|
||||
|
||||
if (db < VOLUME_MIN) {
|
||||
return 0x0;
|
||||
} else {
|
||||
return((db/10)+73+0x30);
|
||||
}
|
||||
}
|
||||
|
||||
/* convert tenth of dB volume (-780..0) to mixer volume register value */
|
||||
static int tenthdb2mixer(int db)
|
||||
{
|
||||
if (db < -660) /* 1.5 dB steps */
|
||||
return (2640 - db) / 15;
|
||||
else if (db < -600) /* 0.75 dB steps */
|
||||
return (990 - db) * 2 / 15;
|
||||
else if (db < -460) /* 0.5 dB steps */
|
||||
return (460 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
#elif defined(HAVE_WM8758)
|
||||
/* volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN -570
|
||||
#define VOLUME_MAX 60
|
||||
|
||||
/* convert tenth of dB volume (-57..6) to master volume register value */
|
||||
static int tenthdb2master(int db)
|
||||
{
|
||||
/* +6 to -57dB in 1dB steps == 64 levels = 6 bits */
|
||||
/* 0111111 == +6dB (0x3f) = 63) */
|
||||
/* 0111001 == 0dB (0x39) = 57) */
|
||||
/* 0000001 == -56dB (0x01) = */
|
||||
/* 0000000 == -57dB (0x00) */
|
||||
|
||||
/* 1000000 == Mute (0x40) */
|
||||
|
||||
if (db < VOLUME_MIN) {
|
||||
return 0x40;
|
||||
} else {
|
||||
return((db/10)+57);
|
||||
}
|
||||
}
|
||||
|
||||
/* convert tenth of dB volume (-780..0) to mixer volume register value */
|
||||
static int tenthdb2mixer(int db)
|
||||
{
|
||||
if (db < -660) /* 1.5 dB steps */
|
||||
return (2640 - db) / 15;
|
||||
else if (db < -600) /* 0.75 dB steps */
|
||||
return (990 - db) * 2 / 15;
|
||||
else if (db < -460) /* 0.5 dB steps */
|
||||
return (460 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
#elif defined(HAVE_WM8731) || defined(HAVE_WM8721)
|
||||
/* volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN -730
|
||||
#define VOLUME_MAX 60
|
||||
|
||||
/* convert tenth of dB volume (-730..60) to master volume register value */
|
||||
static int tenthdb2master(int db)
|
||||
{
|
||||
/* +6 to -73dB 1dB steps (plus mute == 80levels) 7bits */
|
||||
/* 1111111 == +6dB (0x7f) */
|
||||
/* 1111001 == 0dB (0x79) */
|
||||
/* 0110000 == -73dB (0x30 */
|
||||
/* 0101111 == mute (0x2f) */
|
||||
|
||||
if (db < VOLUME_MIN) {
|
||||
return 0x2f;
|
||||
} else {
|
||||
return((db/10)+0x30+73);
|
||||
}
|
||||
}
|
||||
|
||||
/* convert tenth of dB volume (-780..0) to mixer volume register value */
|
||||
static int tenthdb2mixer(int db)
|
||||
{
|
||||
if (db < -660) /* 1.5 dB steps */
|
||||
return (2640 - db) / 15;
|
||||
else if (db < -600) /* 0.75 dB steps */
|
||||
return (990 - db) * 2 / 15;
|
||||
else if (db < -460) /* 0.5 dB steps */
|
||||
return (460 - db) / 5;
|
||||
else /* 0.25 dB steps */
|
||||
return -db * 2 / 5;
|
||||
}
|
||||
|
||||
#elif defined(HAVE_PP5024_CODEC)
|
||||
#if defined(HAVE_PP5024_CODEC)
|
||||
/* TODO: Work out volume/balance/treble/bass interdependency */
|
||||
#define VOLUME_MIN 0
|
||||
#define VOLUME_MAX 1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue