ARM: rockchip: rk3228: implement function rk3228_restart
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-omap2 / omap_hwmod_reset.c
1 /*
2  * OMAP IP block custom reset and preprogramming stubs
3  *
4  * Copyright (C) 2012 Texas Instruments, Inc.
5  * Paul Walmsley
6  *
7  * A small number of IP blocks need custom reset and preprogramming
8  * functions.  The stubs in this file provide a standard way for the
9  * hwmod code to call these functions, which are to be located under
10  * drivers/.
11  *
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License as
14  * published by the Free Software Foundation version 2.
15  *
16  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
17  * kind, whether express or implied; without even the implied warranty
18  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
24  * 02110-1301 USA
25  */
26 #include <linux/kernel.h>
27 #include <linux/errno.h>
28
29 #include <sound/aess.h>
30
31 #include "omap_hwmod.h"
32
33 /**
34  * omap_hwmod_aess_preprogram - enable AESS internal autogating
35  * @oh: struct omap_hwmod *
36  *
37  * The AESS will not IdleAck to the PRCM until its internal autogating
38  * is enabled.  Since internal autogating is disabled by default after
39  * AESS reset, we must enable autogating after the hwmod code resets
40  * the AESS.  Returns 0.
41  */
42 int omap_hwmod_aess_preprogram(struct omap_hwmod *oh)
43 {
44         void __iomem *va;
45
46         va = omap_hwmod_get_mpu_rt_va(oh);
47         if (!va)
48                 return -EINVAL;
49
50         aess_enable_autogating(va);
51
52         return 0;
53 }