1
0
Fork 0
forked from len0rd/rockbox

First version

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1333 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Linus Nielsen Feltzing 2002-07-04 16:09:23 +00:00
parent bd84ff4d78
commit 7cafe7aa2f
2 changed files with 128 additions and 0 deletions

93
firmware/drivers/power.c Normal file
View file

@ -0,0 +1,93 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Linus Nielsen Feltzing
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "sh7034.h"
#include <stdbool.h>
#include "config.h"
#include "adc.h"
#include "power.h"
#ifndef SIMULATOR
bool charger_inserted(void)
{
#ifdef ARCHOS_RECORDER
return adc_read(ADC_BATTERY) > 0x200;
#else
return (PADR & 1) == 0;
#endif
}
/* Returns battery level in percent */
int battery_level(void)
{
int level;
level = adc_read(ADC_UNREG_POWER) - BATTERY_LEVEL_SHUTDOWN;
if(level < 0)
level = 0;
if(level > BATTERY_LEVEL_FULL)
level = BATTERY_LEVEL_FULL;
return (level * 100) / BATTERY_RANGE;
}
void charger_enable(bool on)
{
#ifdef ARCHOS_RECORDER
if(on)
PBDR &= ~0x20;
else
PBDR |= 0x20;
#else
on = on;
#endif
}
void ide_power_enable(bool on)
{
#ifdef ARCHOS_RECORDER
if(on)
PADR |= 0x20;
else
PADR &= ~0x20;
#else
on = on;
#endif
}
#else
bool charger_inserted(void)
{
return false;
}
/* Returns battery level in percent */
int battery_level(void)
{
return 100;
}
void charger_enable(bool on)
{
on = on;
}
#endif /* SIMULATOR */

35
firmware/drivers/power.h Normal file
View file

@ -0,0 +1,35 @@
/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2002 by Linus Nielsen Feltzing
*
* All files in this archive are subject to the GNU General Public License.
* See the file COPYING in the source tree root for full license agreement.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#ifndef _POWER_H_
#define _POWER_H_
#define BATTERY_LEVEL_SHUTDOWN (4500000 / BATTERY_SCALE_FACTOR) /* 4.5V */
#define BATTERY_LEVEL_DANGEROUS (4750000 / BATTERY_SCALE_FACTOR) /* 4.75V */
#define BATTERY_LEVEL_FULL (5550000 / BATTERY_SCALE_FACTOR) /* 5.55V */
#define BATTERY_RANGE (BATTERY_LEVEL_FULL - BATTERY_LEVEL_SHUTDOWN)
bool charger_inserted(void);
void charger_enable(bool on);
void ide_power_enable(bool on);
/* Returns battery level in percent */
int battery_level(void);
#endif