From patchwork Thu Dec 26 15:37:59 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valentine Barshak X-Patchwork-Id: 3407131 Return-Path: X-Original-To: patchwork-linux-sh@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id DA199C02DC for ; Thu, 26 Dec 2013 15:38:10 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id F20B520149 for ; Thu, 26 Dec 2013 15:38:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1777720158 for ; Thu, 26 Dec 2013 15:38:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753448Ab3LZPiI (ORCPT ); Thu, 26 Dec 2013 10:38:08 -0500 Received: from mail-la0-f50.google.com ([209.85.215.50]:60747 "EHLO mail-la0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753355Ab3LZPiI (ORCPT ); Thu, 26 Dec 2013 10:38:08 -0500 Received: by mail-la0-f50.google.com with SMTP id el20so3816990lab.9 for ; Thu, 26 Dec 2013 07:38:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=PQqfTH2roeryT+5ydQ+ZKMwaGRUw3NnbFkS4YSDm6K4=; b=M4fWefCplFv0lpfpD8ImT7HQs+0a3YlrM2T+CGwjZY5F2liPmRXHsBe4xwDQfqXkdp LKyyE9UEoMhRigoRe/XRMyiiPRSI5v8igB5OTBx3mcBIKJOBzLD5wDizx0ADgpXFUn5N fRoT3zn6NAAy1qiIKEC67C/v9k95XD8yCqmDAMnXKjyTh9uDRS1wQjAZLx4Lxv0/mkDF 1udvM7begj/ydYbRY9Et8mdjkyxYZWXI2ASHi6o3E8ogMB5H8PDmqAkcjWXYu0I0H05V WUdyQSrW0cGmUFa1dTRhc/MAielBr4pqDm2wUPAT+T8CL93YFsJVlZqORZkQTLTVZdAw RW7w== X-Gm-Message-State: ALoCoQkp//bPvHKp88EQYOmf9yIK0nKGC5MoR0cVcizhOmYW5eJwJzZKULhUWEWRdpJeCHSHRkK7 X-Received: by 10.152.115.230 with SMTP id jr6mr3722996lab.45.1388072286771; Thu, 26 Dec 2013 07:38:06 -0800 (PST) Received: from black.localnet ([93.100.122.208]) by mx.google.com with ESMTPSA id bo10sm18909270lbb.16.2013.12.26.07.38.05 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Dec 2013 07:38:05 -0800 (PST) From: Valentine Barshak To: linux-sh@vger.kernel.org Cc: Simon Horman , Magnus Damm , Kuninori Morimoto , Laurent Pinchart Subject: [PATCH V2 3/3] arm: shmobile: koelsch: Add VIN1 SoC camera support Date: Thu, 26 Dec 2013 19:37:59 +0400 Message-Id: <1388072279-12508-4-git-send-email-valentine.barshak@cogentembedded.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1388072279-12508-1-git-send-email-valentine.barshak@cogentembedded.com> References: <1388072279-12508-1-git-send-email-valentine.barshak@cogentembedded.com> Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This adds VIN1 SoC camera along with ADV7180 subdevice support to Koelsch. VIN0 camera is not registered because it has ADV7612 I2C subdevice which is not supported yet. Changes in V2: * made koelsch_add_vin_device function static. Signed-off-by: Valentine Barshak --- arch/arm/mach-shmobile/board-koelsch.c | 76 ++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/arch/arm/mach-shmobile/board-koelsch.c b/arch/arm/mach-shmobile/board-koelsch.c index 799825c..6eb5a58 100644 --- a/arch/arm/mach-shmobile/board-koelsch.c +++ b/arch/arm/mach-shmobile/board-koelsch.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -35,6 +36,7 @@ #include #include #include +#include #include #include @@ -180,6 +182,62 @@ static void __init koelsch_add_i2c(unsigned idx) i2c_resources + res_idx, 2); } +/* VIN */ +static const struct resource vin_resources[] __initconst = { + /* VIN0 */ + DEFINE_RES_MEM(0xe6ef0000, 0x1000), + DEFINE_RES_IRQ(gic_spi(188)), + /* VIN1 */ + DEFINE_RES_MEM(0xe6ef1000, 0x1000), + DEFINE_RES_IRQ(gic_spi(189)), +}; + +static void __init koelsch_add_vin_device(unsigned idx, + struct rcar_vin_platform_data *pdata) +{ + struct platform_device_info vin_info = { + .parent = &platform_bus, + .name = "r8a7791-vin", + .id = idx, + .res = &vin_resources[idx * 2], + .num_res = 2, + .dma_mask = DMA_BIT_MASK(32), + .data = pdata, + .size_data = sizeof(*pdata), + }; + + BUG_ON(idx > 1); + + platform_device_register_full(&vin_info); +} + +#define KOELSCH_CAMERA(idx, name, addr, pdata, flag) \ +static struct i2c_board_info i2c_cam##idx##_device = { \ + I2C_BOARD_INFO(name, addr), \ +}; \ + \ +static struct rcar_vin_platform_data vin##idx##_pdata = { \ + .flags = flag, \ +}; \ + \ +static struct soc_camera_link cam##idx##_link = { \ + .bus_id = idx, \ + .board_info = &i2c_cam##idx##_device, \ + .i2c_adapter_id = 2, \ + .module_name = name, \ + .priv = pdata, \ +} + +/* Camera 0 is not currently supported due to adv7612 support missing */ +KOELSCH_CAMERA(1, "adv7180", 0x20, NULL, RCAR_VIN_BT656); + +static void __init koelsch_add_camera1_device(void) +{ + platform_device_register_data(&platform_bus, "soc-camera-pdrv", 1, + &cam1_link, sizeof(cam1_link)); + koelsch_add_vin_device(1, &vin1_pdata); +} + static const struct pinctrl_map koelsch_pinctrl_map[] = { /* DU */ PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791", @@ -212,6 +270,22 @@ static const struct pinctrl_map koelsch_pinctrl_map[] = { /* I2C4 */ PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.4", "pfc-r8a7791", "i2c4_c", "i2c4"), + /* VIN0 */ + PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-vin.0", "pfc-r8a7791", + "vin0_data24", "vin0"), + PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-vin.0", "pfc-r8a7791", + "vin0_sync", "vin0"), + PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-vin.0", "pfc-r8a7791", + "vin0_field", "vin0"), + PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-vin.0", "pfc-r8a7791", + "vin0_clkenb", "vin0"), + PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-vin.0", "pfc-r8a7791", + "vin0_clk", "vin0"), + /* VIN1 */ + PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-vin.1", "pfc-r8a7791", + "vin1_data8", "vin1"), + PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-vin.1", "pfc-r8a7791", + "vin1_clk", "vin1"), }; static void __init koelsch_add_standard_devices(void) @@ -238,6 +312,8 @@ static void __init koelsch_add_standard_devices(void) koelsch_add_i2c(2); koelsch_add_i2c(4); koelsch_add_i2c(5); + + koelsch_add_camera1_device(); } /*