unvram: make it work on bcm47xx, also look for /dev/mtdblockX
SVN-Revision: 15429
This commit is contained in:
parent
2d9c80b60f
commit
0f3ccb8868
3 changed files with 25 additions and 8 deletions
|
@ -8,7 +8,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=unvram
|
PKG_NAME:=unvram
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||||
|
|
||||||
|
|
|
@ -409,6 +409,7 @@ const char * nvram_find_mtd(void)
|
||||||
int i, esz;
|
int i, esz;
|
||||||
char dev[PATH_MAX];
|
char dev[PATH_MAX];
|
||||||
char *path = NULL;
|
char *path = NULL;
|
||||||
|
struct stat s;
|
||||||
|
|
||||||
// "/dev/mtdblock/" + ( 0 < x < 99 ) + \0 = 19
|
// "/dev/mtdblock/" + ( 0 < x < 99 ) + \0 = 19
|
||||||
if( (path = (char *) malloc(19)) == NULL )
|
if( (path = (char *) malloc(19)) == NULL )
|
||||||
|
@ -416,14 +417,32 @@ const char * nvram_find_mtd(void)
|
||||||
|
|
||||||
if ((fp = fopen("/proc/mtd", "r"))) {
|
if ((fp = fopen("/proc/mtd", "r"))) {
|
||||||
while (fgets(dev, sizeof(dev), fp)) {
|
while (fgets(dev, sizeof(dev), fp)) {
|
||||||
if (strstr(dev, "nvram") && sscanf(dev, "mtd%d: %08x", &i, &esz)) {
|
if (strstr(dev, "nvram") && sscanf(dev, "mtd%d: %08x", &i, &esz))
|
||||||
if( (path = (char *) malloc(19)) != NULL )
|
|
||||||
{
|
{
|
||||||
nvram_erase_size = esz;
|
nvram_erase_size = esz;
|
||||||
snprintf(path, 19, "/dev/mtdblock/%d", i);
|
|
||||||
|
sprintf(dev, "/dev/mtdblock/%d", i);
|
||||||
|
if( stat(dev, &s) > -1 && (s.st_mode & S_IFBLK) )
|
||||||
|
{
|
||||||
|
if( (path = (char *) malloc(strlen(dev)+1)) != NULL )
|
||||||
|
{
|
||||||
|
strncpy(path, dev, strlen(dev)+1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sprintf(dev, "/dev/mtdblock%d", i);
|
||||||
|
if( stat(dev, &s) > -1 && (s.st_mode & S_IFBLK) )
|
||||||
|
{
|
||||||
|
if( (path = (char *) malloc(strlen(dev)+1)) != NULL )
|
||||||
|
{
|
||||||
|
strncpy(path, dev, strlen(dev)+1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,8 +24,6 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <linux/limits.h>
|
#include <linux/limits.h>
|
||||||
|
|
||||||
#include "sdinitvals.h"
|
#include "sdinitvals.h"
|
||||||
|
|
Loading…
Reference in a new issue