From 984bf158213b7cc040975c52aada4830d8d98e79 Mon Sep 17 00:00:00 2001
From: Antonio Borneo <borneo.antonio@gmail.com>
Date: Mon, 14 Jun 2010 12:22:10 +0800
Subject: nor/at91sam3: replace helper membuf

Helper ./src/helper/membuf.c is only used in at91sam3.c

1) Replace membuf with LOG_*

2) The original code in sam3_GetDetails() invalidates
   all the buffered output of sam3_GetInfo(). The new
   code skips sam3_GetInfo() if its output should not
   be printed.

Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
---
 src/flash/nor/at91sam3.c | 126 +++++++++++++++--------------------------------
 1 file changed, 39 insertions(+), 87 deletions(-)

(limited to 'src/flash/nor')

diff --git a/src/flash/nor/at91sam3.c b/src/flash/nor/at91sam3.c
index 06b84cd3..8fa6dd43 100644
--- a/src/flash/nor/at91sam3.c
+++ b/src/flash/nor/at91sam3.c
@@ -59,7 +59,6 @@
 
 #include "imp.h"
 #include "at91sam3.h"
-#include <helper/membuf.h>
 #include <helper/time_support.h>
 
 #define REG_NAME_WIDTH  (12)
@@ -211,8 +210,6 @@ struct sam3_chip {
 	struct sam3_chip_details details;
 	struct target *target;
 	struct sam3_cfg cfg;
-
-	struct membuf *mbuf;
 };
 
 
