mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 10:07:38 -04:00
85 lines
2.6 KiB
C
85 lines
2.6 KiB
C
/***************************************************************************
|
|
* __________ __ ___.
|
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
* \/ \/ \/ \/ \/
|
|
* $Id$
|
|
*
|
|
* Copyright (C) 2025 by Aidan MacDonald
|
|
*
|
|
* 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 "gpio-stm32h7.h"
|
|
|
|
void button_init_device(void)
|
|
{
|
|
}
|
|
|
|
int button_read_device(void)
|
|
{
|
|
int buttons = 0;
|
|
|
|
/* Most buttons are active low, so invert the read */
|
|
uint32_t ga = ~REG_GPIO_IDR(GPIO_A);
|
|
uint32_t gb = ~REG_GPIO_IDR(GPIO_B);
|
|
uint32_t gc = ~REG_GPIO_IDR(GPIO_C);
|
|
uint32_t gd = ~REG_GPIO_IDR(GPIO_D);
|
|
uint32_t gf = ~REG_GPIO_IDR(GPIO_F);
|
|
uint32_t gh = ~REG_GPIO_IDR(GPIO_H);
|
|
|
|
if (ga & BIT_N(GPION_PIN(GPIO_BUTTON_A)))
|
|
buttons |= BUTTON_A;
|
|
if (ga & BIT_N(GPION_PIN(GPIO_BUTTON_B)))
|
|
buttons |= BUTTON_B;
|
|
if (ga & BIT_N(GPION_PIN(GPIO_BUTTON_X)))
|
|
buttons |= BUTTON_X;
|
|
if (ga & BIT_N(GPION_PIN(GPIO_BUTTON_Y)))
|
|
buttons |= BUTTON_Y;
|
|
|
|
if (!(gb & BIT_N(GPION_PIN(GPIO_BUTTON_SELECT))))
|
|
buttons |= BUTTON_SELECT;
|
|
if (gb & BIT_N(GPION_PIN(GPIO_BUTTON_UP)))
|
|
buttons |= BUTTON_UP;
|
|
if (gb & BIT_N(GPION_PIN(GPIO_BUTTON_VOL_DOWN)))
|
|
buttons |= BUTTON_VOL_DOWN;
|
|
|
|
if (gc & BIT_N(GPION_PIN(GPIO_BUTTON_RIGHT)))
|
|
buttons |= BUTTON_RIGHT;
|
|
|
|
if (gd & BIT_N(GPION_PIN(GPIO_BUTTON_START)))
|
|
buttons |= BUTTON_START;
|
|
if (gd & BIT_N(GPION_PIN(GPIO_BUTTON_DOWN)))
|
|
buttons |= BUTTON_DOWN;
|
|
if (gd & BIT_N(GPION_PIN(GPIO_BUTTON_LEFT)))
|
|
buttons |= BUTTON_LEFT;
|
|
|
|
if (!(gf & BIT_N(GPION_PIN(GPIO_BUTTON_POWER))))
|
|
buttons |= BUTTON_POWER;
|
|
|
|
if (gh & BIT_N(GPION_PIN(GPIO_BUTTON_VOL_UP)))
|
|
buttons |= BUTTON_VOL_UP;
|
|
if (gh & BIT_N(GPION_PIN(GPIO_BUTTON_HOLD)))
|
|
buttons |= BUTTON_HOLD;
|
|
|
|
return buttons;
|
|
}
|
|
|
|
bool headphones_inserted(void)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool lineout_inserted(void)
|
|
{
|
|
return false;
|
|
}
|