Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ab0620b authored by Ondrej Zary's avatar Ondrej Zary Committed by Mauro Carvalho Chehab
Browse files

[media] introduce gspca-stk1135: Syntek STK1135 driver

Hello,
this is a new gspca driver for Syntek STK1135 webcams. The code is completely
new, but register values are based on Syntekdriver (stk11xx) by Nicolas VIVIEN
(http://syntekdriver.sourceforge.net

).
Only one webcam type is supported now - vendor 0x174f, device 0x6a31.
It's Asus F5RL laptop flippable webcam with MT9M112.
The camera works better than in Windows - initializes much faster and
provides more resolutions (the sensor can do almost any resolution - just
add it to the stk1135_modes[] - could this feature be somehow used by
applications to avoid SW scaling?).
Autoflip works too - when the camera is flipped around, the image is flipped
automatically.

Signed-off-by: default avatarOndrej Zary <linux@rainbow-software.org>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent d48de1c7
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -338,6 +338,15 @@ config USB_GSPCA_STK014
	  To compile this driver as a module, choose M here: the
	  module will be called gspca_stk014.

config USB_GSPCA_STK1135
	tristate "Syntek STK1135 USB Camera Driver"
	depends on VIDEO_V4L2 && USB_GSPCA
	help
	  Say Y here if you want support for cameras based on the STK1135 chip.

	  To compile this driver as a module, choose M here: the
	  module will be called gspca_stk1135.

config USB_GSPCA_STV0680
	tristate "STV0680 USB Camera Driver"
	depends on VIDEO_V4L2 && USB_GSPCA
+2 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ obj-$(CONFIG_USB_GSPCA_SQ905C) += gspca_sq905c.o
obj-$(CONFIG_USB_GSPCA_SQ930X)   += gspca_sq930x.o
obj-$(CONFIG_USB_GSPCA_SUNPLUS)  += gspca_sunplus.o
obj-$(CONFIG_USB_GSPCA_STK014)   += gspca_stk014.o
obj-$(CONFIG_USB_GSPCA_STK1135)  += gspca_stk1135.o
obj-$(CONFIG_USB_GSPCA_STV0680)  += gspca_stv0680.o
obj-$(CONFIG_USB_GSPCA_T613)     += gspca_t613.o
obj-$(CONFIG_USB_GSPCA_TOPRO)    += gspca_topro.o
@@ -78,6 +79,7 @@ gspca_sq905-objs := sq905.o
gspca_sq905c-objs   := sq905c.o
gspca_sq930x-objs   := sq930x.o
gspca_stk014-objs   := stk014.o
gspca_stk1135-objs  := stk1135.o
gspca_stv0680-objs  := stv0680.o
gspca_sunplus-objs  := sunplus.o
gspca_t613-objs     := t613.o
+685 −0

File added.

Preview size limit exceeded, changes collapsed.

+57 −0
Original line number Diff line number Diff line
/*
 * STK1135 registers
 *
 * Copyright (c) 2013 Ondrej Zary
 *
 * 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
 * any later version.
 *
 * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#define STK1135_REG_GCTRL	0x000	/* GPIO control */
#define STK1135_REG_ICTRL	0x004	/* Interrupt control */
#define STK1135_REG_IDATA	0x008	/* Interrupt data */
#define STK1135_REG_RMCTL	0x00c	/* Remote wakeup control */
#define STK1135_REG_POSVA	0x010	/* Power-on strapping data */

#define STK1135_REG_SENSO	0x018	/* Sensor select options */
#define STK1135_REG_PLLFD	0x01c	/* PLL frequency divider */

#define STK1135_REG_SCTRL	0x100	/* Sensor control register */
#define STK1135_REG_DCTRL	0x104	/* Decimation control register */
#define STK1135_REG_CISPO	0x110	/* Capture image starting position */
#define STK1135_REG_CIEPO	0x114	/* Capture image ending position */
#define STK1135_REG_TCTRL	0x120	/* Test data control */

#define STK1135_REG_SICTL	0x200	/* Serial interface control register */
#define STK1135_REG_SBUSW	0x204	/* Serial bus write */
#define STK1135_REG_SBUSR	0x208	/* Serial bus read */
#define STK1135_REG_SCSI	0x20c	/* Software control serial interface */
#define STK1135_REG_GSBWP	0x210	/* General serial bus write port */
#define STK1135_REG_GSBRP	0x214	/* General serial bus read port */
#define STK1135_REG_ASIC	0x2fc	/* Alternate serial interface control */

#define STK1135_REG_TMGEN	0x300	/* Timing generator */
#define STK1135_REG_TCP1	0x350	/* Timing control parameter 1 */

struct stk1135_pkt_header {
	u8 flags;
	u8 seq;
	__le16 gpio;
} __packed;

#define STK1135_HDR_FRAME_START	(1 << 7)
#define STK1135_HDR_ODD		(1 << 6)
#define STK1135_HDR_I2C_VBLANK	(1 << 5)

#define STK1135_HDR_SEQ_MASK	0x3f