Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: firmware/export/config/samsungypr0.h
- ===================================================================
- --- firmware/export/config/samsungypr0.h (revision 31464)
- +++ firmware/export/config/samsungypr0.h (working copy)
- @@ -33,7 +33,6 @@
- #define HAVE_LCD_COLOR
- /* define this if the LCD needs to be shutdown */
- -/* TODO: Our framebuffer must be closed... */
- #define HAVE_LCD_SHUTDOWN
- /* define this if you want album art for this target */
- @@ -90,7 +89,6 @@
- //#define HAVE_RTC_RAM
- /* define this if you have a real-time clock */
- -//#define CONFIG_RTC APPLICATION
- #define CONFIG_RTC RTC_AS3514
- #define HAVE_RTC_ALARM
- @@ -122,8 +120,7 @@
- /* #define CONFIG_TUNER SI4700 */
- /* #define HAVE_TUNER_PWR_CTRL*/
- -/*TODO: In R0 there is an interrupt for this (figure out ioctls)*/
- -/* #define HAVE_HEADPHONE_DETECTION */
- +#define HAVE_HEADPHONE_DETECTION
- /* Define current usage levels. */
- /* TODO: to be filled with correct values after implementing power management */
- Index: firmware/SOURCES
- ===================================================================
- --- firmware/SOURCES (revision 31464)
- +++ firmware/SOURCES (working copy)
- @@ -82,6 +82,7 @@
- #endif
- target/hosted/ypr0/ascodec-ypr0.c
- target/hosted/ypr0/powermgmt-ypr0.c
- +target/hosted/ypr0/gpio_ypr0.c
- #endif
- /* Maemo specific files */
- Index: firmware/target/hosted/ypr0/button-ypr0.c
- ===================================================================
- --- firmware/target/hosted/ypr0/button-ypr0.c (revision 31464)
- +++ firmware/target/hosted/ypr0/button-ypr0.c (working copy)
- @@ -28,6 +28,7 @@
- #include "kernel.h"
- #include "system.h"
- #include "button-target.h"
- +#include <gpio_ypr0.h> /* For headphones sense */
- /* R0 physical key codes */
- enum ypr0_buttons {
- @@ -45,6 +46,7 @@
- static int r0_btn_fd = 0;
- +
- /* Samsung keypad driver doesn't allow multiple key combinations :( */
- static enum ypr0_buttons r0_read_key(void)
- {
- @@ -82,6 +84,11 @@
- return key_to_button(r0_read_key());
- }
- +bool headphones_inserted(void)
- +{
- + /* GPIO low - 0 - means headphones inserted */
- + return (gpio_control(MXC_GET_GPIO_DATAIN, GPIO_HEADPHONE_SENSE) == 1) ? false : true;
- +}
- /* Open the keypad device: it is offered by r0Btn.ko module */
- void button_init_device(void)
- @@ -89,6 +96,9 @@
- r0_btn_fd = open("/dev/r0Btn", O_RDONLY);
- if (r0_btn_fd < 0)
- printf("/dev/r0Btn open error!");
- +
- + /* As done in the OF...But it's not necessary */
- + gpio_control(MXC_SET_GPIO_DIRECTION_TO_INPUT, GPIO_HEADPHONE_SENSE);
- }
- #ifdef BUTTON_DRIVER_CLOSE
- Index: firmware/target/hosted/ypr0/button-target.h
- ===================================================================
- --- firmware/target/hosted/ypr0/button-target.h (revision 31464)
- +++ firmware/target/hosted/ypr0/button-target.h (working copy)
- @@ -5,7 +5,7 @@
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- - * $Id: button-target.h 29248 2011-02-08 20:05:25Z thomasjfox $
- + * $Id$
- *
- * Copyright (C) 2011 by Lorenzo Miori
- *
- @@ -25,6 +25,8 @@
- #include <stdbool.h>
- #include "config.h"
- +bool headphones_inserted(void);
- +
- void button_init_device(void);
- void button_close_device(void);
- int button_read_device(void);
- Index: firmware/target/hosted/ypr0/gpio_ypr0.c
- ===================================================================
- --- firmware/target/hosted/ypr0/gpio_ypr0.c (revision 0)
- +++ firmware/target/hosted/ypr0/gpio_ypr0.c (revision 0)
- @@ -0,0 +1,53 @@
- +/***************************************************************************
- + * __________ __ ___.
- + * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- + * \/ \/ \/ \/ \/
- + * $Id: ascodec-target.h 26116 2010-05-17 20:53:25Z funman $
- + *
- + * Module wrapper for GPIO, using /dev/r0GPIO (r0Gpio.ko) of Samsung YP-R0
- + *
- + * Copyright (c) 2011 Lorenzo Miori
- + *
- + * 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 <stdio.h>
- +#include <unistd.h>
- +#include <fcntl.h>
- +#include <gpio_ypr0.h>
- +#include <sys/ioctl.h>
- +
- +static int r0_gpio_dev = 0;
- +
- +void gpio_init(void)
- +{
- + /* to_be_removed ... Had to place the opening there, since otherwise rockbox seemed to be like freezed, if
- + * I put the file opening in the headphones_inserted function. Shouldn't we perhaps also take care about
- + * charger_inserted function?
- + * It seems that opening the device just one time it's a lot better for performances...
- + */
- + r0_gpio_dev = open("/dev/r0GPIO", O_RDONLY);
- + if (r0_gpio_dev < 0)
- + printf("/dev/r0GPIO open error!");
- +}
- +
- +void gpio_close(void)
- +{
- + if (r0_gpio_dev < 0)
- + close(r0_gpio_dev);
- +}
- +
- +int gpio_control(int request, int pin)
- +{
- + return ioctl(r0_gpio_dev, request, &pin);
- +}
- \ No newline at end of file
- Index: firmware/target/hosted/ypr0/gpio_ypr0.h
- ===================================================================
- --- firmware/target/hosted/ypr0/gpio_ypr0.h (revision 0)
- +++ firmware/target/hosted/ypr0/gpio_ypr0.h (revision 0)
- @@ -0,0 +1,57 @@
- +/***************************************************************************
- + * __________ __ ___.
- + * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- + * \/ \/ \/ \/ \/
- + * $Id: ascodec-target.h 26116 2010-05-17 20:53:25Z funman $
- + *
- + * Module wrapper for GPIO, using /dev/r0GPIO (r0Gpio.ko) of Samsung YP-R0
- + *
- + * Copyright (c) 2011 Lorenzo Miori
- + *
- + * 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 GPIO_YPR0_H
- +#define GPIO_YPR0_H
- +
- +/* Defines for the available ioctls for the device */
- +
- +#define MXC_REQUEST_IOMUX 0x400C4700
- +#define MXC_IOMUX_SET_PAD 0x400C4701
- +#define MXC_FREE_IOMUX 0x400C4702
- +#define MXC_SET_GPIO_DIRECTION_TO_OUTPUT 0x400C4703
- +#define MXC_SET_GPIO_DIRECTION_TO_INPUT 0x400C4704
- +#define MXC_SET_GPIO_DATAOUT_TO_1 0x400C4705
- +#define MXC_SET_GPIO_DATAOUT_TO_0 0x400C4706
- +/* The first appears to be 7 in IDA, but it's 8 in a reversed OF lib
- + Maybe, some IDs are to be switched by 1...CHECK THAT!
- +*/
- +/* Perhaps this isn't used... */
- +#define MXC_GET_GPIO_DATAIN_UNKNOWN 0x400C4707
- +/* This one works fine */
- +#define MXC_GET_GPIO_DATAIN 0x400C4708
- +
- +/* Don't know if it is correct...*/
- +#define PINS 145
- +
- +/* Some meaningful pins that are used on R0 */
- +
- +#define GPIO_HEADPHONE_SENSE 5
- +#define GPIO_EXT_PWR_SENSE 26
- +#define GPIO_SD_SENSE 59
- +
- +void gpio_init(void);
- +void gpio_close(void);
- +int gpio_control(int request, int pin);
- +
- +#endif
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement