mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 12:45:26 -05:00
Added HiFiMAN HM-801 target. FS#12355. This also renames tda1543.{ch} used by HM-60x to dummy_codec.{ch} as it works for PCM1704 used by HM-801.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30891 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
50211e2054
commit
2164aab902
19 changed files with 560 additions and 13 deletions
68
firmware/target/arm/rk27xx/hm801/button-hm801.c
Normal file
68
firmware/target/arm/rk27xx/hm801/button-hm801.c
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2011 Andrew Ryabinin
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "button.h"
|
||||
#include "adc.h"
|
||||
|
||||
void button_init_device(void) {
|
||||
/* setup button gpio as input */
|
||||
GPIO_PCCON &= ~(POWEROFF_BUTTON);
|
||||
}
|
||||
|
||||
int button_read_device(void) {
|
||||
int adc_val = adc_read(ADC_BUTTONS);
|
||||
int button = 0;
|
||||
|
||||
if (adc_val < 480) { /* middle */
|
||||
if (adc_val < 200) { /* 200 - 0 */
|
||||
if (adc_val < 30) {
|
||||
button = BUTTON_UP;
|
||||
} else {
|
||||
button = BUTTON_RIGHT; /* 30 - 200 */
|
||||
}
|
||||
} else { /* 200 - 480 */
|
||||
if (adc_val < 370) {
|
||||
button = BUTTON_SELECT;
|
||||
} else {
|
||||
button = BUTTON_DOWN;
|
||||
}
|
||||
}
|
||||
} else { /* > 480 */
|
||||
if (adc_val < 690) { /* 480 - 690 */
|
||||
if (adc_val < 580) {
|
||||
button = BUTTON_LEFT;
|
||||
} else {
|
||||
button = BUTTON_NEXT;
|
||||
}
|
||||
} else { /* > 680 */
|
||||
if (adc_val < 840) {
|
||||
button = BUTTON_PREV;
|
||||
} else {
|
||||
if (adc_val < 920) {
|
||||
button = BUTTON_PLAY;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return button | (GPIO_PCDR & POWEROFF_BUTTON);
|
||||
}
|
||||
47
firmware/target/arm/rk27xx/hm801/button-target.h
Normal file
47
firmware/target/arm/rk27xx/hm801/button-target.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (C) 2011 Andrew Ryabinin
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
#ifndef _BUTTON_TARGET_H_
|
||||
#define _BUTTON_TARGET_H_
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "config.h"
|
||||
|
||||
void button_init_device(void);
|
||||
int button_read_device(void);
|
||||
|
||||
|
||||
#define BUTTON_UP 0x00000001
|
||||
#define BUTTON_DOWN 0x00000004
|
||||
#define BUTTON_LEFT 0x00000008
|
||||
#define BUTTON_RIGHT 0x00000010
|
||||
#define BUTTON_SELECT 0x00000020
|
||||
#define BUTTON_NEXT 0x00000040
|
||||
#define BUTTON_PREV 0x00000080
|
||||
#define BUTTON_PLAY 0x00000100
|
||||
|
||||
|
||||
#define BUTTON_REMOTE 0
|
||||
|
||||
|
||||
#define POWEROFF_BUTTON 0x02
|
||||
#define POWEROFF_COUNT 30
|
||||
|
||||
#endif /* _BUTTON_TARGET_H_ */
|
||||
49
firmware/target/arm/rk27xx/hm801/power-hm801.c
Normal file
49
firmware/target/arm/rk27xx/hm801/power-hm801.c
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright © 2009 Bertrik Sikken
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
#include <stdbool.h>
|
||||
#include "config.h"
|
||||
#include "inttypes.h"
|
||||
#include "power.h"
|
||||
#include "panic.h"
|
||||
#include "system.h"
|
||||
#include "usb_core.h" /* for usb_charging_maxcurrent_change */
|
||||
|
||||
void power_off(void)
|
||||
{
|
||||
GPIO_PCDR &= ~(1<<0);
|
||||
while(1);
|
||||
}
|
||||
|
||||
void power_init(void)
|
||||
{
|
||||
GPIO_PCDR |= (1<<0);
|
||||
GPIO_PCCON |= (1<<0);
|
||||
}
|
||||
|
||||
unsigned int power_input_status(void)
|
||||
{
|
||||
return (usb_detect() == USB_INSERTED) ? POWER_INPUT_MAIN_CHARGER : POWER_INPUT_NONE;
|
||||
}
|
||||
|
||||
bool charging_state(void)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
60
firmware/target/arm/rk27xx/hm801/powermgmt-hm801.c
Normal file
60
firmware/target/arm/rk27xx/hm801/powermgmt-hm801.c
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/***************************************************************************
|
||||
* __________ __ ___.
|
||||
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||
* \/ \/ \/ \/ \/
|
||||
* $Id$
|
||||
*
|
||||
* Copyright © 2011 Andrew Ryabinin
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
* KIND, either express or implied.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "config.h"
|
||||
#include "adc.h"
|
||||
#include "adc-target.h"
|
||||
#include "powermgmt.h"
|
||||
|
||||
/* Battery voltage calculation and discharge/charge curves for the HiFiMAN HM-801.
|
||||
|
||||
I don't know how to calculate battery voltage, so all values represented here is just
|
||||
values from adc battery channel, not millivolts.
|
||||
Discharge and charge curves have not been calibrated yet.
|
||||
*/
|
||||
|
||||
const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
|
||||
{
|
||||
/* OF power off device when this value reached */
|
||||
430
|
||||
};
|
||||
|
||||
const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
|
||||
{
|
||||
425
|
||||
};
|
||||
|
||||
/* adc values of 0%, 10%, ... 100% when charging disabled */
|
||||
const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
|
||||
{
|
||||
/* TODO: simple uncalibrated curve */
|
||||
{ 425, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520 }
|
||||
};
|
||||
|
||||
/* adc values of 0%, 10%, ... 100% when charging enabled */
|
||||
const unsigned short percent_to_volt_charge[11] =
|
||||
/* TODO: simple uncalibrated curve */
|
||||
{ 425, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520 };
|
||||
|
||||
unsigned int battery_adc_voltage(void)
|
||||
{
|
||||
return adc_read(ADC_BATTERY);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue