rockbox/firmware/target/arm/as3525/sansa-clipplus/button-clip.c
William Wilgus 6a568761c8 CLIPPLUS -- Remove un-needed handling for power button button button_read_device()
switching GPIOB in order to read GPIOD96)
(power button) is apparently unneeded

Change-Id: I1fbf13f67f938806086754cdd5e389ef6746ae5f
2018-07-25 06:01:56 +02:00

80 lines
2.4 KiB
C

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
* $Id$
*
* Copyright (C) 2008 François Dinel
* Copyright © 2008-2009 Rafaël Carré
*
* 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 "button.h"
#include "as3525v2.h"
#include "kernel.h"
void button_init_device(void)
{
/* Set pins to input for reading buttons */
GPIOC_DIR = 0; /* All C pins input */
GPIOA_DIR &= ~(1<<1|1<<6|1<<7); /* Pins A1,A6,A7 input */
/* OF does not set D6 to input */
GPIOB_DIR |= (1<<6); /* Pin B6 output */
GPIOB_DIR |= (1<<0); /* Pin B0 set output */
}
int button_read_device(void)
{
int buttons = 0;
/* Buttons do not appear to need reset */
/* D6 does not appear to need special handling */
#if 0
GPIOB_PIN(0) = 1; /* set B0 */
int delay = 500;
do {
asm volatile("nop\n");
} while (delay--);
#endif
if GPIOD_PIN(6) /* read D6 */
buttons |= BUTTON_POWER;
#if 0
GPIOB_PIN(0) = 0; /* unset B0 */
delay = 240;
do {
asm volatile("nop\n");
} while (delay--);
#endif
if GPIOA_PIN(1)
buttons |= BUTTON_HOME;
if GPIOA_PIN(6)
buttons |= BUTTON_VOL_DOWN;
if GPIOA_PIN(7)
buttons |= BUTTON_VOL_UP;
if GPIOC_PIN(1)
buttons |= BUTTON_DOWN;
if GPIOC_PIN(2)
buttons |= BUTTON_UP;
if GPIOC_PIN(3)
buttons |= BUTTON_LEFT;
if GPIOC_PIN(4)
buttons |= BUTTON_SELECT;
if GPIOC_PIN(5)
buttons |= BUTTON_RIGHT;
return buttons;
}