forked from Imagelibrary/rtems
Merge branch 'master' of ssh://git.rtems.org/data/git/rtems
This commit is contained in:
@@ -314,6 +314,7 @@ static rtems_status_code ioctl_read_channel(void *buf,
|
|||||||
unsigned int chan, int mono)
|
unsigned int chan, int mono)
|
||||||
{
|
{
|
||||||
unsigned int *val = (unsigned int *)buf;
|
unsigned int *val = (unsigned int *)buf;
|
||||||
|
int mic_boost;
|
||||||
int codec;
|
int codec;
|
||||||
int left, right;
|
int left, right;
|
||||||
|
|
||||||
@@ -326,12 +327,14 @@ static rtems_status_code ioctl_read_channel(void *buf,
|
|||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
if (mono) {
|
if (mono) {
|
||||||
right = left = 100-(((codec & 0x1f) + 1)*100)/32;
|
left = 100-(((codec & 0x1f) + 1)*100)/32;
|
||||||
|
mic_boost = (codec & (1 << 6)) >> 6;
|
||||||
|
*val = left | mic_boost << 8;
|
||||||
} else {
|
} else {
|
||||||
right = 100-(((codec & 0x1f) + 1)*100)/32;
|
right = 100-(((codec & 0x1f) + 1)*100)/32;
|
||||||
left = 100-((((codec & 0x1f00) >> 8) + 1)*100)/32;
|
left = 100-((((codec & 0x1f00) >> 8) + 1)*100)/32;
|
||||||
}
|
|
||||||
*val = left | (right << 8);
|
*val = left | (right << 8);
|
||||||
|
}
|
||||||
return RTEMS_SUCCESSFUL;
|
return RTEMS_SUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -339,21 +342,23 @@ static rtems_status_code ioctl_write_channel(void *buf,
|
|||||||
unsigned int chan, int mono)
|
unsigned int chan, int mono)
|
||||||
{
|
{
|
||||||
unsigned int *val = (unsigned int *)buf;
|
unsigned int *val = (unsigned int *)buf;
|
||||||
|
int mic_boost;
|
||||||
int left, right;
|
int left, right;
|
||||||
int codec;
|
int codec;
|
||||||
rtems_status_code sc;
|
rtems_status_code sc;
|
||||||
|
|
||||||
left = *val & 0xff;
|
left = *val & 0xff;
|
||||||
left = (left*32)/100 - 1;
|
left = (left*32)/100 - 1;
|
||||||
if(left < 0)
|
if (left < 0)
|
||||||
left = 0;
|
left = 0;
|
||||||
|
|
||||||
if (mono)
|
if (mono) {
|
||||||
|
mic_boost = *val >> 8;
|
||||||
right = 31;
|
right = 31;
|
||||||
else {
|
} else {
|
||||||
right = (*val >> 8) & 0xff;
|
right = (*val >> 8) & 0xff;
|
||||||
right = (right*32)/100 - 1;
|
right = (right*32)/100 - 1;
|
||||||
if(right < 0)
|
if (right < 0)
|
||||||
right = 0;
|
right = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -363,6 +368,13 @@ static rtems_status_code ioctl_write_channel(void *buf,
|
|||||||
else
|
else
|
||||||
codec = (31-left) | ((31-right) << 8);
|
codec = (31-left) | ((31-right) << 8);
|
||||||
|
|
||||||
|
if (mono) {
|
||||||
|
if (mic_boost)
|
||||||
|
codec |= (1 << 6);
|
||||||
|
else
|
||||||
|
codec &= ~(1 << 6);
|
||||||
|
}
|
||||||
|
|
||||||
if (!write_cr(chan, codec))
|
if (!write_cr(chan, codec))
|
||||||
sc = RTEMS_UNSATISFIED;
|
sc = RTEMS_UNSATISFIED;
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -2039,18 +2039,23 @@ static void
|
|||||||
rtems_bdbuf_check_read_ahead_trigger (rtems_disk_device *dd,
|
rtems_bdbuf_check_read_ahead_trigger (rtems_disk_device *dd,
|
||||||
rtems_blkdev_bnum block)
|
rtems_blkdev_bnum block)
|
||||||
{
|
{
|
||||||
if (dd->read_ahead.trigger == block
|
if (bdbuf_cache.read_ahead_task != 0
|
||||||
|
&& dd->read_ahead.trigger == block
|
||||||
&& !rtems_bdbuf_is_read_ahead_active (dd))
|
&& !rtems_bdbuf_is_read_ahead_active (dd))
|
||||||
{
|
{
|
||||||
rtems_status_code sc;
|
rtems_status_code sc;
|
||||||
rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;
|
rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;
|
||||||
|
|
||||||
rtems_chain_append_unprotected (chain, &dd->read_ahead.node);
|
if (rtems_chain_is_empty (chain))
|
||||||
|
{
|
||||||
sc = rtems_event_send (bdbuf_cache.read_ahead_task,
|
sc = rtems_event_send (bdbuf_cache.read_ahead_task,
|
||||||
RTEMS_BDBUF_READ_AHEAD_WAKE_UP);
|
RTEMS_BDBUF_READ_AHEAD_WAKE_UP);
|
||||||
if (sc != RTEMS_SUCCESSFUL)
|
if (sc != RTEMS_SUCCESSFUL)
|
||||||
rtems_fatal_error_occurred (RTEMS_BLKDEV_FATAL_BDBUF_RA_WAKE_UP);
|
rtems_fatal_error_occurred (RTEMS_BLKDEV_FATAL_BDBUF_RA_WAKE_UP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtems_chain_append_unprotected (chain, &dd->read_ahead.node);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user