mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-29 10:37:33 +02:00
dc3d3f1c49
it's basically also provided by ingenic and nativly based on 2.6.27, adjusted to fit into the OpenWrt-environment
56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
/*
|
|
* flash_info.c -- print info about a MTD device
|
|
*/
|
|
|
|
#include <unistd.h>
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <fcntl.h>
|
|
#include <time.h>
|
|
#include <sys/ioctl.h>
|
|
#include <sys/mount.h>
|
|
|
|
#include <mtd/mtd-user.h>
|
|
|
|
int main(int argc,char *argv[])
|
|
{
|
|
int regcount;
|
|
int Fd;
|
|
|
|
if (1 >= argc)
|
|
{
|
|
fprintf(stderr,"Usage: flash_info device\n");
|
|
return 16;
|
|
}
|
|
|
|
// Open and size the device
|
|
if ((Fd = open(argv[1],O_RDONLY)) < 0)
|
|
{
|
|
fprintf(stderr,"File open error\n");
|
|
return 8;
|
|
}
|
|
|
|
if (ioctl(Fd,MEMGETREGIONCOUNT,®count) == 0)
|
|
{
|
|
int i;
|
|
region_info_t reginfo;
|
|
printf("Device %s has %d erase regions\n", argv[1], regcount);
|
|
for (i = 0; i < regcount; i++)
|
|
{
|
|
reginfo.regionindex = i;
|
|
if(ioctl(Fd, MEMGETREGIONINFO, ®info) == 0)
|
|
{
|
|
printf("Region %d is at 0x%x with size 0x%x and "
|
|
"has 0x%x blocks\n", i, reginfo.offset,
|
|
reginfo.erasesize, reginfo.numblocks);
|
|
}
|
|
else
|
|
{
|
|
printf("Strange can not read region %d from a %d region device\n",
|
|
i, regcount);
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|