#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: bus_space_through.c,v 1.5 2023/09/09 21:01:57 andvar Exp $");
#include <sys/systm.h>
#include <machine/bus.h>
bus_space_protos(bs_through);
int
bs_through_bs_map(bus_space_tag_t t, bus_addr_t addr,
bus_size_t size, int cacheable, bus_space_handle_t *bshp)
{
return bus_space_map(t->bs_base, addr, size, cacheable, bshp);
}
void
bs_through_bs_unmap(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t size)
{
bus_space_unmap(t->bs_base, bsh, size);
}
int
bs_through_bs_subregion(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, bus_size_t size, bus_space_handle_t *nbshp)
{
return bus_space_subregion(t->bs_base, bsh, offset, size, nbshp);
}
int
bs_through_bs_alloc(bus_space_tag_t t, bus_addr_t rstart, bus_addr_t rend,
bus_size_t size, bus_size_t align, bus_size_t boundary, int cacheable,
bus_addr_t *addrp, bus_space_handle_t *bshp)
{
return bus_space_alloc(t->bs_base, rstart, rend, size, align, boundary,
cacheable, addrp, bshp);
}
void
bs_through_bs_free(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t size)
{
bus_space_free(t->bs_base, bsh, size);
}
void *
bs_through_bs_vaddr(bus_space_tag_t t, bus_space_handle_t bsh)
{
return bus_space_vaddr(t->bs_base, bsh);
}
paddr_t
bs_through_bs_mmap(bus_space_tag_t t, bus_addr_t addr, off_t offset,
int prot, int flags)
{
return bus_space_mmap(t->bs_base, addr, offset, prot, flags);
}
void
bs_through_bs_barrier(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, bus_size_t len, int flags)
{
bus_space_barrier(t->bs_base, bsh, offset, len, flags);
}
int
bs_through_bs_peek(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, size_t size, void *ptr)
{
return bus_space_peek(t->bs_base, bsh, offset, size, ptr);
}
int
bs_through_bs_poke(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, size_t size, u_int32_t val)
{
return bus_space_poke(t->bs_base, bsh, offset, size, val);
}
u_int8_t
bs_through_bs_r_1(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t offset)
{
return bus_space_read_1(t->bs_base, bsh, offset);
}
u_int16_t
bs_through_bs_r_2(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t offset)
{
return bus_space_read_2(t->bs_base, bsh, offset);
}
u_int32_t
bs_through_bs_r_4(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t offset)
{
return bus_space_read_4(t->bs_base, bsh, offset);
}
u_int64_t
bs_through_bs_r_8(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t offset)
{
return bus_space_read_8(t->bs_base, bsh, offset);
}
void
bs_through_bs_rm_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int8_t *addr, bus_size_t count)
{
bus_space_read_multi_1(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rm_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int16_t *addr, bus_size_t count)
{
bus_space_read_multi_2(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rm_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int32_t *addr, bus_size_t count)
{
bus_space_read_multi_4(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rm_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int64_t *addr, bus_size_t count)
{
bus_space_read_multi_8(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rr_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int8_t *addr, bus_size_t count)
{
bus_space_read_region_1(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rr_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int16_t *addr, bus_size_t count)
{
bus_space_read_region_2(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rr_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int32_t *addr, bus_size_t count)
{
bus_space_read_region_4(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rr_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int64_t *addr, bus_size_t count)
{
bus_space_read_region_8(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_w_1(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t offset,
u_int8_t value)
{
bus_space_write_1(t->bs_base, bsh, offset, value);
}
void
bs_through_bs_w_2(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t offset,
u_int16_t value)
{
bus_space_write_2(t->bs_base, bsh, offset, value);
}
void
bs_through_bs_w_4(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t offset,
u_int32_t value)
{
bus_space_write_4(t->bs_base, bsh, offset, value);
}
void
bs_through_bs_w_8(bus_space_tag_t t, bus_space_handle_t bsh, bus_size_t offset,
u_int64_t value)
{
bus_space_write_8(t->bs_base, bsh, offset, value);
}
void
bs_through_bs_wm_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int8_t *addr, bus_size_t count)
{
bus_space_write_multi_1(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wm_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int16_t *addr, bus_size_t count)
{
bus_space_write_multi_2(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wm_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int32_t *addr, bus_size_t count)
{
bus_space_write_multi_4(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wm_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int64_t *addr, bus_size_t count)
{
bus_space_write_multi_8(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wr_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int8_t *addr, bus_size_t count)
{
bus_space_write_region_1(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wr_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int16_t *addr, bus_size_t count)
{
bus_space_write_region_2(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wr_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int32_t *addr, bus_size_t count)
{
bus_space_write_region_4(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wr_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int64_t *addr, bus_size_t count)
{
bus_space_write_region_8(t->bs_base, bsh, offset, addr, count);
}
#ifdef BUS_SPACE_HAS_REAL_STREAM_METHODS
u_int8_t
bs_through_bs_rs_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset)
{
return bus_space_read_stream_1(t->bs_base, bsh, offset);
}
u_int16_t
bs_through_bs_rs_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset)
{
return bus_space_read_stream_2(t->bs_base, bsh, offset);
}
u_int32_t
bs_through_bs_rs_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset)
{
return bus_space_read_stream_4(t->bs_base, bsh, offset);
}
u_int64_t
bs_through_bs_rs_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset)
{
return bus_space_read_stream_8(t->bs_base, bsh, offset);
}
void
bs_through_bs_rms_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int8_t *addr, bus_size_t count)
{
bus_space_read_multi_stream_1(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rms_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int16_t *addr, bus_size_t count)
{
bus_space_read_multi_stream_2(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rms_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int32_t *addr, bus_size_t count)
{
bus_space_read_multi_stream_4(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rms_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int64_t *addr, bus_size_t count)
{
bus_space_read_multi_stream_8(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rrs_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int8_t *addr, bus_size_t count)
{
bus_space_read_region_stream_1(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rrs_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int16_t *addr, bus_size_t count)
{
bus_space_read_region_stream_2(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rrs_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int32_t *addr, bus_size_t count)
{
bus_space_read_region_stream_4(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_rrs_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int64_t *addr, bus_size_t count)
{
bus_space_read_region_stream_8(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_ws_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int8_t value)
{
bus_space_write_stream_1(t->bs_base, bsh, offset, value);
}
void
bs_through_bs_ws_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int16_t value)
{
bus_space_write_stream_2(t->bs_base, bsh, offset, value);
}
void
bs_through_bs_ws_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int32_t value)
{
bus_space_write_stream_4(t->bs_base, bsh, offset, value);
}
void
bs_through_bs_ws_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int64_t value)
{
bus_space_write_stream_8(t->bs_base, bsh, offset, value);
}
void
bs_through_bs_wms_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int8_t *addr, bus_size_t count)
{
bus_space_write_multi_stream_1(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wms_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int16_t *addr, bus_size_t count)
{
bus_space_write_multi_stream_2(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wms_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int32_t *addr, bus_size_t count)
{
bus_space_write_multi_stream_4(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wms_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int64_t *addr, bus_size_t count)
{
bus_space_write_multi_stream_8(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wrs_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int8_t *addr, bus_size_t count)
{
bus_space_write_region_stream_1(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wrs_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int16_t *addr, bus_size_t count)
{
bus_space_write_region_stream_2(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wrs_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int32_t *addr, bus_size_t count)
{
bus_space_write_region_stream_4(t->bs_base, bsh, offset, addr, count);
}
void
bs_through_bs_wrs_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, const u_int64_t *addr, bus_size_t count)
{
bus_space_write_region_stream_8(t->bs_base, bsh, offset, addr, count);
}
#endif
void
bs_through_bs_sm_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int8_t value, bus_size_t count)
{
bus_space_set_multi_1(t->bs_base, bsh, offset, value, count);
}
void
bs_through_bs_sm_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int16_t value, bus_size_t count)
{
bus_space_set_multi_2(t->bs_base, bsh, offset, value, count);
}
void
bs_through_bs_sm_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int32_t value, bus_size_t count)
{
bus_space_set_multi_4(t->bs_base, bsh, offset, value, count);
}
void
bs_through_bs_sm_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int64_t value, bus_size_t count)
{
bus_space_set_multi_8(t->bs_base, bsh, offset, value, count);
}
void
bs_through_bs_sr_1(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int8_t value, bus_size_t count)
{
bus_space_set_region_1(t->bs_base, bsh, offset, value, count);
}
void
bs_through_bs_sr_2(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int16_t value, bus_size_t count)
{
bus_space_set_region_2(t->bs_base, bsh, offset, value, count);
}
void
bs_through_bs_sr_4(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int32_t value, bus_size_t count)
{
bus_space_set_region_4(t->bs_base, bsh, offset, value, count);
}
void
bs_through_bs_sr_8(bus_space_tag_t t, bus_space_handle_t bsh,
bus_size_t offset, u_int64_t value, bus_size_t count)
{
bus_space_set_region_8(t->bs_base, bsh, offset, value, count);
}
void
bs_through_bs_c_1(bus_space_tag_t t, bus_space_handle_t bsh1,
bus_size_t offset1, bus_space_handle_t bsh2,
bus_size_t offset2, bus_size_t n)
{
bus_space_copy_region_1(t->bs_base, bsh1, offset1, bsh2, offset2, n);
}
void
bs_through_bs_c_2(bus_space_tag_t t, bus_space_handle_t bsh1,
bus_size_t offset1, bus_space_handle_t bsh2,
bus_size_t offset2, bus_size_t n)
{
bus_space_copy_region_2(t->bs_base, bsh1, offset1, bsh2, offset2, n);
}
void
bs_through_bs_c_4(bus_space_tag_t t, bus_space_handle_t bsh1,
bus_size_t offset1, bus_space_handle_t bsh2,
bus_size_t offset2, bus_size_t n)
{
bus_space_copy_region_4(t->bs_base, bsh1, offset1, bsh2, offset2, n);
}
void
bs_through_bs_c_8(bus_space_tag_t t, bus_space_handle_t bsh1,
bus_size_t offset1, bus_space_handle_t bsh2,
bus_size_t offset2, bus_size_t n)
{
bus_space_copy_region_8(t->bs_base, bsh1, offset1, bsh2, offset2, n);
}