From f6a80713cf7f27bdb7e4fbbade8db3ea8bebc7d6 Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Wed, 23 Apr 2025 14:23:15 +0800
Subject: [PATCH] update w25qflash to specify spidev
---
modules/w25qflash.c | 63 +++++++++++++++++++++++++++++--
1 files changed, 59 insertions(+), 4 deletions(-)
diff --git a/modules/w25qflash.c b/modules/w25qflash.c
index db20abd..ae54646 100644
--- a/modules/w25qflash.c
+++ b/modules/w25qflash.c
@@ -29,6 +29,7 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
+#include <libgen.h>
#include <getopt.h>
#include <fcntl.h>
#include <time.h>
@@ -57,19 +58,73 @@
void dump_buf(const char *prompt, char *buffer, size_t length);
+static inline void banner(const char *progname)
+{
+ printf("%s program Version v1.0.0\n", progname);
+ printf("Copyright (C) 2023 Avnet.\n");
+}
+
+static void program_usage(const char *progname)
+{
+
+ printf("Usage: %s [OPTION]...\n", progname);
+ printf(" %s is W25Q SPI Norflash test program. \n", progname);
+
+ printf(" -d[device ] Specify SPI device, such as /dev/spidevX.Y\n");
+ printf(" -h[help ] Display this help information\n");
+ printf(" -v[version ] Display the program version\n");
+
+ printf("\n");
+ banner(progname);
+ return;
+}
+
+char *dev="/dev/spidev0.0"; /* SPI device 0 */
+
int main (int argc, char **argv)
{
+ int rv;
+ char *progname=NULL;
+ struct option long_options[] = {
+ {"device", required_argument, NULL, 'd'},
+ {"version", no_argument, NULL, 'v'},
+ {"help", no_argument, NULL, 'h'},
+ {NULL, 0, NULL, 0}
+ };
+
+ progname = basename(argv[0]);
+
+ /* Parser the command line parameters */
+ while ((rv = getopt_long(argc, argv, "d:m:vh", long_options, NULL)) != -1)
+ {
+ switch (rv)
+ {
+ case 'd': /* Set SPI device path: /dev/spidev0.0 */
+ dev = optarg;
+ break;
+
+ case 'v': /* Get software version */
+ banner(progname);
+ return EXIT_SUCCESS;
+
+ case 'h': /* Get help information */
+ program_usage(progname);
+ return 0;
+
+ default:
+ break;
+ }
+ }
+
spinor_test();
return 0;
}
-
/*+-----------------------+
*| SPI API Functions |
*+-----------------------+*/
-#define SPI_DEV "/dev/spidev0.0"
#define SPI_BITS 8
#define SPI_MODE 0//(SPI_CPHA|SPI_CPOL)
#define SPI_SPEED 500000
@@ -84,10 +139,10 @@
uint32_t request;
int ret;
- spi->hspi = open(SPI_DEV, O_RDWR);
+ spi->hspi = open(dev, O_RDWR);
if (spi->hspi < 0)
{
- spinor_print("ERROR: open device %s failure: %s\r\n", SPI_DEV, strerror(errno));
+ spinor_print("ERROR: open device %s failure: %s\r\n", dev, strerror(errno));
return ;
}
--
Gitblit v1.9.1