From patchwork Tue Feb 4 18:48:21 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valentine Barshak X-Patchwork-Id: 3578481 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 ED5F6C02DC for ; Tue, 4 Feb 2014 18:48:33 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 00E272012E for ; Tue, 4 Feb 2014 18:48:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id ED4ED20166 for ; Tue, 4 Feb 2014 18:48:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754472AbaBDSsb (ORCPT ); Tue, 4 Feb 2014 13:48:31 -0500 Received: from mail-la0-f45.google.com ([209.85.215.45]:34911 "EHLO mail-la0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754116AbaBDSsb (ORCPT ); Tue, 4 Feb 2014 13:48:31 -0500 Received: by mail-la0-f45.google.com with SMTP id b8so6822325lan.18 for ; Tue, 04 Feb 2014 10:48:29 -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=j3OO7j0qrjTPFMUTJeRK+aw+/yE4OXAy+nMtGiUbJog=; b=JGFg892/XaCxxLL8C/F+i8QwL/f7s3flgmUo8D1OBMTYgQ5uVC/gUKrNdnMrf3o6mj /mi37z3MGndGnoHRojCIPRNfAk7yigYYr4aWL8Z1xjtpy6gO9ewKbJ6KufzKCLKXZ1rR FYubq2ZCNSTegLR6bFdsQ9hawWRec4FKOWgFU1gNSZmN+sBAVDVDf/OYb1r4kMU7KzfW GUjvQl0FnjqjKYVo5UA50hDI03yH8K7tZlT7vVl+eE79fFH1PVf0/fUkLzDcoXkjBiB4 VUdXEJqf6sgEfCmnH1R97L/IFLcCAKhBCkCppN0kjA0+5x6tRaRrZjK6BoE1t3WczUWg lc0A== X-Gm-Message-State: ALoCoQl7H+uvGcOmUolpZEyY293dC3/CReKhxxSyiXiWEvSa7dRQNiDglhw/QMgLE0rSRToVoXub X-Received: by 10.152.229.225 with SMTP id st1mr31016975lac.2.1391539709714; Tue, 04 Feb 2014 10:48:29 -0800 (PST) Received: from black.localnet ([93.100.122.208]) by mx.google.com with ESMTPSA id 10sm23526813lan.5.2014.02.04.10.48.28 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 04 Feb 2014 10:48:28 -0800 (PST) From: Valentine Barshak To: linux-sh@vger.kernel.org Cc: Simon Horman , Magnus Damm , Laurent Pinchart Subject: [PATCH V4 2/4] ARM: shmobile: koelsch: Add VIN1 SoC camera support Date: Tue, 4 Feb 2014 22:48:21 +0400 Message-Id: <1391539703-5787-3-git-send-email-valentine.barshak@cogentembedded.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1391539703-5787-1-git-send-email-valentine.barshak@cogentembedded.com> References: <1391539703-5787-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. Signed-off-by: Valentine Barshak --- arch/arm/mach-shmobile/board-koelsch.c | 76 ++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) Changes in V2: * made koelsch_add_vin_device function static; Changes in V3: * capitalized ARM in the subject; Changes in V4: * rebased on top of renesas-devel-v3.14-rc1-20140204 tag. diff --git a/arch/arm/mach-shmobile/board-koelsch.c b/arch/arm/mach-shmobile/board-koelsch.c index b9f638e..5bfd910 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 @@ -195,6 +197,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", @@ -227,6 +285,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) @@ -255,6 +329,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(); } /*