FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/ffs/board/cfgffs.c @ 244:96784b8974eb
Switch_ON(): detect charging mode by CHGPRES bit
Consider the following scenario: the phone is on, the user plugs in
the charger, and then executes the power-off operation. In the Iota
VRPC this sequence translates to a switch-off immediately followed
by another switch-on - but the CHGSTS bit doesn't get set on the second
switch-on cycle! Disassembly of Pirelli's fw shows that they check
the CHGPRES bit, and furthermore, if both CHGPRES and ONBSTS are set,
the code they pass to their modified Power_ON_Button() function is
the one for charging - so let's adopt the same CHGPRES check and
the same priority order for switch-on causes.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 03 May 2021 06:51:29 +0000 |
parents | 4e78acac3d88 |
children |
line wrap: on
line source
/****************************************************************************** * Flash File System (ffs) * Idea, design and coding by Mads Meisner-Jensen, mmj@ti.com * * FFS configuration * * $Id: cfgffs.c 1.27 Fri, 19 Dec 2003 12:00:13 +0100 tsj $ * ******************************************************************************/ #ifndef TARGET #include "ffs.cfg" #endif #include "ffs/ffs.h" #include "ffs/board/drv.h" #include "config/board.cfg" #if (BOARD == 34) #include "ffs/board/ffspcm.h" #endif #include "config/rf.cfg" #include <string.h> /****************************************************************************** * Flash Device Configuration ******************************************************************************/ #if (TARGET == 1) // The absolutely easiest way to disable FFS altogether is to set // ffs_flash_manufact = 0x99 and ffs_flash_device = 0x9999. Because this is // (as of today at least) an undefined device, FFS will NOT initialize and // every FFS function call will fail (with no side-effects). // FFS will automatically detect the flash device if both ffs_flash_manufact // and ffs_flash_device are zero. Note that this works *only* if the flash // device is mapped at address zero. Otherwise you *have* to supply // manufacturer and device IDs. // FFS can be configured to run in ram only. In this case the // 'ffs_flash_manufact' must be set to MANUFACT_RAM and an address to a // static user allocated ram buffer must be applied to the variable // 'ffs_flash_address'. In a ram configuration the 'ffs_flash_device' is an // arbitrary value that must be in sync with the 'device code' value chosen // in dev.c. #if (BOARD == 34) uint16 ffs_flash_manufact = MANUFACT_RAM; uint16 ffs_flash_device = 0x0404; // RAM int ffs_ram_image_address = FFS_BASE_ADDRESS; #else uint16 ffs_flash_manufact = 0x00; // autodetect device //uint16 ffs_flash_manufact = MANUFACT_RAM; //uint16 ffs_flash_manufact = 0x04; // Fujitsu //uint16 ffs_flash_manufact = 0xBF; // SST uint16 ffs_flash_device = 0x0000; // autodetect device //uint16 ffs_flash_device = 0x0404; // RAM //uint16 ffs_flash_device = 0xB496; // Fujitsu stacked device //uint16 ffs_flash_device = 0x2761; // SST device 1601 //uint16 ffs_flash_device = 0x2259; // 8x8kB blocks int ffs_ram_image_address = 0; // Dummy //unsigned char ffs_image[8*8*1024]; //int ffs_ram_image_address = (int) &ffs_image; #endif // BOARD == 34 #else uint16 ffs_flash_manufact = 'T'; //uint16 ffs_flash_device = 0x0F12; // Test device: 128x64kB blocks uint16 ffs_flash_device = 0x0F10; // Test device: 16x64kB blocks //uint16 ffs_flash_device = 0x080D; // Test device: 8x8kB blocks //uint16 ffs_flash_device = 0x0404; // Test device: 4x4kB blocks int ffs_ram_image_address = 0; // Dummy #endif /****************************************************************************** * ffs_is_modify_valid() ******************************************************************************/ // This is function to be implemented by the application programmer. It is // called by ffs when a read-only object is about to be modified or // removed. It should return zero if the operation should be // disallowed. Returning non-zero means go ahead. effs_t ffs_is_modifiable(const char *name) { // default is to allow any modification of read-only objects. // example of how to disallow modifying a specific object... if (strcmp("IMEI", &name[strlen(name) - 4]) == 0) return 0; return 1; }