summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.cpp124
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.h47
2 files changed, 85 insertions, 86 deletions
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp
index ebe1949..1894e15 100644
--- a/libopie2/opiecore/device/odevice_zaurus.cpp
+++ b/libopie2/opiecore/device/odevice_zaurus.cpp
@@ -2,5 +2,5 @@
                This file is part of the Opie Project
              Copyright (C) The Opie Team <opie-devel@handhelds.org>
- =.
+ =. Copyright (C) 2003-2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
.=l.
           .>+-=
@@ -108,5 +108,6 @@ struct z_button z_buttons_c700 [] = {
// Zaurus-Collie (SA-model w/ 320x240 lcd, for SL5500 and SL5000)
// Zaurus-Poodle (PXA-model w/ 320x240 lcd, for SL5600)
-// Zaurus-Corgi (PXA-model w/ 640x480 lcd, for C700, C750, C760, and C860)
+// Zaurus-Corgi (PXA-model w/ 640x480 lcd, for C700, C750, C760, C860, C3000)
+// Zaurus-Tosa (PXA-model w/ 480x640 lcd, for SL6000)
//
// Only question right now is: Do we really need to do it? Because as soon
@@ -135,5 +136,5 @@ void Zaurus::init(const QString& cpu_info)
// sysver already gathered
- // Openzaurus sometimes uses the embedix kernel, check if this is one
+ // OpenZaurus sometimes uses the embedix kernel, check if this is one
FILE *uname = popen("uname -r", "r");
QFile f;
@@ -168,5 +169,5 @@ void Zaurus::init(const QString& cpu_info)
} else if ( model == "SHARP Husky" ) {
d->m_model = Model_Zaurus_SLC7x0;
- d->m_modelstr = "Zaurus SL-C760";
+ d->m_modelstr = "Zaurus SL-C760 or SL-C860";
} else if ( model == "SHARP Poodle" ) {
d->m_model = Model_Zaurus_SLB600;
@@ -184,6 +185,6 @@ void Zaurus::init(const QString& cpu_info)
// set initial rotation
- switch ( d->m_model ) {
- case Model_Zaurus_SL6000:
+ switch( d->m_model ) {
+ case Model_Zaurus_SL6000: // fallthrough
case Model_Zaurus_SLA300:
d->m_rotation = Rot0;
@@ -193,6 +194,6 @@ void Zaurus::init(const QString& cpu_info)
d->m_direction = direction();
break;
- case Model_Zaurus_SLB600:
- case Model_Zaurus_SL5500:
+ case Model_Zaurus_SLB600: // fallthrough
+ case Model_Zaurus_SL5500: // fallthrough
case Model_Zaurus_SL5000:
default:
@@ -241,74 +242,12 @@ void Zaurus::initButtons()
}
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-
-//#include <asm/sharp_char.h> // including kernel headers is evil ...
-
-#define SHARP_DEV_IOCTL_COMMAND_START 0x5680
-
-#define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
-#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START)
-
-#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */
-#define SHARP_BUZ_KEYSOUND 2 /* key sound */
-#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */
-/* --- for SHARP_BUZZER device --- */
-
-//#define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
-//#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START)
-
-#define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1)
-#define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2)
-#define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3)
-#define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4)
-#define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5)
-
-//#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */
-//#define SHARP_BUZ_KEYSOUND 2 /* key sound */
-
-//#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */
-//#define SHARP_PDA_WARNSOUND 4 /* warning occurred */
-//#define SHARP_PDA_ERRORSOUND 5 /* error occurred */
-//#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */
-//#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */
-//#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */
-//#define SHARP_PDA_APPSTART 9 /* application start */
-//#define SHARP_PDA_APPQUIT 10 /* application ends */
-
-//#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */
-//#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */
-//#define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */
-//#define SHARP_BUZ_GOT_MAIL 14 /* mail sound */
-//
-
-#define SHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
-#define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1)
-
-#define SHARP_IOCTL_GET_ROTATION 0x413c
typedef struct sharp_led_status {
-int which; /* select which LED status is wanted. */
-int status; /* set new led status if you call SHARP_LED_SETSTATUS */
+ int which; /* select which LED status is wanted. */
+ int status; /* set new led status if you call SHARP_LED_SETSTATUS */
} sharp_led_status;
-#define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */
-
-#define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */
-#define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */
-#define LED_MAIL_UNREAD_MAIL_EX 2 /* for SHARP_LED_MAIL_EXISTS */
-
-// #include <asm/sharp_apm.h> // including kernel headers is evil ...
-
-#define APM_IOCGEVTSRC OD_IOR( 'A', 203, int )
-#define APM_IOCSEVTSRC OD_IORW( 'A', 204, int )
-#define APM_EVT_POWER_BUTTON (1 << 0)
-
-#define FL_IOCTL_STEP_CONTRAST 100
-
-
-void Zaurus::buzzer ( int sound )
+void Zaurus::buzzer( int sound )
{
#ifndef QT_NO_SOUND
@@ -317,5 +256,6 @@ void Zaurus::buzzer ( int sound )
// Not all devices have real sound
if ( d->m_model == Model_Zaurus_SLC7x0
- || d->m_model == Model_Zaurus_SLB600 ){
+ || d->m_model == Model_Zaurus_SLB600
+ || d->m_model == Model_Zaurus_SL6000 ) {
switch ( sound ){
@@ -344,5 +284,5 @@ void Zaurus::buzzer ( int sound )
if ( snd && snd->isFinished() ){
changeMixerForAlarm( 0, "/dev/sound/mixer", snd );
- snd-> play();
+ snd->play();
} else if( !snd ) {
int fd = ::open ( "/dev/sharp_buz", O_WRONLY|O_NONBLOCK );
@@ -360,15 +300,15 @@ void Zaurus::buzzer ( int sound )
void Zaurus::playAlarmSound()
{
- buzzer ( SHARP_BUZ_SCHEDULE_ALARM );
+ buzzer( SHARP_BUZ_SCHEDULE_ALARM );
}
void Zaurus::playTouchSound()
{
- buzzer ( SHARP_BUZ_TOUCHSOUND );
+ buzzer( SHARP_BUZ_TOUCHSOUND );
}
void Zaurus::playKeySound()
{
- buzzer ( SHARP_BUZ_KEYSOUND );
+ buzzer( SHARP_BUZ_KEYSOUND );
}
@@ -465,6 +405,5 @@ bool Zaurus::setSoftSuspend ( bool soft )
}
-
-bool Zaurus::setDisplayBrightness ( int bright )
+bool Zaurus::setDisplayBrightness( int bright )
{
//qDebug( "Zaurus::setDisplayBrightness( %d )", bright );
@@ -485,5 +424,5 @@ bool Zaurus::setDisplayBrightness ( int bright )
int value = ( bright == 1 ) ? 1 : static_cast<int>( bright * ( 17.0 / 255.0 ) );
char writeCommand[100];
- const int count = sprintf( writeCommand, "0x%x\n", value );
+ const int count = sprintf( writeCommand, "%x\n", value );
res = ( ::write ( fd, writeCommand, count ) != -1 );
::close ( fd );
@@ -492,4 +431,19 @@ bool Zaurus::setDisplayBrightness ( int bright )
}
else
+ if ( d->m_model == Model_Zaurus_SL6000 )
+ {
+ //qDebug( "using special treatment for devices with the tosa backlight interface" );
+ // special treatment for devices with the tosa backlight interface
+ if (( fd = ::open ( "/proc/driver/fl/tosa-bl", O_WRONLY )) >= 0 )
+ {
+ int value = ( bright == 1 ) ? 1 : static_cast<int>( bright * ( 17.0 / 255.0 ) );
+ char writeCommand[100];
+ const int count = sprintf( writeCommand, "%x\n", value );
+ res = ( ::write ( fd, writeCommand, count ) != -1 );
+ ::close ( fd );
+ }
+ return res;
+ }
+ else
{
// standard treatment for devices with the dumb embedix frontlight interface
@@ -615,7 +569,13 @@ int Zaurus::displayBrightnessResolution() const
{
if (m_embedix)
- return d->m_model == Model_Zaurus_SLC7x0 ? 18 : 5;
+ {
+ if ( d->m_model == Model_Zaurus_SLC7x0 ) return 18;
+ if ( d->m_model == Model_Zaurus_SL6000 ) return 18;
+ return 5;
+ }
else
+ {
return 256;
+ }
}
diff --git a/libopie2/opiecore/device/odevice_zaurus.h b/libopie2/opiecore/device/odevice_zaurus.h
index 76a40d6..dc21546 100644
--- a/libopie2/opiecore/device/odevice_zaurus.h
+++ b/libopie2/opiecore/device/odevice_zaurus.h
@@ -2,5 +2,5 @@
                This file is part of the Opie Project
              Copyright (C) The Opie Team <opie-devel@handhelds.org>
- =.
+ =. Copyright (C) 2003-2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
.=l.
           .>+-=
@@ -38,7 +38,5 @@
// _IO and friends are only defined in kernel headers ...
-
#define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 ))
-
#define OD_IO(type,number) OD_IOC(0,type,number,0)
#define OD_IOW(type,number,size) OD_IOC(1,type,number,sizeof(size))
@@ -46,4 +44,46 @@
#define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size))
+// Audio
+#define SHARP_DEV_IOCTL_COMMAND_START 0x5680
+
+#define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
+#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START)
+
+#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */
+#define SHARP_BUZ_KEYSOUND 2 /* key sound */
+#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */
+
+#define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1)
+#define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2)
+#define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3)
+#define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4)
+#define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5)
+
+// LED
+#define SHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
+#define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1)
+#define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */
+
+#define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */
+#define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */
+#define LED_MAIL_UNREAD_MAIL_EX 2 /* for SHARP_LED_MAIL_EXISTS */
+
+// Rotation and Power Management
+#define SHARP_IOCTL_GET_ROTATION 0x413c
+
+#define APM_IOCGEVTSRC OD_IOR( 'A', 203, int )
+#define APM_IOCSEVTSRC OD_IORW( 'A', 204, int )
+#define APM_EVT_POWER_BUTTON (1 << 0)
+
+// Brightness
+#define FL_IOCTL_STEP_CONTRAST 100
+
+#define CORGI_TOSA_BL_IOCTL_ON 1
+#define CORGI_TOSA_BL_IOCTL_OFF 2
+#define CORGI_TOSA_BL_IOCTL_STEP_CONTRAST 100
+#define CORGI_TOSA_BL_IOCTL_GET_STEP_CONTRAST 101
+#define CORGI_TOSA_BL_IOCTL_GET_STEP 102
+#define CORGI_BL_PROC_DEVICE corgi-bl
+#define TOSA_BL_PROC_DEVICE tosa-bl
namespace Opie {
@@ -52,5 +92,4 @@ namespace Internal {
class Zaurus : public ODevice
{
-
protected:
virtual void init(const QString&);