Thread (13 messages) 13 messages, 7 authors, 2015-09-11

[PATCH 2/3] mtd: mtk-nor: mtk serial flash controller driver

From: Lothar Waßmann <hidden>
Date: 2015-09-09 13:01:31
Also in: linux-devicetree, linux-mediatek, lkml

Hi,
quoted
+	writeb(len, mt8173_nor->base + MTK_NOR_CNT_REG);
+	return mt8173_nor_execute_cmd(mt8173_nor, MTK_NOR_PRG_CMD);
+}
+
+static int mt8173_nor_get_para(struct mt8173_nor *mt8173_nor, u8 *buf, int len)
+{
+	if (len > 1) {
+		/* read JEDEC ID need 4 bytes commands */
+		mt8173_nor_set_cmd(mt8173_nor, 0, 32, SPINOR_OP_RDID);
+		buf[2] = readb(mt8173_nor->base + MTK_NOR_SHREG0_REG);
+		buf[1] = readb(mt8173_nor->base + MTK_NOR_SHREG1_REG);
+		buf[0] = readb(mt8173_nor->base + MTK_NOR_SHREG2_REG);
+	} else {
+		if (mt8173_nor_execute_cmd(mt8173_nor, MTK_NOR_RDSR_CMD)) {
+			dev_err(mt8173_nor->dev, "read status failed!\n");
+			return -EINVAL;
+		}
+		*buf = readb(mt8173_nor->base + MTK_NOR_RDSR_REG);
+	}
+	return 0;
+}
+
+/* cmd1 sent to nor flash, cmd2 write to nor controller */
+static int mt8173_nor_set_para(struct mt8173_nor *mt8173_nor, int cmd1,
+			       int cmd2)
+{
+	if (mt8173_nor_set_cmd(mt8173_nor, 0, 8, SPINOR_OP_WREN)) {
+		dev_err(mt8173_nor->dev,
+			"write enable failed in write protect!\n");
+		return -EINVAL;
+	}
+	writeb(cmd1, mt8173_nor->base + MTK_NOR_PRGDATA5_REG);
+	writeb(8, mt8173_nor->base + MTK_NOR_CNT_REG);
+	if (mt8173_nor_execute_cmd(mt8173_nor, cmd2)) {
+		dev_err(mt8173_nor->dev, "execute cmd failed!\n");
mt8173_nor_execute_cmd() will already have printed an error message.
And mt8173_nor_execute_cmd()/mt8173_nor_set_cmd() returned an error
code which should be promoted to the caller rather than
inventing a new one.
The same for other instances of this code fragment.


Lothar Wa?mann
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help