From patchwork Tue Jul 10 23:02:02 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kevin Hilman X-Patchwork-Id: 1179261 Return-Path: X-Original-To: patchwork-linux-omap@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 9F10140CDC for ; Tue, 10 Jul 2012 23:02:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754820Ab2GJXCJ (ORCPT ); Tue, 10 Jul 2012 19:02:09 -0400 Received: from na3sys009aog108.obsmtp.com ([74.125.149.199]:43999 "EHLO na3sys009aog108.obsmtp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754703Ab2GJXCI (ORCPT ); Tue, 10 Jul 2012 19:02:08 -0400 Received: from mail-pb0-f54.google.com ([209.85.160.54]) (using TLSv1) by na3sys009aob108.postini.com ([74.125.148.12]) with SMTP ID DSNKT/y0by+gNFGmGzZC3S1hM6lbnJFWVk2+@postini.com; Tue, 10 Jul 2012 16:02:08 PDT Received: by pbbro2 with SMTP id ro2so1288082pbb.27 for ; Tue, 10 Jul 2012 16:02:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:x-gm-message-state; bh=3+CHARhJL52V1gzgBAmo3VTN+2XgQpzr1gpPahavM2c=; b=fVITupJax6xOKBupzKqtiI72mDt9p9/jo2OuXjxtQUIMD2LwNVssqgZcXWHgGXD4Ub kwHuhlF8/oUKtte+/d6NHO8hM9ObbEJ5DduKy+LEp4kzi1KssbQ731wPaoKwZJic14zV mWjeeHq4f3lXQVsHdh41YHs+Le+RQumb5N9hH1xMHWREL63SwU4aDJlVdhSOyWwqVBOg HvWbvHA1ggCUArJ9fpI3ldk2dda3Pn0KDS6PQHKY7E/ac/T8XUXitzvdZDZn+ZyxSGY/ daf5iBLNIrp18BZnTFk8EhfVcb7ZH9Amz+QjaBmcbZA8tCnxDtwOD/uLUYplq7SDLJ8Z q3/A== Received: by 10.68.191.72 with SMTP id gw8mr73672108pbc.143.1341961326799; Tue, 10 Jul 2012 16:02:06 -0700 (PDT) Received: from localhost (c-24-19-7-36.hsd1.wa.comcast.net. [24.19.7.36]) by mx.google.com with ESMTPS id ka5sm392779pbb.37.2012.07.10.16.02.05 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 10 Jul 2012 16:02:06 -0700 (PDT) From: Kevin Hilman To: linux-omap@vger.kernel.org, Paul Walmsley Cc: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/3] ARM: OMAP: omap_device: keep track of driver bound status Date: Tue, 10 Jul 2012 16:02:02 -0700 Message-Id: <1341961324-19657-1-git-send-email-khilman@ti.com> X-Mailer: git-send-email 1.7.9.2 X-Gm-Message-State: ALoCoQmGW0+lrcndnpvZdsd6VdVYk+6uvRy3rA0Z1i0zp5JYN+qFblCqT8z5QNKrNcxH/F0rZvWe Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org Use the bus notifier to keep track of driver bound status by adding a new internal field to struct omap_device: _driver_staus. This will be useful for follow-up patches which need to know whether or not a driver is bound in order to make intelligent omap_device enable/idle decisions. Cc: Paul Walmsley Signed-off-by: Kevin Hilman --- arch/arm/plat-omap/include/plat/omap_device.h | 2 ++ arch/arm/plat-omap/omap_device.c | 14 +++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/arch/arm/plat-omap/include/plat/omap_device.h b/arch/arm/plat-omap/include/plat/omap_device.h index 4327b2c..e0486cb 100644 --- a/arch/arm/plat-omap/include/plat/omap_device.h +++ b/arch/arm/plat-omap/include/plat/omap_device.h @@ -60,6 +60,7 @@ extern struct dev_pm_domain omap_device_pm_domain; * @_dev_wakeup_lat_limit: dev wakeup latency limit in nsec - set by OMAP PM * @_state: one of OMAP_DEVICE_STATE_* (see above) * @flags: device flags + * @_driver_status: one of BUS_NOTIFY_*_DRIVER from * * Integrates omap_hwmod data into Linux platform_device. * @@ -78,6 +79,7 @@ struct omap_device { u8 hwmods_cnt; u8 _state; u8 flags; + u8 _driver_status; }; /* Device driver interface (call via platform_data fn ptrs) */ diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c index c490240..1d1b5ff 100644 --- a/arch/arm/plat-omap/omap_device.c +++ b/arch/arm/plat-omap/omap_device.c @@ -385,17 +385,21 @@ static int _omap_device_notifier_call(struct notifier_block *nb, unsigned long event, void *dev) { struct platform_device *pdev = to_platform_device(dev); + struct omap_device *od; switch (event) { - case BUS_NOTIFY_ADD_DEVICE: - if (pdev->dev.of_node) - omap_device_build_from_dt(pdev); - break; - case BUS_NOTIFY_DEL_DEVICE: if (pdev->archdata.od) omap_device_delete(pdev->archdata.od); break; + case BUS_NOTIFY_ADD_DEVICE: + if (pdev->dev.of_node) + omap_device_build_from_dt(pdev); + /* fall through */ + default: + od = to_omap_device(pdev); + if (od) + od->_driver_status = event; } return NOTIFY_DONE;