Re: [PATCH] Maxim/driver: Add driver for maxim ds26522
From: Qiang Zhao <qiang.z...@nxp.com> Date: Fri, 24 Jun 2016 02:00:33 + > On Thu, 2016-06-23 at 10:59PM, David Miller wrote: >> -Original Message- >> From: David Miller [mailto:da...@davemloft.net] >> Sent: Thursday, June 23, 2016 10:59 PM >> To: Qiang Zhao <qiang.z...@nxp.com> >> Cc: o...@buserror.net; linux-ker...@vger.kernel.org; netdev@vger.kernel.org; >> Xiaobo Xie <xiaobo....@nxp.com> >> Subject: Re: [PATCH] Maxim/driver: Add driver for maxim ds26522 >> >> From: Zhao Qiang <qiang.z...@nxp.com> >> Date: Thu, 23 Jun 2016 09:09:45 +0800 >> >> > +MODULE_DESCRIPTION(DRV_DESC); >> >> There is no definition of DRV_DESC, so this makes it look like you didn't >> even >> compile this driver. > > I really, really compiled this driver. > Thank you for your review and comments. I will modify it the next version. > > [zhaoqiang@titan:~/upstream/linux]$ll drivers/net/wan/slic_ds26522.o > -rw-r--r-- 1 zhaoqiang klocwork 153288 Jun 22 15:48 > drivers/net/wan/slic_ds26522.o > [zhaoqiang@titan:~/upstream/linux]$date Obviously with the driver not configured as a module, and thus explicitly not testing the failing statement at all.
RE: [PATCH] Maxim/driver: Add driver for maxim ds26522
On Thu, 2016-06-23 at 10:59PM, David Miller wrote: > -Original Message- > From: David Miller [mailto:da...@davemloft.net] > Sent: Thursday, June 23, 2016 10:59 PM > To: Qiang Zhao <qiang.z...@nxp.com> > Cc: o...@buserror.net; linux-ker...@vger.kernel.org; netdev@vger.kernel.org; > Xiaobo Xie <xiaobo....@nxp.com> > Subject: Re: [PATCH] Maxim/driver: Add driver for maxim ds26522 > > From: Zhao Qiang <qiang.z...@nxp.com> > Date: Thu, 23 Jun 2016 09:09:45 +0800 > > > +MODULE_DESCRIPTION(DRV_DESC); > > There is no definition of DRV_DESC, so this makes it look like you didn't even > compile this driver. I really, really compiled this driver. Thank you for your review and comments. I will modify it the next version. [zhaoqiang@titan:~/upstream/linux]$ll drivers/net/wan/slic_ds26522.o -rw-r--r-- 1 zhaoqiang klocwork 153288 Jun 22 15:48 drivers/net/wan/slic_ds26522.o [zhaoqiang@titan:~/upstream/linux]$date Fri Jun 24 09:42:16 CST 2016 -Zhao Qiang BR
Re: [PATCH] Maxim/driver: Add driver for maxim ds26522
From: Zhao QiangDate: Thu, 23 Jun 2016 09:09:45 +0800 > +MODULE_DESCRIPTION(DRV_DESC); There is no definition of DRV_DESC, so this makes it look like you didn't even compile this driver.
Re: [PATCH] Maxim/driver: Add driver for maxim ds26522
Hi, [auto build test ERROR on net-next/master] [also build test ERROR on next-20160622] [cannot apply to v4.7-rc4] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Zhao-Qiang/Maxim-driver-Add-driver-for-maxim-ds26522/20160623-095007 config: i386-allmodconfig (attached as .config) compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430 reproduce: # save the attached .config to linux build tree make ARCH=i386 All error/warnings (new ones prefixed by >>): In file included from include/linux/module.h:18:0, from drivers/net/wan/slic_ds26522.c:15: >> drivers/net/wan/slic_ds26522.c:39:20: error: expected ',' or ';' before >> 'DRV_DESC' MODULE_DESCRIPTION(DRV_DESC); ^ include/linux/moduleparam.h:23:26: note: in definition of macro '__MODULE_INFO' = __stringify(tag) "=" info ^~~~ >> include/linux/module.h:218:42: note: in expansion of macro 'MODULE_INFO' #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description) ^~~ >> drivers/net/wan/slic_ds26522.c:39:1: note: in expansion of macro >> 'MODULE_DESCRIPTION' MODULE_DESCRIPTION(DRV_DESC); ^~ vim +39 drivers/net/wan/slic_ds26522.c 9 * under the terms of the GNU General Public License as published by the 10 * Free Software Foundation; either version 2 of the License, or (at your 11 * option) any later version. 12 */ 13 14 #include > 15 #include 16 #include 17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include "slic_ds26522.h" 28 29 #define DRV_NAME "ds26522" 30 31 #define SLIC_TRANS_LEN 1 32 #define SLIC_TWO_LEN 2 33 #define SLIC_THREE_LEN 3 34 35 static struct spi_device *g_spi; 36 37 MODULE_LICENSE("GPL"); 38 MODULE_AUTHOR("Zhao Qiang"); > 39 MODULE_DESCRIPTION(DRV_DESC); 40 41 /* the read/write format of address is 42 * w/r|A13|A12|A11|A10|A9|A8|A7|A6|A5|A4|A3|A2|A1|A0|x --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: Binary data
[PATCH] Maxim/driver: Add driver for maxim ds26522
Signed-off-by: Zhao Qiang--- drivers/net/wan/Kconfig| 10 ++ drivers/net/wan/Makefile | 1 + drivers/net/wan/slic_ds26522.c | 256 + drivers/net/wan/slic_ds26522.h | 134 + 4 files changed, 401 insertions(+) create mode 100644 drivers/net/wan/slic_ds26522.c create mode 100644 drivers/net/wan/slic_ds26522.h diff --git a/drivers/net/wan/Kconfig b/drivers/net/wan/Kconfig index 9e314b7..bd3bf3f 100644 --- a/drivers/net/wan/Kconfig +++ b/drivers/net/wan/Kconfig @@ -291,6 +291,16 @@ config FSL_UCC_HDLC To compile this driver as a module, choose M here: the module will be called fsl_ucc_hdlc. +config SLIC_DS26522 + tristate "Slic Maxim ds26522 card support" + depends on SPI + help + This module initializes and configures the slic maxim card + in T1 or E1 mode. + + To compile this driver as a module, choose M here: the + module will be called slic_ds26522. + config DSCC4_PCISYNC bool "Etinc PCISYNC features" depends on DSCC4 diff --git a/drivers/net/wan/Makefile b/drivers/net/wan/Makefile index 25fec40..73c2326 100644 --- a/drivers/net/wan/Makefile +++ b/drivers/net/wan/Makefile @@ -33,6 +33,7 @@ obj-$(CONFIG_PCI200SYN) += pci200syn.o obj-$(CONFIG_PC300TOO) += pc300too.o obj-$(CONFIG_IXP4XX_HSS) += ixp4xx_hss.o obj-$(CONFIG_FSL_UCC_HDLC) += fsl_ucc_hdlc.o +obj-$(CONFIG_SLIC_DS26522) += slic_ds26522.o clean-files := wanxlfw.inc $(obj)/wanxl.o:$(obj)/wanxlfw.inc diff --git a/drivers/net/wan/slic_ds26522.c b/drivers/net/wan/slic_ds26522.c new file mode 100644 index 000..67fd8e7 --- /dev/null +++ b/drivers/net/wan/slic_ds26522.c @@ -0,0 +1,256 @@ +/* + * drivers/net/wan/slic_ds26522.c + * + * Copyright (C) 2016 Freescale Semiconductor, Inc. + * + * Author:Zhao Qiang + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "slic_ds26522.h" + +#define DRV_NAME "ds26522" + +#define SLIC_TRANS_LEN 1 +#define SLIC_TWO_LEN 2 +#define SLIC_THREE_LEN 3 + +static struct spi_device *g_spi; + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Zhao Qiang "); +MODULE_DESCRIPTION(DRV_DESC); + +/* the read/write format of address is + * w/r|A13|A12|A11|A10|A9|A8|A7|A6|A5|A4|A3|A2|A1|A0|x + */ +static void slic_write(struct spi_device *spi, u16 addr, + u8 data) +{ + u8 temp[3]; + + addr = bitrev16(addr) >> 1; + data = bitrev8(data); + temp[0] = (u8)((addr >> 8) & 0x7f); + temp[1] = (u8)(addr & 0xfe); + temp[2] = data; + + /* write spi addr and value */ + spi_write(spi, [0], SLIC_THREE_LEN); +} + +static u8 slic_read(struct spi_device *spi, u16 addr) +{ + u8 temp[2]; + u8 data; + + addr = bitrev16(addr) >> 1; + temp[0] = (u8)(((addr >> 8) & 0x7f) | 0x80); + temp[1] = (u8)(addr & 0xfe); + + spi_write_then_read(spi, [0], SLIC_TWO_LEN, , + SLIC_TRANS_LEN); + + data = bitrev8(data); + return data; +} + +static bool get_slic_product_code(struct spi_device *spi) +{ + u8 device_id; + + device_id = slic_read(spi, DS26522_IDR_ADDR); + if ((device_id & 0xf8) == 0x68) + return true; + else + return false; +} + +static void ds26522_e1_spec_config(struct spi_device *spi) +{ + /* Receive E1 Mode, Framer Disabled */ + slic_write(spi, DS26522_RMMR_ADDR, DS26522_RMMR_E1); + + /* Transmit E1 Mode, Framer Disable */ + slic_write(spi, DS26522_TMMR_ADDR, DS26522_TMMR_E1); + + /* Receive E1 Mode Framer Enable */ + slic_write(spi, DS26522_RMMR_ADDR, + slic_read(spi, DS26522_RMMR_ADDR) | DS26522_RMMR_FRM_EN); + + /* Transmit E1 Mode Framer Enable */ + slic_write(spi, DS26522_TMMR_ADDR, + slic_read(spi, DS26522_TMMR_ADDR) | DS26522_TMMR_FRM_EN); + + /* RCR1, receive E1 B8zs & ESF */ + slic_write(spi, DS26522_RCR1_ADDR, + DS26522_RCR1_E1_HDB3 | DS26522_RCR1_E1_CCS); + + /* RSYSCLK=2.048MHz, RSYNC-Output */ + slic_write(spi, DS26522_RIOCR_ADDR, + DS26522_RIOCR_2048KHZ | DS26522_RIOCR_RSIO_OUT); + + /* TCR1 Transmit E1 b8zs */ + slic_write(spi, DS26522_TCR1_ADDR, DS26522_TCR1_TB8ZS); + + /* TSYSCLK=2.048MHz, TSYNC-Output */ + slic_write(spi, DS26522_TIOCR_ADDR, + DS26522_TIOCR_2048KHZ | DS26522_TIOCR_TSIO_OUT); + + /* Set E1TAF */ +