Index: haretconsole/regs_misc.py
===================================================================
RCS file: /cvs/haret/haretconsole/regs_misc.py,v
retrieving revision 1.6
diff -u -r1.6 regs_misc.py
--- haretconsole/regs_misc.py 16 Mar 2008 00:37:26 -0000 1.6
+++ haretconsole/regs_misc.py 29 Mar 2008 23:25:39 -0000
@@ -23,7 +23,7 @@
out = {}
for i in range(count):
char = chr(ord('A')+i+start)
- out[base+2*i] = ("cpld" + char, regOneBits("C" + char))
+ out[base+2*i] = ("cpld_" + char, regOneBits("C" + char))
return out
Index: img/haret.ico
===================================================================
RCS file: /cvs/haret/img/haret.ico,v
retrieving revision 1.1
diff -u -r1.1 haret.ico
Binary files /tmp/cvsTW2tP3 and haret.ico differ
Index: src/aticmds.cpp
===================================================================
RCS file: /cvs/haret/src/aticmds.cpp,v
retrieving revision 1.2
diff -u -r1.2 aticmds.cpp
--- src/aticmds.cpp 14 Nov 2007 00:44:07 -0000 1.2
+++ src/aticmds.cpp 29 Mar 2008 23:25:39 -0000
@@ -181,3 +181,55 @@
REG_CMD(AtiAvail, "ATIDBG", atidbg,
"ATIDBG\n"
" Return info on ATI FB using ati dll.")
+
+static void
+atipwrmode(const char *cmd, const char *args)
+{
+ struct Asic *asic;
+ struct Ctx *ctx;
+
+ DevInfo devinfo;
+
+ uint32 devnum, val;
+ if (!get_expression(&args, &devnum) || !get_expression(&args, &val)) {
+ ScriptError("Expected <devnum> <value>");
+ return;
+ }
+
+ Output ("trying ATI device=%d PWR Mode =%d\n", devnum, val);
+
+ int ret = late_AhiInit(0x0); /* 0x11, !0x100 */
+
+ ret = late_AhiDevEnum(&asic, &devinfo, 0);
+ Output ("ATI asic* =0x%p / 0x%8.8x ret=%d\n", asic, memVirtToPhys((uint32)asic),ret);
+
+#if 0
+ switch (devnum)
+ {
+ case 2:
+ ret = late_AhiDevOpen(&ctx, asic, "USB", 0);
+ Output ("ATI USB ctx* =0x%p / 0x%8.8x ret=%d\n", ctx, memVirtToPhys((uint32)ctx),ret);
+ if (!ret) return;
+ break;
+ case 3:
+ ret = late_AhiDevOpen(&ctx, asic, "SD", 0);
+ Output ("ATI SD ctx* =0x%p / 0x%8.8x ret=%d\n", ctx, memVirtToPhys((uint32)ctx),ret);
+ if (!ret) return;
+ break;
+ default:
+ Output ("unknown ATI device=%d\n", devnum);
+ return;
+ }
+#endif
+
+ ret = late_AhiDevOpen(&ctx, asic, "haret", 2);
+ Output ("ATI ctx* =0x%p / 0x%8.8x ret=%d\n", ctx, memVirtToPhys((uint32)ctx),ret);
+
+ late_AhiPwrModeSet(ctx, devnum, val, 0);
+
+ late_AhiDevClose(ctx);
+
+}
+REG_CMD(AtiAvail, "ATIPWRMODE", atipwrmode,
+ "ATIPWRMODE\n"
+ " Change the power mode for ATI devices using ati dll.")
Index: src/wincmds.cpp
===================================================================
RCS file: /cvs/haret/src/wincmds.cpp,v
retrieving revision 1.16
diff -u -r1.16 wincmds.cpp
--- src/wincmds.cpp 20 Jan 2008 01:29:15 -0000 1.16
+++ src/wincmds.cpp 29 Mar 2008 23:25:39 -0000
@@ -6,9 +6,15 @@
*/
#include <windows.h> // Sleep
+#include <winioctl.h> // ioctl()
#include <time.h> // time
#include "pwinuser.h" // NLedSetDevice
#include "nled.h" // NLED_SETTINGS_INFO
+#include "bt.h" // BTH_
+#include "ioctl.h" // IOCTL_
+#include "powerm.h" // IOCTL_
+
+#include "memory.h" // ???
#include "xtypes.h" // uint32
#include "output.h" // Output
@@ -204,3 +210,261 @@
REG_CMD(0, "SETLCD", LCDonoff,
"SETLCD <state>\n"
" Set the LCD power state (1=on, 2=standby, 3=suspend, 4=off)")
+
+LATE_LOAD(BthSetMode, "bthutil")
+
+static int BTHAvail() {
+ return !!late_BthSetMode;
+}
+
+static void BTctl (const char *cmd, const char *args)
+{
+ uint32 state;
+
+ int ret;
+
+ if (!get_expression(&args, &state)) {
+ ScriptError("Expected <state>");
+ return;
+ }
+
+ HANDLE hbag0 = CreateFile(L"BAG0:",0,0,NULL,OPEN_EXISTING,0,NULL);
+
+ if (!hbag0)
+ {
+ ScriptError("can't open BAG0:");
+ return;
+ }
+
+ switch (state)
+ {
+#if 0
+ case 0:
+ ret=DeviceIoControl(hbag0,IOCTL_AG_CLOSE_AUDIO,NULL,0,NULL,0,NULL,NULL);
+ if (!ret)
+ {
+ ScriptError("err: close_audio('BAG0:')");
+ return;
+ }
+ break;
+ case 1:
+ ret=DeviceIoControl(hbag0,IOCTL_AG_OPEN_AUDIO,NULL,0,NULL,0,NULL,NULL);
+ if (!ret)
+ {
+ ScriptError("err: open_audio('BAG0:')");
+ return;
+ }
+ break;
+#endif
+ case 10:
+ ret=DeviceIoControl(hbag0,IOCTL_SERVICE_STOP,NULL,0,NULL,0,NULL,NULL);
+ if (!ret)
+ {
+ ScriptError("err: service_stop('BAG0:')");
+ return;
+ }
+ break;
+ case 11:
+ ret=DeviceIoControl(hbag0,IOCTL_SERVICE_START,NULL,0,NULL,0,NULL,NULL);
+ if (!ret)
+ {
+ ScriptError("err: service_start('BAG0:')");
+ return;
+ }
+ break;
+ case 20:
+ ret=late_BthSetMode(BTH_POWER_OFF);
+ if (!ret)
+ {
+ ScriptError("err: bthsetmode(%d) poweroff",state);
+ return;
+ }
+ else
+ Output("bthsetmode(%d) poweroff",state);
+ break;
+ case 21:
+ ret=late_BthSetMode(BTH_CONNECTABLE);
+ if (!ret)
+ {
+ ScriptError("err: bthsetmode(%d) connectable",state);
+ return;
+ }
+ else
+ Output("bthsetmode(%d) connectable",state);
+ break;
+ case 22:
+ ret=late_BthSetMode(BTH_DISCOVERABLE);
+ if (!ret)
+ {
+ ScriptError("err: bthsetmode(%d) discoverable",state);
+ return;
+ }
+ else
+ Output("bthsetmode(%d) discoverable",state);
+ break;
+ }
+
+
+ CloseHandle(hbag0);
+
+ return;
+}
+
+REG_CMD(BTHAvail, "BTCTL", BTctl,
+ "BTCTL <state>\n"
+ " Set the BT control state (0=open audio, 1=close audio, 10=stop, 11=start, 20=pwroff, 21=connectable, 22=discoverable)")
+
+static void IRonoff (const char *cmd, const char *args)
+{
+ uint32 state;
+
+ int ret;
+
+ if (!get_expression(&args, &state)) {
+ ScriptError("Expected <state>");
+ return;
+ }
+
+ HANDLE hobx0 = CreateFile(L"OBX0:", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
+
+ if (!hobx0)
+ {
+ ScriptError("can't open OBX0:");
+ return;
+ }
+
+ switch (state)
+ {
+ case 0:
+ ret=DeviceIoControl(hobx0, IOCTL_SERVICE_STOP, 0, 0, 0, 0, NULL, 0);
+ if (!ret)
+ {
+ ScriptError("IR_ioctl(%d) stop failed",state);
+ return;
+ }
+ else
+ Output("IR_ioctl(%d) stop",state);
+ break;
+ case 1:
+ ret=DeviceIoControl(hobx0, IOCTL_SERVICE_START, 0, 0, 0, 0, NULL, 0);
+ if (!ret)
+ {
+ ScriptError("IR_ioctl(%d) start failed",state);
+ return;
+ }
+ else
+ Output("IR_ioctl(%d) start",state);
+ break;
+ }
+
+ CloseHandle(hobx0);
+
+ return;
+}
+
+REG_CMD(0, "IRCTL", IRonoff,
+ "IRCTL <state>\n"
+ " Set the IR state (0=stop, 1=start)")
+
+static void
+powerDEV (wchar_t *dev, int state)
+{
+// LPWSTR dev = L"BKL1:";
+//LPWSTR dev=L"{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\TIACXWLN1";
+//LPWSTR dev=L"MSM1:";
+//LPWSTR dev=L"RIL1:";
+//LPWSTR dev=L"MIS1:";
+//LPWSTR dev=L"WAV1:";
+
+ Output ("SetPowerRequirement(%d) %ls", state, dev);
+
+ HANDLE hPwr =
+ SetPowerRequirement (dev, (CEDEVICE_POWER_STATE) state,
+ POWER_NAME | POWER_FORCE, NULL, 0);
+ if (hPwr == NULL || hPwr == INVALID_HANDLE_VALUE)
+ {
+ ScriptError ("SetPowerRequirement(%d) failed", state);
+ return;
+ }
+
+ Output ("SetDevicePower(%d) %ls", state, dev);
+ SetDevicePower (dev, POWER_NAME | POWER_FORCE,
+ (CEDEVICE_POWER_STATE) state);
+
+ Sleep (1 * 1000);
+ ReleasePowerRequirement (hPwr);
+}
+static void
+cmd_PWRctl(const char *cmd, const char *args)
+{
+ uint32 state;
+
+ wchar_t wname[MAX_CMDLEN];
+ if (get_wtoken(&args, wname, ARRAY_SIZE(wname)) || !get_expression(&args, &state)) {
+ ScriptError("Expected <device name> <state>");
+ return;
+ }
+
+
+ Output("Calling on '%ls' %d", wname,state);
+
+ powerDEV(wname,state);
+}
+
+REG_CMD(0, "PWRCTL", cmd_PWRctl,
+ "PWRCTL <device name> <state>\n"
+ " Set the device power state (0=on, 4=off)")
+
+static uint8
+pasic3_reg_read(uint16 *addr, uint16 *data, int reg)
+{
+
+ *addr |= 0x80;
+ *addr = (*addr & 0xff80) | (reg & 0x7f);
+
+ return (uint8)(*data);
+}
+
+static void pasic3DumpState (const char *cmd, const char *args)
+{
+// int i;
+
+ uint16 *pasic3addr, *pasic3data;
+ uint32 pasic3_gpio_base, pasic3_bus_shift;
+
+ if (!get_expression(&args, &pasic3_gpio_base) || !get_expression(&args, &pasic3_bus_shift)) {
+ ScriptError("Expected <base> <shift>");
+ return;
+ }
+
+ pasic3addr=(uint16 *)memPhysMap (pasic3_gpio_base + (0x14>>(2-pasic3_bus_shift)));
+ pasic3data=(uint16 *)memPhysMap (pasic3_gpio_base + (0x18>>(2-pasic3_bus_shift)));
+
+ int pasic3regs[]={
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x06, 0x07,
+ 0x10, 0x11, 0x12, 0x13, 0x14,
+ 0x20, 0x21, 0x22, 0x23,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c,
+ };
+
+Output ("PASIC[23] registers\n");
+
+ for (unsigned int i=0;i<sizeof(pasic3regs)/sizeof(int);i++)
+ {
+ uint16 ret;
+
+ ret=pasic3_reg_read(pasic3addr, pasic3data, pasic3regs[i]);
+
+ Output("reg= 0x%2.2x val= 0x%2.2x",pasic3regs[i],ret);
+ }
+
+ return;
+}
+REG_CMD(0, "PASIC3", pasic3DumpState,
+ "PASIC3 <base> <shift>\n"
+ " Dump PASIC[23] registers. Known devices:\n"
+ " HIMALAYAS 0x0d000000 2\n"
+ " BLUEANGEL 0x11000000 1\n"
+ " MAGICIAN 0x08000000 2\n"
+ " ALPINE 0x0e000000 1\n")
Index: src/mach/machlist.txt
===================================================================
RCS file: /cvs/haret/src/mach/machlist.txt,v
retrieving revision 1.31
diff -u -r1.31 machlist.txt
--- src/mach/machlist.txt 16 Mar 2008 00:46:55 -0000 1.31
+++ src/mach/machlist.txt 29 Mar 2008 23:25:39 -0000
@@ -83,16 +83,7 @@
Acer_n30, S3c2410 ,Acer n30 Handheld, N30
Mio_P550, S3c2440 ,Mio P550, MIO_P550
Kaiser, MSM7200 ,Kaiser
-Loox5xx, PXA27x ,FUJITSU SIEMENS COMPUTERS Pocket LOOX 5xx, LOOXN560, \
- addlist GPIOS p2v(0x10000000) 0xf000 16, \
- addlist GPIOS p2v(0x10000002) 0xf000 16, \
- addlist GPIOS p2v(0x10000004) 0xf000 16, \
- addlist GPIOS p2v(0x10000006) 0xf000 16, \
- addlist GPIOS p2v(0x10000008) 0xf000 16, \
- addlist GPIOS p2v(0x1000000a) 0xf000 16, \
- addlist GPIOS p2v(0x1000000c) 0xf000 16, \
- addlist GPIOS p2v(0x1000000e) 0xf000 16, \
- addlist GPIOS p2v(0x10000010) 0xf000 16
+Loox5xx, PXA27x ,FUJITSU SIEMENS COMPUTERS Pocket LOOX 5xx, LOOXN560
Loox400, PXA ,FUJITSU SIEMENS COMPUTERS Pocket LOOX, LOOX410
MioA701, PXA27x ,Mio Technology Limited, MIOA701
#ifndef __BT_H
#define __BT_H
enum BTH_RADIO_MODE
{
BTH_POWER_OFF,
BTH_CONNECTABLE,
BTH_DISCOVERABLE
};
extern "C"
{
int BthSetMode (int dwMode);
int BthAGNetworkDialNumber (LPSTR pszNumber);
};
#endif
#ifndef __IOCTL_H
#define __IOCTL_H
#define FILE_DEVICE_HAL 0x00000101
#define FILE_DEVICE_CONSOLE 0x00000102
#define FILE_DEVICE_PSL 0x00000103
#define FILE_DEVICE_SERVICE 0x00000104
#define IOCTL_SERVICE_START CTL_CODE(FILE_DEVICE_SERVICE, 1,
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERVICE_STOP CTL_CODE(FILE_DEVICE_SERVICE, 2,
METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_AG_OPEN_AUDIO 0x01
#define IOCTL_AG_CLOSE_AUDIO 0x02
#endif
#ifndef HARET_POWERM
#define HARET_POWERM 1
#include <windows.h>
#define POWER_NAME 0x00000001
#define POWER_FORCE 0x00001000
typedef enum
{
PwrDeviceUnspecified=-1,D0=0,D1,D2,D3,D4,PwrDeviceMaximum
} CEDEVICE_POWER_STATE;
extern "C"
{
HANDLE SetPowerRequirement(
const void *pvDevice, CEDEVICE_POWER_STATE DeviceState,ULONG DeviceFlags,
void *pvSystemState,ULONG StateFlags);
int SetDevicePower(
const void *pvDevice, ULONG DeviceFlags, CEDEVICE_POWER_STATE DeviceState);
DWORD ReleasePowerRequirement(HANDLE hPowerReq);
};
#define BATTERY_CHEMISTRY_ALKALINE 0x01
#define BATTERY_CHEMISTRY_NICD 0x02
#define BATTERY_CHEMISTRY_NIMH 0x03
#define BATTERY_CHEMISTRY_LION 0x04
#define BATTERY_CHEMISTRY_LIPOLY 0x05
#define BATTERY_CHEMISTRY_ZINCAIR 0x06
#define BATTERY_CHEMISTRY_UNKNOWN 0xFF
extern "C" void WAV_PowerDown(void);
extern "C" void WAV_PowerUp(void);
typedef enum {
VideoPowerOn = 1,
VideoPowerStandBy,
VideoPowerSuspend,
VideoPowerOff
} VIDEO_POWER_STATE;
#endif
_______________________________________________
Haret mailing list
[email protected]
https://handhelds.org/mailman/listinfo/haret