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:
parent
bd84ff4d78
commit
7cafe7aa2f
2 changed files with 128 additions and 0 deletions
93
firmware/drivers/power.c
Normal file
93
firmware/drivers/power.c
Normal 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
35
firmware/drivers/power.h
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue