blob: 75e8bb5c4031ae0e82fa414fc1ca55ca8ec4d2cc [file] [log] [blame]
Matt Wagantallb3fe8992011-12-07 19:26:55 -08001/*
Duy Truonge833aca2013-02-12 13:35:08 -08002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Matt Wagantallb3fe8992011-12-07 19:26:55 -08003 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 and
6 * only version 2 as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13#ifndef __MSM_PIL_Q6V5_H
14#define __MSM_PIL_Q6V5_H
15
16struct regulator;
17struct clk;
18struct pil_device;
19struct pil_desc;
20struct platform_device;
21
22struct q6v5_data {
23 void __iomem *reg_base;
Matt Wagantall8c2246d2012-08-12 17:08:04 -070024 struct clk *xo; /* XO clock source */
25 struct clk *ahb_clk; /* PIL access to registers */
26 struct clk *axi_clk; /* CPU access to memory */
27 struct clk *core_clk; /* CPU core */
28 struct clk *reg_clk; /* CPU access registers */
29 struct clk *rom_clk; /* Boot ROM */
Matt Wagantallc2bbdc32012-03-21 19:44:50 -070030 void __iomem *axi_halt_base;
Matt Wagantallb3fe8992011-12-07 19:26:55 -080031 void __iomem *rmb_base;
Matt Wagantall4e2599e2012-03-21 22:31:35 -070032 void __iomem *restart_reg;
Matt Wagantall16bc5cc2012-08-09 21:33:23 -070033 void __iomem *io_clamp_reg;
Matt Wagantallb3fe8992011-12-07 19:26:55 -080034 unsigned long start_addr;
35 struct regulator *vreg;
Matt Wagantalld41ce772012-05-10 23:16:41 -070036 bool is_booted;
Matt Wagantallb3fe8992011-12-07 19:26:55 -080037 int self_auth;
Matt Wagantallb3fe8992011-12-07 19:26:55 -080038 struct pil_device *pil;
39};
40
41int pil_q6v5_make_proxy_votes(struct pil_desc *pil);
42void pil_q6v5_remove_proxy_votes(struct pil_desc *pil);
Matt Wagantallb7747992012-05-11 19:37:51 -070043void pil_q6v5_halt_axi_port(struct pil_desc *pil, void __iomem *halt_base);
Matt Wagantallb3fe8992011-12-07 19:26:55 -080044int pil_q6v5_init_image(struct pil_desc *pil, const u8 *metadata,
45 size_t size);
46void pil_q6v5_shutdown(struct pil_desc *pil);
47int pil_q6v5_reset(struct pil_desc *pil);
Matt Wagantallb3fe8992011-12-07 19:26:55 -080048struct pil_desc *pil_q6v5_init(struct platform_device *pdev);
49
50#endif