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