From patchwork Wed Dec 25 19:36:03 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valentine Barshak X-Patchwork-Id: 3405671 Return-Path: X-Original-To: patchwork-linux-sh@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id C5A7F9F169 for ; Wed, 25 Dec 2013 19:36:14 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id A9ADA2012D for ; Wed, 25 Dec 2013 19:36:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9ACC920154 for ; Wed, 25 Dec 2013 19:36:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752464Ab3LYTgM (ORCPT ); Wed, 25 Dec 2013 14:36:12 -0500 Received: from mail-lb0-f177.google.com ([209.85.217.177]:40034 "EHLO mail-lb0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752465Ab3LYTgL (ORCPT ); Wed, 25 Dec 2013 14:36:11 -0500 Received: by mail-lb0-f177.google.com with SMTP id q8so3301815lbi.22 for ; Wed, 25 Dec 2013 11:36:09 -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=uBBMS4Cwb49kIHNNm1h+xOVWU2wn+cDWpOcYaUMCIQI=; b=dNZA8txdWvkTRKkvF82kVDH7fNzBfzaFuU4qiae/IVEuzZZr+WsqJEGiAEMHmk2VoQ KALjsPrId8Ul6P1pyIyvO3uqaDekLUwbvgDzDOdLXe9hyCIgDviXqCjsYzNdwS07SB9M WTHSKWcr9jM3PzwzNKN9APiQ/FjSAxOXVa4cVb0aFQ5V3G7dacdC7rZ2MnxDPgvNkZEM EWLE1uA494E+UkLAU//38J2aPHqxrO5vBBWukvnT/fLmnG+0eVmN0w3qP9Wy7VL3awbq Ae0NXmbHDtvT6F6TzpPJLdH/TB+pjNHneYSshTpK5d+4UgNXPL7i1SEi8B4WvH+QI+gz VZyg== X-Gm-Message-State: ALoCoQkE+DYbrquJdi+zszJl9zwQso02VlLmQd/bV6r+EfqHblH+mikkKg644+A/ZCDT/B/sbe6n X-Received: by 10.152.36.227 with SMTP id t3mr16940298laj.14.1388000169681; Wed, 25 Dec 2013 11:36:09 -0800 (PST) Received: from black.localnet ([93.100.122.208]) by mx.google.com with ESMTPSA id ld10sm21773652lab.8.2013.12.25.11.36.08 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 25 Dec 2013 11:36:09 -0800 (PST) From: Valentine Barshak To: linux-sh@vger.kernel.org Cc: Simon Horman , Magnus Damm , Kuninori Morimoto , Laurent Pinchart Subject: [PATCH 3/3] arm: shmobile: koelsch: Add VIN1 SoC camera support Date: Wed, 25 Dec 2013 23:36:03 +0400 Message-Id: <1388000163-9932-4-git-send-email-valentine.barshak@cogentembedded.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1388000163-9932-1-git-send-email-valentine.barshak@cogentembedded.com> References: <1388000163-9932-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(+) diff --git a/arch/arm/mach-shmobile/board-koelsch.c b/arch/arm/mach-shmobile/board-koelsch.c index 799825c..a7fd27b 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)), +}; + +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(); } /*