-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Build and register an hwspinlock platform device. Although only OMAP4 supports the hardware spinlock module (for now), it is still safe to run this initcall on all omaps, because hwmod lookup will simply fail on hwspinlock-less platforms. Signed-off-by: Simon Que <sque@ti.com> Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com> Cc: Benoit Cousson <b-cousson@ti.com> Cc: Kevin Hilman <khilman@ti.com> Cc: Paul Walmsley <paul@pwsan.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
- Loading branch information
Simon Que
authored and
Tony Lindgren
committed
Feb 17, 2011
1 parent
70ba4cc
commit 7bb412a
Showing
2 changed files
with
64 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/* | ||
* OMAP hardware spinlock device initialization | ||
* | ||
* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com | ||
* | ||
* Contact: Simon Que <sque@ti.com> | ||
* Hari Kanigeri <h-kanigeri2@ti.com> | ||
* | ||
* This program is free software; you can redistribute it and/or | ||
* modify it under the terms of the GNU General Public License | ||
* version 2 as published by the Free Software Foundation. | ||
* | ||
* This program is distributed in the hope that it will be useful, but | ||
* WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
* General Public License for more details. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/init.h> | ||
#include <linux/err.h> | ||
|
||
#include <plat/omap_hwmod.h> | ||
#include <plat/omap_device.h> | ||
|
||
struct omap_device_pm_latency omap_spinlock_latency[] = { | ||
{ | ||
.deactivate_func = omap_device_idle_hwmods, | ||
.activate_func = omap_device_enable_hwmods, | ||
.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST, | ||
} | ||
}; | ||
|
||
int __init hwspinlocks_init(void) | ||
{ | ||
int retval = 0; | ||
struct omap_hwmod *oh; | ||
struct omap_device *od; | ||
const char *oh_name = "spinlock"; | ||
const char *dev_name = "omap_hwspinlock"; | ||
|
||
/* | ||
* Hwmod lookup will fail in case our platform doesn't support the | ||
* hardware spinlock module, so it is safe to run this initcall | ||
* on all omaps | ||
*/ | ||
oh = omap_hwmod_lookup(oh_name); | ||
if (oh == NULL) | ||
return -EINVAL; | ||
|
||
od = omap_device_build(dev_name, 0, oh, NULL, 0, | ||
omap_spinlock_latency, | ||
ARRAY_SIZE(omap_spinlock_latency), false); | ||
if (IS_ERR(od)) { | ||
pr_err("Can't build omap_device for %s:%s\n", dev_name, | ||
oh_name); | ||
retval = PTR_ERR(od); | ||
} | ||
|
||
return retval; | ||
} | ||
/* early board code might need to reserve specific hwspinlock instances */ | ||
postcore_initcall(hwspinlocks_init); |