Lines Matching +full:sun6i +full:- +full:a31 +full:- +full:p2wi

2  * Sunxi A31 Power Management Unit
5 * http://linux-sunxi.org
7 * Based on sun6i sources and earlier U-Boot Allwiner A10 SPL work
9 * (C) Copyright 2006-2013
14 * SPDX-License-Identifier: GPL-2.0+
22 #include <asm/arch/p2wi.h>
29 struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE; in p2wi_init() local
31 /* Enable p2wi and PIO clk, and de-assert their resets */ in p2wi_init()
37 /* Reset p2wi controller and set clock to CLKIN(12)/8 = 1.5 MHz */ in p2wi_init()
38 writel(P2WI_CTRL_RESET, &p2wi->ctrl); in p2wi_init()
41 &p2wi->cc); in p2wi_init()
46 struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE; in p2wi_change_to_p2wi_mode() local
53 &p2wi->pm); in p2wi_change_to_p2wi_mode()
55 while ((readl(&p2wi->pm) & P2WI_PM_INIT_SEND)) { in p2wi_change_to_p2wi_mode()
57 return -ETIME; in p2wi_change_to_p2wi_mode()
65 struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE; in p2wi_await_trans() local
71 reg = readl(&p2wi->status); in p2wi_await_trans()
73 ret = -EIO; in p2wi_await_trans()
81 ret = -ETIME; in p2wi_await_trans()
85 writel(reg, &p2wi->status); /* Clear status bits */ in p2wi_await_trans()
91 struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE; in p2wi_read() local
94 writel(P2WI_DATADDR_BYTE_1(addr), &p2wi->dataddr0); in p2wi_read()
96 P2WI_DATA_NUM_BYTES_READ, &p2wi->numbytes); in p2wi_read()
97 writel(P2WI_STAT_TRANS_DONE, &p2wi->status); in p2wi_read()
98 writel(P2WI_CTRL_TRANS_START, &p2wi->ctrl); in p2wi_read()
102 *data = readl(&p2wi->data0) & P2WI_DATA_BYTE_1_MASK; in p2wi_read()
108 struct sunxi_p2wi_reg *p2wi = (struct sunxi_p2wi_reg *)SUN6I_P2WI_BASE; in p2wi_write() local
110 writel(P2WI_DATADDR_BYTE_1(addr), &p2wi->dataddr0); in p2wi_write()
111 writel(P2WI_DATA_BYTE_1(data), &p2wi->data0); in p2wi_write()
112 writel(P2WI_DATA_NUM_BYTES(1), &p2wi->numbytes); in p2wi_write()
113 writel(P2WI_STAT_TRANS_DONE, &p2wi->status); in p2wi_write()
114 writel(P2WI_CTRL_TRANS_START, &p2wi->ctrl); in p2wi_write()