forked from len0rd/rockbox
Charger detection for Gigabeat S
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17093 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
d715f79ed6
commit
8c5d552ebd
4 changed files with 47 additions and 3 deletions
|
|
@ -88,6 +88,9 @@ enum mc13783_regs_enum
|
|||
MC13783_NUM_REGS,
|
||||
};
|
||||
|
||||
/* INTERRUPT_STATUS0, INTERRUPT_MASK0, INTERRUPT_SENSE0 */
|
||||
#define MC13783_CHGDET (1 << 6)
|
||||
|
||||
/* INTERRUPT_STATUS1, INTERRUPT_MASK1, INTERRUPT_SENSE1 */
|
||||
#define MC13783_HSL (1 << 0)
|
||||
#define MC13783_ON1B (1 << 3)
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include "debug.h"
|
||||
#include "kernel.h"
|
||||
|
||||
#include "power-imx31.h"
|
||||
#include "button-target.h"
|
||||
|
||||
/* This is all based on communicating with the MC13783 PMU which is on
|
||||
|
|
@ -64,11 +65,15 @@ static __attribute__((noreturn)) void mc13783_interrupt_thread(void)
|
|||
gpio_enable_event(MC13783_GPIO_NUM, MC13783_EVENT_ID);
|
||||
|
||||
/* Check initial states */
|
||||
value = mc13783_read(MC13783_INTERRUPT_SENSE0);
|
||||
set_charger_inserted(value & MC13783_CHGDET);
|
||||
|
||||
value = mc13783_read(MC13783_INTERRUPT_SENSE1);
|
||||
button_power_set_state((value & MC13783_ON1B) == 0);
|
||||
set_headphones_inserted((value & MC13783_ON2B) == 0);
|
||||
|
||||
/* Enable desired PMIC interrupts */
|
||||
mc13783_clear(MC13783_INTERRUPT_MASK0, MC13783_CHGDET);
|
||||
mc13783_clear(MC13783_INTERRUPT_MASK1, MC13783_ON1B | MC13783_ON2B);
|
||||
|
||||
while (1)
|
||||
|
|
@ -78,12 +83,19 @@ static __attribute__((noreturn)) void mc13783_interrupt_thread(void)
|
|||
mc13783_read_regset(status_regs, pending, 2);
|
||||
mc13783_write_regset(status_regs, pending, 2);
|
||||
|
||||
#if 0
|
||||
|
||||
if (pending[0])
|
||||
{
|
||||
/* Handle ...PENDING0 */
|
||||
if (pending[0] & MC13783_CHGDET)
|
||||
{
|
||||
value = mc13783_read(MC13783_INTERRUPT_SENSE0);
|
||||
|
||||
if (pending[0] & MC13783_CHGDET)
|
||||
set_charger_inserted(value & MC13783_CHGDET);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if (pending[1])
|
||||
{
|
||||
|
|
|
|||
|
|
@ -26,13 +26,21 @@
|
|||
|
||||
#ifndef SIMULATOR
|
||||
|
||||
static bool charger_detect = false;
|
||||
|
||||
void power_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
/* This is called from the mc13783 interrupt thread */
|
||||
void set_charger_inserted(bool inserted)
|
||||
{
|
||||
charger_detect = inserted;
|
||||
}
|
||||
|
||||
bool charger_inserted(void)
|
||||
{
|
||||
return false;
|
||||
return charger_detect;
|
||||
}
|
||||
|
||||
/* Returns true if the unit is charging the batteries. */
|
||||
|
|
|
|||
21
firmware/target/arm/imx31/gigabeat-s/power-imx31.h
Normal file
21
firmware/target/arm/imx31/gigabeat-s/power-imx31.h
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id:$
|
||||
*
|
||||
* Copyright (C) 2008 by Nils Wallménius
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void set_charger_inserted(bool inserted);
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue