From patchwork Mon Apr 8 21:33:44 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergei Shtylyov X-Patchwork-Id: 2411951 Return-Path: X-Original-To: patchwork-linux-sh@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id EE57740060 for ; Mon, 8 Apr 2013 21:35:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965230Ab3DHVew (ORCPT ); Mon, 8 Apr 2013 17:34:52 -0400 Received: from mail-la0-f50.google.com ([209.85.215.50]:36979 "EHLO mail-la0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965229Ab3DHVev (ORCPT ); Mon, 8 Apr 2013 17:34:51 -0400 Received: by mail-la0-f50.google.com with SMTP id el20so1320767lab.9 for ; Mon, 08 Apr 2013 14:34:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:to:subject:cc:from:organization:date:mime-version :content-type:content-transfer-encoding:message-id :x-gm-message-state; bh=dM7LlE7mVBHQLKD0R0OQM+3ugpfJqfugjmnctuljZFY=; b=k11UbrnbuO+hnaqGZMLbrEERhi7ftfgVlR7MKY+nWyeqVbBHe2LtZQFZp4OtIp5qcB DPAYpnLMVyavmhX4C+4TY/XqOBHgnqdcYHVweW0o5uaXA0CtBpnfI5wtaGHkA1u4siGM ZYCrOMAit3pLtKZAlcVbecIhd+mlpkP0aMoKmJuoafasYdSqcbPY0Lp/vCryVq0rMMQ2 +oT7kyBYroP9kxNKVCSrOpqolWgj0TGp7uwUl7GJQo9kgSoKv6u5cZ4Mij2IvdBZLa/P Xy1ZUmrvPaJdW52YPI46LOLW3py98254h5DWsRrcSMTFqs87nhC8Ebfs9QRPBp4Vi8rD gTqg== X-Received: by 10.152.88.97 with SMTP id bf1mr7103928lab.56.1365456888711; Mon, 08 Apr 2013 14:34:48 -0700 (PDT) Received: from wasted.dev.rtsoft.ru (ppp91-79-99-249.pppoe.mtu-net.ru. [91.79.99.249]) by mx.google.com with ESMTPS id t17sm1543733lbd.11.2013.04.08.14.34.46 (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 08 Apr 2013 14:34:47 -0700 (PDT) To: horms@verge.net.au, magnus.damm@gmail.com, linux@arm.linux.org.uk, linux-sh@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 8/9] ARM: shmobile: Marzen: pass platform data to USB PHY device Cc: linux-usb@vger.kernel.org From: Sergei Shtylyov Organization: Cogent Embedded Date: Tue, 9 Apr 2013 01:33:44 +0400 MIME-Version: 1.0 Message-Id: <201304090133.45312.sergei.shtylyov@cogentembedded.com> X-Gm-Message-State: ALoCoQnALZHWoRYv2t4Y8hjHjOGwW8QiiMejLMXHHgsW013CZwJLF4N65xkyG8drGEALQHXnly7J Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org Since we're now going to setup the USBPCTRL0 register using the USB PHY device's platform data, we now need a way to pass those platform data from the board file to the device which is situated in setup-r8a7779.c -- and what I'm suggesting is r8a7779_add_usb_phy_device() that will register USB PHY platform device with the passed platform data using platform_device_register_resndata() call; creating this function envolves deletion of 'usb_phy_device' from r8a7779_devices_dt[], so that it will no longer be registered for the generic R8A7779 machine (where we can't provide the platform data anyway), hence EHCI/OHCI drivers will fail to load as well. For the Marzen board, this new function will be called from marzen_init() to register the USB PHY device early enough. Note that the board and the SoC code have to be in one patch to keep the code bisectable... Signed-off-by: Sergei Shtylyov --- Changes since the original posting: - added a note about bisectability to the changelog. arch/arm/mach-shmobile/board-marzen.c | 5 +++++ arch/arm/mach-shmobile/include/mach/r8a7779.h | 2 ++ arch/arm/mach-shmobile/setup-r8a7779.c | 16 ++++++++-------- 3 files changed, 15 insertions(+), 8 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Index: renesas/arch/arm/mach-shmobile/board-marzen.c =================================================================== --- renesas.orig/arch/arm/mach-shmobile/board-marzen.c +++ renesas/arch/arm/mach-shmobile/board-marzen.c @@ -56,6 +56,10 @@ static struct regulator_consumer_supply REGULATOR_SUPPLY("vdd33a", "smsc911x"), }; +static struct rcar_phy_platform_data usb_phy_platform_data = { + .usbpctrl0 = 0, +}; + /* SMSC LAN89218 */ static struct resource smsc911x_resources[] = { [0] = { @@ -230,6 +234,7 @@ static void __init marzen_init(void) r8a7779_pinmux_init(); r8a7779_add_standard_devices(); + r8a7779_add_usb_phy_device(&usb_phy_platform_data); platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices)); } Index: renesas/arch/arm/mach-shmobile/include/mach/r8a7779.h =================================================================== --- renesas.orig/arch/arm/mach-shmobile/include/mach/r8a7779.h +++ renesas/arch/arm/mach-shmobile/include/mach/r8a7779.h @@ -4,6 +4,7 @@ #include #include #include +#include struct platform_device; @@ -33,6 +34,7 @@ extern void r8a7779_add_early_devices(vo extern void r8a7779_add_standard_devices(void); extern void r8a7779_add_standard_devices_dt(void); extern void r8a7779_add_ether_device(struct sh_eth_plat_data *pdata); +extern void r8a7779_add_usb_phy_device(struct rcar_phy_platform_data *pdata); extern void r8a7779_init_late(void); extern void r8a7779_clock_init(void); extern void r8a7779_pinmux_init(void); Index: renesas/arch/arm/mach-shmobile/setup-r8a7779.c =================================================================== --- renesas.orig/arch/arm/mach-shmobile/setup-r8a7779.c +++ renesas/arch/arm/mach-shmobile/setup-r8a7779.c @@ -407,13 +407,6 @@ static struct resource usb_phy_resources }, }; -static struct platform_device usb_phy_device = { - .name = "rcar_usb_phy", - .id = -1, - .resource = usb_phy_resources, - .num_resources = ARRAY_SIZE(usb_phy_resources), -}; - /* USB */ static struct usb_phy *phy; @@ -585,7 +578,6 @@ static struct platform_device *r8a7779_d &scif5_device, &tmu00_device, &tmu01_device, - &usb_phy_device, }; static struct platform_device *r8a7779_standard_devices[] __initdata = { @@ -620,6 +612,14 @@ void __init r8a7779_add_ether_device(str pdata, sizeof(*pdata)); } +void __init r8a7779_add_usb_phy_device(struct rcar_phy_platform_data *pdata) +{ + platform_device_register_resndata(&platform_bus, "rcar_usb_phy", -1, + usb_phy_resources, + ARRAY_SIZE(usb_phy_resources), + pdata, sizeof(*pdata)); +} + /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ void __init __weak r8a7779_register_twd(void) { }