Hi ! Here you have the third round of the HSI framework patches. The patch series introduces the HSI framework, an SSI driver for OMAP and a generic character device for HSI/SSI devices. SSI, which is a legacy version of HSI, is used to connect the application engine with the cellular modem on the Nokia N900. In this round we have fixed: - Locking issues in the HSI framework. - Fixes on removal of controller's modules. - Error path handling in the omap_ssi driver. - Increase the robustness of hsi_char. - Typos and cosmetics. - Some unused parameters warnings. I would very glad to continue getting feedback about this proposal. This patch series is based on 2.6.36-rc6. Version 2 of the patch set: http://lkml.org/lkml/2010/5/7/233 Br, Carlos Chinea Andras Domokos (3): HSI CHAR: Add HSI char device driver HSI CHAR: Add HSI char device kernel configuration HSI CHAR: Update ioctl-number.txt Carlos Chinea (4): HSI: Introducing HSI framework OMAP SSI: Introducing OMAP SSI driver OMAP SSI: Add OMAP SSI to the kernel configuration HSI: Add HSI API documentation Documentation/DocBook/device-drivers.tmpl | 17 + Documentation/ioctl/ioctl-number.txt | 1 + arch/arm/mach-omap2/Makefile | 3 + arch/arm/mach-omap2/ssi.c | 139 +++ arch/arm/plat-omap/include/plat/ssi.h | 204 ++++ drivers/Kconfig | 2 + drivers/Makefile | 1 + drivers/hsi/Kconfig | 16 + drivers/hsi/Makefile | 5 + drivers/hsi/clients/Kconfig | 13 + drivers/hsi/clients/Makefile | 5 + drivers/hsi/clients/hsi_char.c | 1090 +++++++++++++++++ drivers/hsi/controllers/Kconfig | 21 + drivers/hsi/controllers/Makefile | 5 + drivers/hsi/controllers/omap_ssi.c | 1836 +++++++++++++++++++++++++++++ drivers/hsi/hsi.c | 516 ++++++++ ...
Add an entry for HSI in the device-drivers section of the kernel documentation. Signed-off-by: Carlos Chinea <carlos.chinea@nokia.com> --- Documentation/DocBook/device-drivers.tmpl | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/Documentation/DocBook/device-drivers.tmpl b/Documentation/DocBook/device-drivers.tmpl index feca075..28ab783 100644 --- a/Documentation/DocBook/device-drivers.tmpl +++ b/Documentation/DocBook/device-drivers.tmpl @@ -428,4 +428,21 @@ X!Idrivers/video/console/fonts.c !Edrivers/i2c/i2c-core.c </chapter> + <chapter id="hsi"> + <title>High Speed Synchronous Serial Interface (HSI)</title> + + <para> + High Speed Synchronous Serial Interface (HSI) is a + serial interface mainly used for connecting application + engines (APE) with cellular modem engines (CMT) in cellular + handsets. + + HSI provides multiplexing for up to 16 logical channels, + low-latency and full duplex communication. + </para> + +!Iinclude/linux/hsi/hsi.h +!Edrivers/hsi/hsi.c + </chapter> + </book> -- 1.5.6.5 --
Adds HSI framework in to the linux kernel. High Speed Synchronous Serial Interface (HSI) is a serial interface mainly used for connecting application engines (APE) with cellular modem engines (CMT) in cellular handsets. HSI provides multiplexing for up to 16 logical channels, low-latency and full duplex communication. Signed-off-by: Carlos Chinea <carlos.chinea@nokia.com> --- drivers/Kconfig | 2 + drivers/Makefile | 1 + drivers/hsi/Kconfig | 13 ++ drivers/hsi/Makefile | 4 + drivers/hsi/hsi.c | 516 +++++++++++++++++++++++++++++++++++++++++++++++ include/linux/hsi/hsi.h | 376 ++++++++++++++++++++++++++++++++++ 6 files changed, 912 insertions(+), 0 deletions(-) create mode 100644 drivers/hsi/Kconfig create mode 100644 drivers/hsi/Makefile create mode 100644 drivers/hsi/hsi.c create mode 100644 include/linux/hsi/hsi.h diff --git a/drivers/Kconfig b/drivers/Kconfig index a2b902f..4fe39f9 100644 --- a/drivers/Kconfig +++ b/drivers/Kconfig @@ -50,6 +50,8 @@ source "drivers/i2c/Kconfig" source "drivers/spi/Kconfig" +source "drivers/hsi/Kconfig" + source "drivers/pps/Kconfig" source "drivers/gpio/Kconfig" diff --git a/drivers/Makefile b/drivers/Makefile index 63e3aa9..6c6922a 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -47,6 +47,7 @@ obj-$(CONFIG_SCSI) += scsi/ obj-$(CONFIG_ATA) += ata/ obj-$(CONFIG_MTD) += mtd/ obj-$(CONFIG_SPI) += spi/ +obj-$(CONFIG_HSI) += hsi/ obj-y += net/ obj-$(CONFIG_ATM) += atm/ obj-$(CONFIG_FUSION) += message/ diff --git a/drivers/hsi/Kconfig b/drivers/hsi/Kconfig new file mode 100644 index 0000000..5af62ce --- /dev/null +++ b/drivers/hsi/Kconfig @@ -0,0 +1,13 @@ +# +# HSI driver configuration +# +menuconfig HSI + bool "HSI support" + ---help--- + The "High speed synchronous Serial Interface" is + synchronous serial interface used mainly to connect + application engines and cellular modems. + +if HSI + +endif # HSI diff --git ...
From: Andras Domokos <andras.domokos@nokia.com> Add HSI char device driver to the kernel. Signed-off-by: Andras Domokos <andras.domokos@nokia.com> Signed-off-by: Carlos Chinea <carlos.chinea@nokia.com> --- drivers/hsi/clients/hsi_char.c | 1090 ++++++++++++++++++++++++++++++++++++++++ include/linux/hsi/hsi_char.h | 66 +++ 2 files changed, 1156 insertions(+), 0 deletions(-) create mode 100644 drivers/hsi/clients/hsi_char.c create mode 100644 include/linux/hsi/hsi_char.h diff --git a/drivers/hsi/clients/hsi_char.c b/drivers/hsi/clients/hsi_char.c new file mode 100644 index 0000000..2d376a1 --- /dev/null +++ b/drivers/hsi/clients/hsi_char.c @@ -0,0 +1,1090 @@ +/* + * hsi-char.c + * + * HSI character device driver, implements the character device + * interface. + * + * Copyright (C) 2010 Nokia Corporation. All rights reserved. + * + * Contact: Andras Domokos <andras.domokos@nokia.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +#include <linux/errno.h> +#include <linux/types.h> +#include <asm/atomic.h> +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/module.h> +#include <linux/list.h> +#include <linux/slab.h> +#include <linux/poll.h> +#include <linux/ioctl.h> +#include <linux/wait.h> +#include <linux/fs.h> +#include <linux/sched.h> +#include <linux/device.h> +#include <linux/cdev.h> +#include ...
From: Andras Domokos <andras.domokos@nokia.com> Added ioctl range for HSI char devices to the documentation Signed-off-by: Andras Domokos <andras.domokos@nokia.com> Signed-off-by: Carlos Chinea <carlos.chinea@nokia.com> --- Documentation/ioctl/ioctl-number.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index 33223ff..d2dc737 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt @@ -225,6 +225,7 @@ Code Seq#(hex) Include File Comments 'j' 00-3F linux/joystick.h 'k' 00-0F linux/spi/spidev.h conflict! 'k' 00-05 video/kyro.h conflict! +'k' 10-17 linux/hsi/hsi_char.h HSI character device 'l' 00-3F linux/tcfs_fs.h transparent cryptographic file system <http://web.archive.org/web/*/http://mikonos.dia.unisa.it/tcfs> 'l' 40-7F linux/udf_fs_i.h in development: -- 1.5.6.5 --
From: Andras Domokos <andras.domokos@nokia.com> Add HSI character device kernel configuration Signed-off-by: Andras Domokos <andras.domokos@nokia.com> Signed-off-by: Carlos Chinea <carlos.chinea@nokia.com> --- drivers/hsi/Kconfig | 1 + drivers/hsi/Makefile | 2 +- drivers/hsi/clients/Kconfig | 13 +++++++++++++ drivers/hsi/clients/Makefile | 5 +++++ include/linux/Kbuild | 1 + include/linux/hsi/Kbuild | 1 + 6 files changed, 22 insertions(+), 1 deletions(-) create mode 100644 drivers/hsi/clients/Kconfig create mode 100644 drivers/hsi/clients/Makefile create mode 100644 include/linux/hsi/Kbuild diff --git a/drivers/hsi/Kconfig b/drivers/hsi/Kconfig index 07987b6..94fc793 100644 --- a/drivers/hsi/Kconfig +++ b/drivers/hsi/Kconfig @@ -11,5 +11,6 @@ menuconfig HSI if HSI source "drivers/hsi/controllers/Kconfig" +source "drivers/hsi/clients/Kconfig" endif # HSI diff --git a/drivers/hsi/Makefile b/drivers/hsi/Makefile index d020ae1..ebc91b3 100644 --- a/drivers/hsi/Makefile +++ b/drivers/hsi/Makefile @@ -2,4 +2,4 @@ # Makefile for HSI # obj-$(CONFIG_HSI) += hsi.o -obj-y += controllers/ +obj-y += controllers/ clients/ diff --git a/drivers/hsi/clients/Kconfig b/drivers/hsi/clients/Kconfig new file mode 100644 index 0000000..3bacd27 --- /dev/null +++ b/drivers/hsi/clients/Kconfig @@ -0,0 +1,13 @@ +# +# HSI clients configuration +# + +comment "HSI clients" + +config HSI_CHAR + tristate "HSI/SSI character driver" + depends on HSI + ---help--- + If you say Y here, you will enable the HSI/SSI character driver. + This driver provides a simple character device interface for + serial communication with the cellular modem over HSI/SSI bus. diff --git a/drivers/hsi/clients/Makefile b/drivers/hsi/clients/Makefile new file mode 100644 index 0000000..327c0e2 --- /dev/null +++ b/drivers/hsi/clients/Makefile @@ -0,0 +1,5 @@ +# +# Makefile for HSI clients +# + +obj-$(CONFIG_HSI_CHAR) += ...
Introduces the OMAP SSI driver in the kernel. The Synchronous Serial Interface (SSI) is a legacy version of HSI. As in the case of HSI, it is mainly used to connect Application engines (APE) with cellular modem engines (CMT) in cellular handsets. It provides a multichannel, full-duplex, multi-core communication with no reference clock. The OMAP SSI block is capable of reaching speeds of 110 Mbit/s. Signed-off-by: Carlos Chinea <carlos.chinea@nokia.com> --- arch/arm/mach-omap2/ssi.c | 139 +++ arch/arm/plat-omap/include/plat/ssi.h | 204 ++++ drivers/hsi/controllers/omap_ssi.c | 1836 +++++++++++++++++++++++++++++++++ 3 files changed, 2179 insertions(+), 0 deletions(-) create mode 100644 arch/arm/mach-omap2/ssi.c create mode 100644 arch/arm/plat-omap/include/plat/ssi.h create mode 100644 drivers/hsi/controllers/omap_ssi.c diff --git a/arch/arm/mach-omap2/ssi.c b/arch/arm/mach-omap2/ssi.c new file mode 100644 index 0000000..b46aea8 --- /dev/null +++ b/arch/arm/mach-omap2/ssi.c @@ -0,0 +1,139 @@ +/* + * linux/arch/arm/mach-omap2/ssi.c + * + * Copyright (C) 2010 Nokia Corporation. All rights reserved. + * + * Contact: Carlos Chinea <carlos.chinea@nokia.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + */ + +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/err.h> +#include <linux/gpio.h> +#include ...
This will probably cause trouble on omap2 and 4? To me it seems that you should at least return early on the unsupported platforms. You might want to consider updating this for omap hwmod as it will automate the platform_device and PM related issues to some extent. Regards, Tony --
Hi, Yes in the case of omap2 and omap3. For omap4, It is my understanding that SSI will be replaced by HSI. I will add dependencies to ARCH_OMAP2 and ARCH_OMAP3 for OMAP_SSI , so Thanks for the review :) Carlos -- Carlos Chinea <carlos.chinea@nokia.com> --
Add OMAP SSI device and driver to the kernel configuration Signed-off-by: Carlos Chinea <carlos.chinea@nokia.com> --- arch/arm/mach-omap2/Makefile | 3 +++ drivers/hsi/Kconfig | 2 ++ drivers/hsi/Makefile | 1 + drivers/hsi/controllers/Kconfig | 21 +++++++++++++++++++++ drivers/hsi/controllers/Makefile | 5 +++++ 5 files changed, 32 insertions(+), 0 deletions(-) create mode 100644 drivers/hsi/controllers/Kconfig create mode 100644 drivers/hsi/controllers/Makefile diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index 7352412..0e5e8eb 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -108,6 +108,9 @@ obj-y += $(iommu-m) $(iommu-y) i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o obj-y += $(i2c-omap-m) $(i2c-omap-y) +omap-ssi-$(CONFIG_OMAP_SSI) := ssi.o +obj-y += $(omap-ssi-m) $(omap-ssi-y) + # Specific board support obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o obj-$(CONFIG_MACH_OMAP_H4) += board-h4.o diff --git a/drivers/hsi/Kconfig b/drivers/hsi/Kconfig index 5af62ce..07987b6 100644 --- a/drivers/hsi/Kconfig +++ b/drivers/hsi/Kconfig @@ -10,4 +10,6 @@ menuconfig HSI if HSI +source "drivers/hsi/controllers/Kconfig" + endif # HSI diff --git a/drivers/hsi/Makefile b/drivers/hsi/Makefile index b42b6cf..d020ae1 100644 --- a/drivers/hsi/Makefile +++ b/drivers/hsi/Makefile @@ -2,3 +2,4 @@ # Makefile for HSI # obj-$(CONFIG_HSI) += hsi.o +obj-y += controllers/ diff --git a/drivers/hsi/controllers/Kconfig b/drivers/hsi/controllers/Kconfig new file mode 100644 index 0000000..37a2568 --- /dev/null +++ b/drivers/hsi/controllers/Kconfig @@ -0,0 +1,21 @@ +# +# HSI controllers configuration +# +comment "HSI controllers" + +config OMAP_SSI + tristate "OMAP SSI hardware driver" + depends on ARCH_OMAP && HSI + default n + ---help--- + If you say Y here, you will enable the OMAP SSI hardware driver. + + If unsure, say N. + +if ...
