* [PATCHi v3 0/4] Fixup mediatek spi driver @ 2015-08-24 3:45 Leilk Liu 2015-08-24 3:45 ` [PATCH v3 1/4] spi: mediatek: add linux/io.h include file Leilk Liu ` (3 more replies) 0 siblings, 4 replies; 6+ messages in thread From: Leilk Liu @ 2015-08-24 3:45 UTC (permalink / raw) To: Mark Brown Cc: Mark Rutland, Matthias Brugger, Sascha Hauer, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-spi-u79uwXL29TY76Z2rM5mHXA, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r From: Leilk Liu <leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> This series are based on 4.2-rc1 and provide four patches to fix mediatek spi driver. Change in v3: 1. The follow patches are applied, so remove them from series: - spi: mediatek: fix spi incorrect endian usage - spi: medaitek: revise quirks compatibility style - spi: mediatek: use BIT() to instead of SPI_CMD_*_OFFSET 2. The patch "spi: mediatek: revise coding style" title is not clear, so split it to four patches. Change in v2: 1. The patch "spi: mediatek: remove redundant clock in prepare_hardware/unprepare_hardware" is applied, so remove it from series. 2. fix incorrect endian usage to support little-endian and big-endian system. 3. revise quirks style to bool. 4. use BIT() to instead of SPI_CMD_*_OFFSET. 5. revise coding style, such as time name, and variable type. Leilk Liu (4): spi: mediatek: add linux/io.h include file spi: mediatek: replace int with u32, delete TAB and define MTK_SPI_PAUSE_INT_STATUS marco spi: mediatek: add PM clk_prepare_enable fail flow spi: mediatek: replace *_time name drivers/spi/spi-mt65xx.c | 52 ++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 22 deletions(-) -- 1.8.1.1.dirty -- To unsubscribe from this list: send the line "unsubscribe linux-spi" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 1/4] spi: mediatek: add linux/io.h include file 2015-08-24 3:45 [PATCHi v3 0/4] Fixup mediatek spi driver Leilk Liu @ 2015-08-24 3:45 ` Leilk Liu 2015-08-24 3:45 ` [PATCH v3 2/4] spi: mediatek: replace int with u32, delete TAB and define MTK_SPI_PAUSE_INT_STATUS marco Leilk Liu ` (2 subsequent siblings) 3 siblings, 0 replies; 6+ messages in thread From: Leilk Liu @ 2015-08-24 3:45 UTC (permalink / raw) To: Mark Brown Cc: Mark Rutland, Matthias Brugger, Sascha Hauer, devicetree, linux-kernel, linux-arm-kernel, linux-spi, linux-mediatek, Leilk Liu mediatek spi driver uses readl/writel, so add linux/io.h, even so it's implicitly imported by spi/spi.h Signed-off-by: Leilk Liu <leilk.liu@mediatek.com> --- drivers/spi/spi-mt65xx.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index 43c1dd5..fe4eda3 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c @@ -16,6 +16,7 @@ #include <linux/device.h> #include <linux/err.h> #include <linux/interrupt.h> +#include <linux/io.h> #include <linux/ioport.h> #include <linux/module.h> #include <linux/of.h> -- 1.8.1.1.dirty ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v3 2/4] spi: mediatek: replace int with u32, delete TAB and define MTK_SPI_PAUSE_INT_STATUS marco 2015-08-24 3:45 [PATCHi v3 0/4] Fixup mediatek spi driver Leilk Liu 2015-08-24 3:45 ` [PATCH v3 1/4] spi: mediatek: add linux/io.h include file Leilk Liu @ 2015-08-24 3:45 ` Leilk Liu [not found] ` <1440387918-22191-3-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> 2015-08-24 3:45 ` [PATCH v3 3/4] spi: mediatek: add PM clk_prepare_enable fail flow Leilk Liu [not found] ` <1440387918-22191-1-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> 3 siblings, 1 reply; 6+ messages in thread From: Leilk Liu @ 2015-08-24 3:45 UTC (permalink / raw) To: Mark Brown Cc: Mark Rutland, Matthias Brugger, Sascha Hauer, devicetree, linux-kernel, linux-arm-kernel, linux-spi, linux-mediatek, Leilk Liu this patch replaces int with u32, deletes TAB, and defines MTK_SPI_PAUSE_INT_STATUS marco. Signed-off-by: Leilk Liu <leilk.liu@mediatek.com> --- drivers/spi/spi-mt65xx.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index fe4eda3..f81618c 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c @@ -67,6 +67,8 @@ #define MT8173_SPI_MAX_PAD_SEL 3 +#define MTK_SPI_PAUSE_INT_STATUS 0x2 + #define MTK_SPI_IDLE 0 #define MTK_SPI_PAUSED 1 @@ -179,7 +181,7 @@ static int mtk_spi_prepare_hardware(struct spi_master *master) trans = list_first_entry(&msg->transfers, struct spi_transfer, transfer_list); - if (trans->cs_change == 0) { + if (!trans->cs_change) { mdata->state = MTK_SPI_IDLE; mtk_spi_reset(mdata); } @@ -269,11 +271,11 @@ static void mtk_spi_setup_packet(struct spi_master *master) u32 packet_size, packet_loop, reg_val; struct mtk_spi *mdata = spi_master_get_devdata(master); - packet_size = min_t(unsigned, mdata->xfer_len, MTK_SPI_PACKET_SIZE); + packet_size = min_t(u32, mdata->xfer_len, MTK_SPI_PACKET_SIZE); packet_loop = mdata->xfer_len / packet_size; reg_val = readl(mdata->base + SPI_CFG1_REG); - reg_val &= ~(SPI_CFG1_PACKET_LENGTH_MASK + SPI_CFG1_PACKET_LOOP_MASK); + reg_val &= ~(SPI_CFG1_PACKET_LENGTH_MASK | SPI_CFG1_PACKET_LOOP_MASK); reg_val |= (packet_size - 1) << SPI_CFG1_PACKET_LENGTH_OFFSET; reg_val |= (packet_loop - 1) << SPI_CFG1_PACKET_LOOP_OFFSET; writel(reg_val, mdata->base + SPI_CFG1_REG); @@ -281,7 +283,7 @@ static void mtk_spi_setup_packet(struct spi_master *master) static void mtk_spi_enable_transfer(struct spi_master *master) { - int cmd; + u32 cmd; struct mtk_spi *mdata = spi_master_get_devdata(master); cmd = readl(mdata->base + SPI_CMD_REG); @@ -292,9 +294,9 @@ static void mtk_spi_enable_transfer(struct spi_master *master) writel(cmd, mdata->base + SPI_CMD_REG); } -static int mtk_spi_get_mult_delta(int xfer_len) +static int mtk_spi_get_mult_delta(u32 xfer_len) { - int mult_delta; + u32 mult_delta; if (xfer_len > MTK_SPI_PACKET_SIZE) mult_delta = xfer_len % MTK_SPI_PACKET_SIZE; @@ -435,7 +437,7 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id) struct spi_transfer *trans = mdata->cur_transfer; reg_val = readl(mdata->base + SPI_STATUS0_REG); - if (reg_val & 0x2) + if (reg_val & MTK_SPI_PAUSE_INT_STATUS) mdata->state = MTK_SPI_PAUSED; else mdata->state = MTK_SPI_IDLE; @@ -498,7 +500,7 @@ static int mtk_spi_probe(struct platform_device *pdev) struct mtk_spi *mdata; const struct of_device_id *of_id; struct resource *res; - int irq, ret; + int irq, ret; master = spi_alloc_master(&pdev->dev, sizeof(*mdata)); if (!master) { -- 1.8.1.1.dirty ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <1440387918-22191-3-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>]
* Re: [PATCH v3 2/4] spi: mediatek: replace int with u32, delete TAB and define MTK_SPI_PAUSE_INT_STATUS marco [not found] ` <1440387918-22191-3-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> @ 2015-08-25 17:47 ` Mark Brown 0 siblings, 0 replies; 6+ messages in thread From: Mark Brown @ 2015-08-25 17:47 UTC (permalink / raw) To: Leilk Liu Cc: Mark Rutland, Matthias Brugger, Sascha Hauer, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-spi-u79uwXL29TY76Z2rM5mHXA, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r [-- Attachment #1: Type: text/plain, Size: 293 bytes --] On Mon, Aug 24, 2015 at 11:45:16AM +0800, Leilk Liu wrote: > this patch replaces int with u32, deletes TAB, and defines > MTK_SPI_PAUSE_INT_STATUS marco. You've listed three changes in one patch and they're not obviously interrelated. As has been said before one change per patch please :( [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 473 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v3 3/4] spi: mediatek: add PM clk_prepare_enable fail flow 2015-08-24 3:45 [PATCHi v3 0/4] Fixup mediatek spi driver Leilk Liu 2015-08-24 3:45 ` [PATCH v3 1/4] spi: mediatek: add linux/io.h include file Leilk Liu 2015-08-24 3:45 ` [PATCH v3 2/4] spi: mediatek: replace int with u32, delete TAB and define MTK_SPI_PAUSE_INT_STATUS marco Leilk Liu @ 2015-08-24 3:45 ` Leilk Liu [not found] ` <1440387918-22191-1-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> 3 siblings, 0 replies; 6+ messages in thread From: Leilk Liu @ 2015-08-24 3:45 UTC (permalink / raw) To: Mark Brown Cc: Mark Rutland, Matthias Brugger, Sascha Hauer, devicetree, linux-kernel, linux-arm-kernel, linux-spi, linux-mediatek, Leilk Liu This patch adds PM clk_prepare_enable fail flow. Signed-off-by: Leilk Liu <leilk.liu@mediatek.com> --- drivers/spi/spi-mt65xx.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index f81618c..e14f583 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c @@ -665,8 +665,10 @@ static int mtk_spi_resume(struct device *dev) if (!pm_runtime_suspended(dev)) { ret = clk_prepare_enable(mdata->spi_clk); - if (ret < 0) + if (ret < 0) { + dev_err(dev, "failed to enable spi_clk (%d)\n", ret); return ret; + } } ret = spi_master_resume(master); @@ -692,8 +694,15 @@ static int mtk_spi_runtime_resume(struct device *dev) { struct spi_master *master = dev_get_drvdata(dev); struct mtk_spi *mdata = spi_master_get_devdata(master); + int ret; + + ret = clk_prepare_enable(mdata->spi_clk); + if (ret < 0) { + dev_err(dev, "failed to enable spi_clk (%d)\n", ret); + return ret; + } - return clk_prepare_enable(mdata->spi_clk); + return 0; } #endif /* CONFIG_PM */ -- 1.8.1.1.dirty ^ permalink raw reply related [flat|nested] 6+ messages in thread
[parent not found: <1440387918-22191-1-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>]
* [PATCH v3 4/4] spi: mediatek: replace *_time name [not found] ` <1440387918-22191-1-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> @ 2015-08-24 3:45 ` Leilk Liu 0 siblings, 0 replies; 6+ messages in thread From: Leilk Liu @ 2015-08-24 3:45 UTC (permalink / raw) To: Mark Brown Cc: Mark Rutland, devicetree-u79uwXL29TY76Z2rM5mHXA, Leilk Liu, Sascha Hauer, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-spi-u79uwXL29TY76Z2rM5mHXA, linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Matthias Brugger, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r This patch replaces *_time name in mtk_spi_prepare_transfer(). Signed-off-by: Leilk Liu <leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> --- drivers/spi/spi-mt65xx.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index e14f583..eaadc7e 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c @@ -238,8 +238,7 @@ static void mtk_spi_set_cs(struct spi_device *spi, bool enable) static void mtk_spi_prepare_transfer(struct spi_master *master, struct spi_transfer *xfer) { - u32 spi_clk_hz, div, high_time, low_time, holdtime, - setuptime, cs_idletime, reg_val = 0; + u32 spi_clk_hz, div, sck_time, cs_time, reg_val = 0; struct mtk_spi *mdata = spi_master_get_devdata(master); spi_clk_hz = clk_get_rate(mdata->spi_clk); @@ -248,21 +247,18 @@ static void mtk_spi_prepare_transfer(struct spi_master *master, else div = 1; - high_time = (div + 1) / 2; - low_time = (div + 1) / 2; - holdtime = (div + 1) / 2 * 2; - setuptime = (div + 1) / 2 * 2; - cs_idletime = (div + 1) / 2 * 2; + sck_time = (div + 1) / 2; + cs_time = sck_time * 2; - reg_val |= (((high_time - 1) & 0xff) << SPI_CFG0_SCK_HIGH_OFFSET); - reg_val |= (((low_time - 1) & 0xff) << SPI_CFG0_SCK_LOW_OFFSET); - reg_val |= (((holdtime - 1) & 0xff) << SPI_CFG0_CS_HOLD_OFFSET); - reg_val |= (((setuptime - 1) & 0xff) << SPI_CFG0_CS_SETUP_OFFSET); + reg_val |= (((sck_time - 1) & 0xff) << SPI_CFG0_SCK_HIGH_OFFSET); + reg_val |= (((sck_time - 1) & 0xff) << SPI_CFG0_SCK_LOW_OFFSET); + reg_val |= (((cs_time - 1) & 0xff) << SPI_CFG0_CS_HOLD_OFFSET); + reg_val |= (((cs_time - 1) & 0xff) << SPI_CFG0_CS_SETUP_OFFSET); writel(reg_val, mdata->base + SPI_CFG0_REG); reg_val = readl(mdata->base + SPI_CFG1_REG); reg_val &= ~SPI_CFG1_CS_IDLE_MASK; - reg_val |= (((cs_idletime - 1) & 0xff) << SPI_CFG1_CS_IDLE_OFFSET); + reg_val |= (((cs_time - 1) & 0xff) << SPI_CFG1_CS_IDLE_OFFSET); writel(reg_val, mdata->base + SPI_CFG1_REG); } -- 1.8.1.1.dirty ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2015-08-25 17:47 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-08-24 3:45 [PATCHi v3 0/4] Fixup mediatek spi driver Leilk Liu 2015-08-24 3:45 ` [PATCH v3 1/4] spi: mediatek: add linux/io.h include file Leilk Liu 2015-08-24 3:45 ` [PATCH v3 2/4] spi: mediatek: replace int with u32, delete TAB and define MTK_SPI_PAUSE_INT_STATUS marco Leilk Liu [not found] ` <1440387918-22191-3-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> 2015-08-25 17:47 ` Mark Brown 2015-08-24 3:45 ` [PATCH v3 3/4] spi: mediatek: add PM clk_prepare_enable fail flow Leilk Liu [not found] ` <1440387918-22191-1-git-send-email-leilk.liu-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org> 2015-08-24 3:45 ` [PATCH v3 4/4] spi: mediatek: replace *_time name Leilk Liu
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).