Lines Matching refs:syscon

23 rt_err_t rt_syscon_read(struct rt_syscon *syscon, rt_off_t offset, rt_uint32_t *out_val)  in rt_syscon_read()  argument
25 if (offset < syscon->iomem_size) in rt_syscon_read()
27 rt_ubase_t level = rt_spin_lock_irqsave(&syscon->rw_lock); in rt_syscon_read()
29 *out_val = HWREG32(syscon->iomem_base + offset); in rt_syscon_read()
31 rt_spin_unlock_irqrestore(&syscon->rw_lock, level); in rt_syscon_read()
41 rt_err_t rt_syscon_write(struct rt_syscon *syscon, rt_off_t offset, rt_uint32_t val) in rt_syscon_write() argument
43 if (offset < syscon->iomem_size) in rt_syscon_write()
45 rt_ubase_t level = rt_spin_lock_irqsave(&syscon->rw_lock); in rt_syscon_write()
47 HWREG32(syscon->iomem_base + offset) = val; in rt_syscon_write()
49 rt_spin_unlock_irqrestore(&syscon->rw_lock, level); in rt_syscon_write()
59 rt_err_t rt_syscon_update_bits(struct rt_syscon *syscon, rt_off_t offset, rt_uint32_t mask, rt_uint… in rt_syscon_update_bits() argument
62 rt_ubase_t level = rt_spin_lock_irqsave(&syscon->rw_lock); in rt_syscon_update_bits()
64 if (offset < syscon->iomem_size) in rt_syscon_update_bits()
66 rt_uint32_t old_val = HWREG32(syscon->iomem_base + offset); in rt_syscon_update_bits()
70 HWREG32(syscon->iomem_base + offset) = old_val | val; in rt_syscon_update_bits()
79 rt_spin_unlock_irqrestore(&syscon->rw_lock, level); in rt_syscon_update_bits()
89 struct rt_syscon *syscon = RT_NULL, *syscon_tmp; in rt_syscon_find_by_ofw_node() local
104 syscon = syscon_tmp; in rt_syscon_find_by_ofw_node()
111 if (syscon) in rt_syscon_find_by_ofw_node()
127 syscon = rt_ofw_data(np); in rt_syscon_find_by_ofw_node()
131 return syscon; in rt_syscon_find_by_ofw_node()
136 struct rt_syscon *syscon = RT_NULL; in rt_syscon_find_by_ofw_compatible() local
141 syscon = rt_syscon_find_by_ofw_node(syscon_np); in rt_syscon_find_by_ofw_compatible()
146 return syscon; in rt_syscon_find_by_ofw_compatible()
151 struct rt_syscon *syscon = RT_NULL; in rt_syscon_find_by_ofw_phandle() local
156 syscon = rt_syscon_find_by_ofw_node(syscon_np); in rt_syscon_find_by_ofw_phandle()
161 return syscon; in rt_syscon_find_by_ofw_phandle()
170 struct rt_syscon *syscon = rt_calloc(1, sizeof(*syscon)); in syscon_probe() local
172 if (!syscon) in syscon_probe()
184 syscon->iomem_size = (rt_size_t)iomem_range[1]; in syscon_probe()
185 syscon->iomem_base = rt_ioremap((void *)iomem_range[0], syscon->iomem_size); in syscon_probe()
187 if (!syscon->iomem_base) in syscon_probe()
192 rt_list_init(&syscon->list); in syscon_probe()
194 rt_list_insert_after(&_syscon_nodes, &syscon->list); in syscon_probe()
197 rt_spin_lock_init(&syscon->rw_lock); in syscon_probe()
199 pdev->parent.user_data = syscon; in syscon_probe()
201 syscon->np = pdev->parent.ofw_node; in syscon_probe()
202 rt_ofw_data(np) = syscon; in syscon_probe()
207 rt_free(syscon); in syscon_probe()
214 struct rt_syscon *syscon = pdev->parent.user_data; in syscon_remove() local
216 rt_iounmap(syscon->iomem_base); in syscon_remove()
218 rt_free(syscon); in syscon_remove()