@@ -1000,20 +997,6 @@ FLASHD_Lock(struct sam3_bank_private *pPrivate,
 /****** END SAM3 CODE ********/
 
 /* begin helpful debug code */
-
-static void
-sam3_sprintf(struct sam3_chip *pChip , const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap,fmt);
-	if (pChip->mbuf == NULL) {
-		return;
-	}
-
-	membuf_vsprintf(pChip->mbuf, fmt, ap);
-	va_end(ap);
-}
-
 // print the fieldname, the field value, in dec & hex, and return field value
 static uint32_t
 sam3_reg_fieldname(struct sam3_chip *pChip,
@@ -1038,7 +1021,7 @@ sam3_reg_fieldname(struct sam3_chip *pChip,
 	}
 
 	// show the basics
-	sam3_sprintf(pChip, "\t%*s: %*d [0x%0*x] ",
+	LOG_USER_N("\t%*s: %*d [0x%0*x] ",
 				  REG_NAME_WIDTH, regname,
 				  dwidth, v,
 				  hwidth, v);
@@ -1173,16 +1156,16 @@ sam3_explain_ckgr_mor(struct sam3_chip *pChip)
 	uint32_t rcen;
 
 	v = sam3_reg_fieldname(pChip, "MOSCXTEN", pChip->cfg.CKGR_MOR, 0, 1);
-	sam3_sprintf(pChip, "(main xtal enabled: %s)\n",
+	LOG_USER_N("(main xtal enabled: %s)\n",
 				  _yes_or_no(v));
 	v = sam3_reg_fieldname(pChip, "MOSCXTBY", pChip->cfg.CKGR_MOR, 1, 1);
-	sam3_sprintf(pChip, "(main osc bypass: %s)\n",
+	LOG_USER_N("(main osc bypass: %s)\n",
 				  _yes_or_no(v));
 	rcen = sam3_reg_fieldname(pChip, "MOSCRCEN", pChip->cfg.CKGR_MOR, 2, 1);
-	sam3_sprintf(pChip, "(onchip RC-OSC enabled: %s)\n",
+	LOG_USER_N("(onchip RC-OSC enabled: %s)\n",
 				  _yes_or_no(rcen));
 	v = sam3_reg_fieldname(pChip, "MOSCRCF", pChip->cfg.CKGR_MOR, 4, 3);
-	sam3_sprintf(pChip, "(onchip RC-OSC freq: %s)\n",
+	LOG_USER_N("(onchip RC-OSC freq: %s)\n",
 				  _rc_freq[v]);
 
 	pChip->cfg.rc_freq = 0;
@@ -1203,14 +1186,14 @@ sam3_explain_ckgr_mor(struct sam3_chip *pChip)
 	}
 
 	v = sam3_reg_fieldname(pChip,"MOSCXTST", pChip->cfg.CKGR_MOR, 8, 8);
-	sam3_sprintf(pChip, "(startup clks, time= %f uSecs)\n",
+	LOG_USER_N("(startup clks, time= %f uSecs)\n",
 				  ((float)(v * 1000000)) / ((float)(pChip->cfg.slow_freq)));
 	v = sam3_reg_fieldname(pChip, "MOSCSEL", pChip->cfg.CKGR_MOR, 24, 1);
-	sam3_sprintf(pChip, "(mainosc source: %s)\n",
+	LOG_USER_N("(mainosc source: %s)\n",
 				  v ? "external xtal" : "internal RC");
 
 	v = sam3_reg_fieldname(pChip,"CFDEN", pChip->cfg.CKGR_MOR, 25, 1);
-	sam3_sprintf(pChip, "(clock failure enabled: %s)\n",
+	LOG_USER_N("(clock failure enabled: %s)\n",
 				 _yes_or_no(v));
 }
 
@@ -1224,19 +1207,19 @@ sam3_explain_chipid_cidr(struct sam3_chip *pChip)
 	const char *cp;
 
 	sam3_reg_fieldname(pChip, "Version", pChip->cfg.CHIPID_CIDR, 0, 5);
-	sam3_sprintf(pChip,"\n");
+	LOG_USER_N("\n");
 
 	v = sam3_reg_fieldname(pChip, "EPROC", pChip->cfg.CHIPID_CIDR, 5, 3);
-	sam3_sprintf(pChip, "%s\n", eproc_names[v]);
+	LOG_USER_N("%s\n", eproc_names[v]);
 
 	v = sam3_reg_fieldname(pChip, "NVPSIZE", pChip->cfg.CHIPID_CIDR, 8, 4);
-	sam3_sprintf(pChip, "%s\n", nvpsize[v]);
+	LOG_USER_N("%s\n", nvpsize[v]);
 
 	v = sam3_reg_fieldname(pChip, "NVPSIZE2", pChip->cfg.CHIPID_CIDR, 12, 4);
-	sam3_sprintf(pChip, "%s\n", nvpsize2[v]);
+	LOG_USER_N("%s\n", nvpsize2[v]);
 
 	v = sam3_reg_fieldname(pChip, "SRAMSIZE", pChip->cfg.CHIPID_CIDR, 16,4);
-	sam3_sprintf(pChip, "%s\n", sramsize[ v ]);
+	LOG_USER_N("%s\n", sramsize[ v ]);
 
 	v = sam3_reg_fieldname(pChip, "ARCH", pChip->cfg.CHIPID_CIDR, 20, 8);
 	cp = _unknown;
@@ -1247,13 +1230,13 @@ sam3_explain_chipid_cidr(struct sam3_chip *pChip)
 		}
 	}
 
-	sam3_sprintf(pChip, "%s\n", cp);
+	LOG_USER_N("%s\n", cp);
 
 	v = sam3_reg_fieldname(pChip, "NVPTYP", pChip->cfg.CHIPID_CIDR, 28, 3);
-	sam3_sprintf(pChip, "%s\n", nvptype[ v ]);
+	LOG_USER_N("%s\n", nvptype[ v ]);
 
 	v = sam3_reg_fieldname(pChip, "EXTID", pChip->cfg.CHIPID_CIDR, 31, 1);
-	sam3_sprintf(pChip, "(exists: %s)\n", _yes_or_no(v));
+	LOG_USER_N("(exists: %s)\n", _yes_or_no(v));
 }
 
 static void
@@ -1263,14 +1246,14 @@ sam3_explain_ckgr_mcfr(struct sam3_chip *pChip)
 
 
 	v = sam3_reg_fieldname(pChip, "MAINFRDY", pChip->cfg.CKGR_MCFR, 16, 1);
-	sam3_sprintf(pChip, "(main ready: %s)\n", _yes_or_no(v));
+	LOG_USER_N("(main ready: %s)\n", _yes_or_no(v));
 
 	v = sam3_reg_fieldname(pChip, "MAINF", pChip->cfg.CKGR_MCFR, 0, 16);
 
 	v = (v * pChip->cfg.slow_freq) / 16;
 	pChip->cfg.mainosc_freq = v;
 
-	sam3_sprintf(pChip, "(%3.03f Mhz (%d.%03dkhz slowclk)\n",
+	LOG_USER_N("(%3.03f Mhz (%d.%03dkhz slowclk)\n",
 				 _tomhz(v),
 				 pChip->cfg.slow_freq / 1000,
 				 pChip->cfg.slow_freq % 1000);
@@ -1283,17 +1266,17 @@ sam3_explain_ckgr_plla(struct sam3_chip *pChip)
 	uint32_t mula,diva;
 
 	diva = sam3_reg_fieldname(pChip, "DIVA", pChip->cfg.CKGR_PLLAR, 0, 8);
-	sam3_sprintf(pChip,"\n");
+	LOG_USER_N("\n");
 	mula = sam3_reg_fieldname(pChip, "MULA", pChip->cfg.CKGR_PLLAR, 16, 11);
-	sam3_sprintf(pChip,"\n");
+	LOG_USER_N("\n");
 	pChip->cfg.plla_freq = 0;
 	if (mula == 0) {
-		sam3_sprintf(pChip,"\tPLLA Freq: (Disabled,mula = 0)\n");
+		LOG_USER_N("\tPLLA Freq: (Disabled,mula = 0)\n");
 	} else if (diva == 0) {
-		sam3_sprintf(pChip,"\tPLLA Freq: (Disabled,diva = 0)\n");
+		LOG_USER_N("\tPLLA Freq: (Disabled,diva = 0)\n");
 	} else if (diva == 1) {
 		pChip->cfg.plla_freq = (pChip->cfg.mainosc_freq * (mula + 1));
-		sam3_sprintf(pChip,"\tPLLA Freq: %3.03f MHz\n",
+		LOG_USER_N("\tPLLA Freq: %3.03f MHz\n",
 					 _tomhz(pChip->cfg.plla_freq));
 	}
 }
@@ -1334,7 +1317,7 @@ sam3_explain_mckr(struct sam3_chip *pChip)
 		break;
 	}
 
-	sam3_sprintf(pChip, "%s (%3.03f Mhz)\n",
+	LOG_USER_N("%s (%3.03f Mhz)\n",
 				  cp,
 				  _tomhz(fin));
 	pres = sam3_reg_fieldname(pChip, "PRES", pChip->cfg.PMC_MCKR, 4, 3);
@@ -1374,14 +1357,14 @@ sam3_explain_mckr(struct sam3_chip *pChip)
 		assert(0);
 		break;
 	}
-	sam3_sprintf(pChip, "(%s)\n", cp);
+	LOG_USER_N("(%s)\n", cp);
 	fin = fin / pdiv;
 	// sam3 has a *SINGLE* clock -
 	// other at91 series parts have divisors for these.
 	pChip->cfg.cpu_freq = fin;
 	pChip->cfg.mclk_freq = fin;
 	pChip->cfg.fclk_freq = fin;
-	sam3_sprintf(pChip, "\t\tResult CPU Freq: %3.03f\n",
+	LOG_USER_N("\t\tResult CPU Freq: %3.03f\n",
 				  _tomhz(fin));
 }
 
@@ -1538,15 +1521,12 @@ sam3_GetInfo(struct sam3_chip *pChip)
 	const struct sam3_reg_list *pReg;
 	uint32_t regval;
 
-	membuf_reset(pChip->mbuf);
-
-
 	pReg = &(sam3_all_regs[0]);
 	while (pReg->name) {
 		// display all regs
 		LOG_DEBUG("Start: %s", pReg->name);
 		regval = *sam3_get_reg_ptr(&(pChip->cfg), pReg);
-		sam3_sprintf(pChip, "%*s: [0x%08x] -> 0x%08x\n",
+		LOG_USER_N("%*s: [0x%08x] -> 0x%08x\n",
 					 REG_NAME_WIDTH,
 					 pReg->name,
 					 pReg->address,
@@ -1557,14 +1537,14 @@ sam3_GetInfo(struct sam3_chip *pChip)
 		LOG_DEBUG("End: %s", pReg->name);
 		pReg++;
 	}
-	sam3_sprintf(pChip,"   rc-osc: %3.03f MHz\n", _tomhz(pChip->cfg.rc_freq));
-	sam3_sprintf(pChip,"  mainosc: %3.03f MHz\n", _tomhz(pChip->cfg.mainosc_freq));
-	sam3_sprintf(pChip,"     plla: %3.03f MHz\n", _tomhz(pChip->cfg.plla_freq));
-	sam3_sprintf(pChip," cpu-freq: %3.03f MHz\n", _tomhz(pChip->cfg.cpu_freq));
-	sam3_sprintf(pChip,"mclk-freq: %3.03f MHz\n", _tomhz(pChip->cfg.mclk_freq));
+	LOG_USER_N("   rc-osc: %3.03f MHz\n", _tomhz(pChip->cfg.rc_freq));
+	LOG_USER_N("  mainosc: %3.03f MHz\n", _tomhz(pChip->cfg.mainosc_freq));
+	LOG_USER_N("     plla: %3.03f MHz\n", _tomhz(pChip->cfg.plla_freq));
+	LOG_USER_N(" cpu-freq: %3.03f MHz\n", _tomhz(pChip->cfg.cpu_freq));
+	LOG_USER_N("mclk-freq: %3.03f MHz\n", _tomhz(pChip->cfg.mclk_freq));
 
 
-	sam3_sprintf(pChip, " UniqueId: 0x%08x 0x%08x 0x%08x 0x%08x\n",
+	LOG_USER_N(" UniqueId: 0x%08x 0x%08x 0x%08x 0x%08x\n",
 				  pChip->cfg.unique_id[0],
 				  pChip->cfg.unique_id[1],
 				  pChip->cfg.unique_id[2],
@@ -1664,11 +1644,6 @@ FLASH_BANK_COMMAND_HANDLER(sam3_flash_bank_command)
 		// assumption is this runs at 32khz
 		pChip->cfg.slow_freq = 32768;
 		pChip->probed = 0;
-		pChip->mbuf = membuf_new();
-		if (!(pChip->mbuf)) {
-			LOG_ERROR("no memory");
-			return ERROR_FAIL;
-		}
 	}
 
 	switch (bank->base) {
@@ -1702,11 +1677,8 @@ sam3_GetDetails(struct sam3_bank_private *pPrivate)
 {
 	const struct sam3_chip_details *pDetails;
 	struct sam3_chip *pChip;
-	void *vp;
 	struct flash_bank *saved_banks[SAM3_MAX_FLASH_BANKS];
-
 	unsigned x;
-	const char *cp;
 
 	LOG_DEBUG("Begin");
 	pDetails = all_sam3_details;
@@ -1721,16 +1693,9 @@ sam3_GetDetails(struct sam3_bank_private *pPrivate)
 		LOG_ERROR("SAM3 ChipID 0x%08x not found in table (perhaps you can this chip?)",
 				  (unsigned int)(pPrivate->pChip->cfg.CHIPID_CIDR));
 		// Help the victim, print details about the chip
-		membuf_reset(pPrivate->pChip->mbuf);
-		membuf_sprintf(pPrivate->pChip->mbuf,
-						"SAM3 CHIPID_CIDR: 0x%08x decodes as follows\n",
+		LOG_INFO_N("SAM3 CHIPID_CIDR: 0x%08x decodes as follows\n",
 						pPrivate->pChip->cfg.CHIPID_CIDR);
 		sam3_explain_chipid_cidr(pPrivate->pChip);
-		cp = membuf_strtok(pPrivate->pChip->mbuf, "\n", &vp);
-		while (cp) {
-			LOG_INFO("%s", cp);
-			cp = membuf_strtok(NULL, "\n", &vp);
-		}
 		return ERROR_FAIL;
 	}
 
@@ -1798,18 +1763,14 @@ _sam3_probe(struct flash_bank *bank, int noise)
 
 
 	LOG_DEBUG("Here");
-	r = sam3_GetInfo(pPrivate->pChip);
+	if (pPrivate->pChip->probed) {
+		r = sam3_GetInfo(pPrivate->pChip);
+	} else {
+		r = sam3_GetDetails(pPrivate);
+	}
 	if (r != ERROR_OK) {
 		return r;
 	}
-	if (!(pPrivate->pChip->probed)) {
-		pPrivate->pChip->probed = 1;
-		LOG_DEBUG("Here");
-		r = sam3_GetDetails(pPrivate);
-		if (r != ERROR_OK) {
-			return r;
-		}
-	}
 
 	// update the flash bank size
 	for (x = 0 ; x < SAM3_MAX_FLASH_BANKS ; x++) {
@@ -2256,8 +2217,6 @@ sam3_write(struct flash_bank *bank,
 COMMAND_HANDLER(sam3_handle_info_command)
 {
 	struct sam3_chip *pChip;
-	void *vp;
-	const char *cp;
 	unsigned x;
 	int r;
 
@@ -2319,13 +2278,6 @@ COMMAND_HANDLER(sam3_handle_info_command)
 		return r;
 	}
 
-
-	// print results
-	cp = membuf_strtok(pChip->mbuf, "\n", &vp);
-	while (cp) {
-		command_print(CMD_CTX,"%s", cp);
-		cp = membuf_strtok(NULL, "\n", &vp);
-	}
 	return ERROR_OK;
 }
 
-- 
cgit v1.2.3