本文整理汇总了C++中bus_read_4函数的典型用法代码示例。如果您正苦于以下问题:C++ bus_read_4函数的具体用法?C++ bus_read_4怎么用?C++ bus_read_4使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bus_read_4函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: altpll_write_params
/*
* Configure all PLL counter parameters.
*/
static int
altpll_write_params(struct altpll_softc *sc, uint32_t mul, uint32_t div,
uint32_t c0)
{
uint32_t status;
int retry;
altpll_write_param(sc, ALTPLL_OFF_TYPE_N, div);
altpll_write_param(sc, ALTPLL_OFF_TYPE_M, mul);
altpll_write_param(sc, ALTPLL_OFF_TYPE_C0, c0);
/*
* Program C1 with the same parameters as C0. It seems the PLL does not
* run correctly otherwise.
*/
altpll_write_param(sc, ALTPLL_OFF_TYPE_C1, c0);
/* Trigger the transfer. */
bus_write_4(sc->ap_reg_res, ALTPLL_OFF_TRANSFER, htole32(0xff));
/* Wait for the transfer to complete. */
status = bus_read_4(sc->ap_reg_res, ALTPLL_OFF_TRANSFER);
for (retry = 0;
status != htole32(ALTPLL_TRANSFER_COMPLETE) && retry < 10; retry++)
status = bus_read_4(sc->ap_reg_res, ALTPLL_OFF_TRANSFER);
if (status != htole32(ALTPLL_TRANSFER_COMPLETE)) {
device_printf(sc->ap_dev,
"timed out waiting for transfer to PLL\n");
/* XXXEM ignore error for now - not set by old FPGA bitfiles. */
}
return (0);
}
开发者ID:RichardsonAlex,项目名称:cheribsd,代码行数:33,代码来源:altpll.c
示例2: davbus_cint
static void
davbus_cint(void *ptr)
{
struct davbus_softc *d = ptr;
u_int reg, status, mask;
mtx_lock(&d->mutex);
reg = bus_read_4(d->reg, DAVBUS_SOUND_CTRL);
if (reg & DAVBUS_PORTCHG) {
status = bus_read_4(d->reg, DAVBUS_CODEC_STATUS);
if (d->read_status && d->set_outputs) {
mask = (*d->read_status)(d, status);
(*d->set_outputs)(d, mask);
}
/* Clear the interrupt. */
bus_write_4(d->reg, DAVBUS_SOUND_CTRL, reg);
}
mtx_unlock(&d->mutex);
}
开发者ID:JabirTech,项目名称:Source,代码行数:25,代码来源:davbus.c
示例3: gdt_mpr_intr
void
gdt_mpr_intr(struct gdt_softc *gdt, struct gdt_intr_ctx *ctx)
{
int i;
GDT_DPRINTF(GDT_D_INTR, ("gdt_mpr_intr(%p) ", gdt));
bus_write_1(gdt->sc_dpmem, GDT_MPR_EDOOR, 0xff);
if (ctx->istatus & 0x80) { /* error flag */
ctx->istatus &= ~0x80;
ctx->cmd_status = bus_read_2(gdt->sc_dpmem, GDT_MPR_STATUS);
} else /* no error */
ctx->cmd_status = GDT_S_OK;
ctx->info = bus_read_4(gdt->sc_dpmem, GDT_MPR_INFO);
ctx->service = bus_read_2(gdt->sc_dpmem, GDT_MPR_SERVICE);
ctx->info2 = bus_read_4(gdt->sc_dpmem, GDT_MPR_INFO + sizeof (u_int32_t));
/* event string */
if (ctx->istatus == GDT_ASYNCINDEX) {
if (ctx->service != GDT_SCREENSERVICE &&
(gdt->sc_fw_vers & 0xff) >= 0x1a) {
gdt->sc_dvr.severity = bus_read_1(gdt->sc_dpmem, GDT_SEVERITY);
for (i = 0; i < 256; ++i) {
gdt->sc_dvr.event_string[i] = bus_read_1(gdt->sc_dpmem,
GDT_EVT_BUF + i);
if (gdt->sc_dvr.event_string[i] == 0)
break;
}
}
}
bus_write_1(gdt->sc_dpmem, GDT_MPR_SEMA1, 0);
}
开发者ID:cyrilmagsuci,项目名称:freebsd,代码行数:34,代码来源:iir_pci.c
示例4: ismt_submit
static int
ismt_submit(struct ismt_softc *sc, struct ismt_desc *desc, uint8_t slave,
uint8_t is_read)
{
uint32_t err, fmhp, val;
desc->control |= ISMT_DESC_FAIR;
if (sc->using_msi)
desc->control |= ISMT_DESC_INT;
desc->tgtaddr_rw = ISMT_DESC_ADDR_RW(slave, is_read);
desc->dptr_low = (sc->dma_buffer_bus_addr & 0xFFFFFFFFLL);
desc->dptr_high = (sc->dma_buffer_bus_addr >> 32);
wmb();
fmhp = sc->head << 16;
val = bus_read_4(sc->mmio_res, ISMT_MSTR_MCTRL);
val &= ~ISMT_MCTRL_FMHP;
val |= fmhp;
bus_write_4(sc->mmio_res, ISMT_MSTR_MCTRL, val);
/* set the start bit */
val = bus_read_4(sc->mmio_res, ISMT_MSTR_MCTRL);
val |= ISMT_MCTRL_SS;
bus_write_4(sc->mmio_res, ISMT_MSTR_MCTRL, val);
err = tsleep(sc, PWAIT, "ismt_wait", 5 * hz);
if (err != 0) {
ISMT_DEBUG(sc->pcidev, "%s timeout\n", __func__);
return (SMB_ETIMEOUT);
}
ISMT_DEBUG(sc->pcidev, "%s status=0x%x\n", __func__, desc->status);
if (desc->status & ISMT_DESC_SCS)
return (SMB_ENOERR);
if (desc->status & ISMT_DESC_NAK)
return (SMB_ENOACK);
if (desc->status & ISMT_DESC_CRC)
return (SMB_EBUSERR);
if (desc->status & ISMT_DESC_COL)
return (SMB_ECOLLI);
if (desc->status & ISMT_DESC_LPR)
return (SMB_EINVAL);
if (desc->status & (ISMT_DESC_DLTO | ISMT_DESC_CLTO))
return (SMB_ETIMEOUT);
return (SMB_EBUSERR);
}
开发者ID:2asoft,项目名称:freebsd,代码行数:56,代码来源:ismt.c
示例5: lsi64854_pp_intr
/*
* Parallel port DMA interrupt
*/
static int
lsi64854_pp_intr(void *arg)
{
struct lsi64854_softc *sc = arg;
bus_dma_tag_t dmat;
bus_dmamap_t dmam;
size_t dmasize;
int ret, trans, resid = 0;
uint32_t csr;
csr = L64854_GCSR(sc);
DPRINTF(LDB_PP, ("%s: addr 0x%x, csr %b\n", __func__,
bus_read_4(sc->sc_res, L64854_REG_ADDR), csr, PDMACSR_BITS));
if ((csr & (P_ERR_PEND | P_SLAVE_ERR)) != 0) {
resid = bus_read_4(sc->sc_res, L64854_REG_CNT);
device_printf(sc->sc_dev, "error: resid %d csr=%b\n", resid,
csr, PDMACSR_BITS);
csr &= ~P_EN_DMA; /* Stop DMA. */
/* Invalidate the queue; SLAVE_ERR bit is write-to-clear */
csr |= P_INVALIDATE | P_SLAVE_ERR;
L64854_SCSR(sc, csr);
return (-1);
}
ret = (csr & P_INT_PEND) != 0;
if (sc->sc_active != 0) {
DMA_DRAIN(sc, 0);
resid = bus_read_4(sc->sc_res, L64854_REG_CNT);
}
/* DMA has stopped */
csr &= ~D_EN_DMA;
L64854_SCSR(sc, csr);
sc->sc_active = 0;
dmasize = sc->sc_dmasize;
trans = dmasize - resid;
if (trans < 0) /* transferred < 0? */
trans = dmasize;
*sc->sc_dmalen -= trans;
*sc->sc_dmaaddr = (char *)*sc->sc_dmaaddr + trans;
if (dmasize != 0) {
dmat = sc->sc_buffer_dmat;
dmam = sc->sc_dmamap;
bus_dmamap_sync(dmat, dmam, (csr & D_WRITE) != 0 ?
BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
bus_dmamap_unload(dmat, dmam);
}
return (ret != 0);
}
开发者ID:coyizumi,项目名称:cs111,代码行数:58,代码来源:lsi64854.c
示例6: screamer_init
static int
screamer_init(struct snd_mixer *m)
{
struct davbus_softc *d;
d = mix_getdevinfo(m);
d->read_status = screamer_read_status;
d->set_outputs = screamer_set_outputs;
mtx_lock(&d->mutex);
screamer_write_locked(d, SCREAMER_CODEC_ADDR0, SCREAMER_INPUT_CD |
SCREAMER_DEFAULT_CD_GAIN);
screamer_set_outputs(d, screamer_read_status(d,
bus_read_4(d->reg, DAVBUS_CODEC_STATUS)));
screamer_write_locked(d, SCREAMER_CODEC_ADDR2, 0);
screamer_write_locked(d, SCREAMER_CODEC_ADDR4, 0);
screamer_write_locked(d, SCREAMER_CODEC_ADDR5, 0);
screamer_write_locked(d, SCREAMER_CODEC_ADDR6, 0);
mtx_unlock(&d->mutex);
mix_setdevs(m, SOUND_MASK_VOLUME);
return (0);
}
开发者ID:JabirTech,项目名称:Source,代码行数:29,代码来源:davbus.c
示例7: bhndb_pci_probe_read
/**
* Read a data item from the bridged address space at the given @p offset
* from @p addr.
*
* A dynamic register window will be used to map @p addr.
*
* @param probe The bhndb_pci probe state to be used to perform the
* read.
* @param addr The base address.
* @param offset The offset from @p addr at which to read a data item of
* @p width bytes.
* @param width Item width (1, 2, or 4 bytes).
*/
static uint32_t
bhndb_pci_probe_read(struct bhndb_pci_probe *probe, bhnd_addr_t addr,
bhnd_size_t offset, u_int width)
{
struct resource *r;
bus_size_t res_offset;
int error;
/* Map the target address */
error = bhndb_pci_probe_map(probe, addr, offset, width, &r,
&res_offset);
if (error) {
device_printf(probe->dev, "error mapping %#jx+%#jx for "
"reading: %d\n", addr, offset, error);
return (UINT32_MAX);
}
/* Perform read */
switch (width) {
case 1:
return (bus_read_1(r, res_offset));
case 2:
return (bus_read_2(r, res_offset));
case 4:
return (bus_read_4(r, res_offset));
default:
panic("unsupported width: %u", width);
}
}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:42,代码来源:bhndb_pci.c
示例8: terasic_mtl_reg_read
/*
* All I/O to/from the MTL register device must be 32-bit, and aligned to
* 32-bit.
*/
static int
terasic_mtl_reg_read(struct cdev *dev, struct uio *uio, int flag)
{
struct terasic_mtl_softc *sc;
u_long offset, size;
uint32_t v;
int error;
if (uio->uio_offset < 0 || uio->uio_offset % 4 != 0 ||
uio->uio_resid % 4 != 0)
return (ENODEV);
sc = dev->si_drv1;
size = rman_get_size(sc->mtl_reg_res);
error = 0;
if ((uio->uio_offset + uio->uio_resid < 0) ||
(uio->uio_offset + uio->uio_resid > size))
return (ENODEV);
while (uio->uio_resid > 0) {
offset = uio->uio_offset;
if (offset + sizeof(v) > size)
return (ENODEV);
v = bus_read_4(sc->mtl_reg_res, offset);
error = uiomove(&v, sizeof(v), uio);
if (error)
return (error);
}
return (error);
}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:32,代码来源:terasic_mtl_reg.c
示例9: hpet_get_timecount
static u_int
hpet_get_timecount(struct timecounter *tc)
{
struct hpet_softc *sc;
sc = tc->tc_priv;
return (bus_read_4(sc->mem_res, HPET_MAIN_COUNTER));
}
开发者ID:ChristosKa,项目名称:freebsd,代码行数:8,代码来源:acpi_hpet.c
示例10: imx6_anatop_read_4
uint32_t
imx6_anatop_read_4(bus_size_t offset)
{
KASSERT(imx6_anatop_sc != NULL, ("imx6_anatop_read_4 sc NULL"));
return (bus_read_4(imx6_anatop_sc->res[MEMRES], offset));
}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:8,代码来源:imx6_anatop.c
示例11: macgpio_suspend
static int
macgpio_suspend(device_t dev)
{
struct macgpio_softc *sc;
int i;
sc = device_get_softc(dev);
sc->sc_saved_gpio_levels[0] = bus_read_4(sc->sc_gpios, GPIO_LEVELS_0);
sc->sc_saved_gpio_levels[1] = bus_read_4(sc->sc_gpios, GPIO_LEVELS_1);
for (i = 0; i < GPIO_COUNT; i++)
sc->sc_saved_gpios[i] = bus_read_1(sc->sc_gpios, GPIO_BASE + i);
for (i = 0; i < GPIO_EXTINT_COUNT; i++)
sc->sc_saved_extint_gpios[i] = bus_read_1(sc->sc_gpios, GPIO_EXTINT_BASE + i);
return (0);
}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:17,代码来源:macgpio.c
示例12: usbphy_utmi_disable
static int
usbphy_utmi_disable(struct usbphy_softc *sc)
{
int rv;
uint32_t val;
usbphy_utmi_phy_clk(sc, false);
if (sc->dr_mode == USB_DR_MODE_DEVICE) {
val = RD4(sc, IF_USB_SUSP_CTRL);
val &= ~USB_WAKEUP_DEBOUNCE_COUNT(~0);
val |= USB_WAKE_ON_CNNT_EN_DEV;
val |= USB_WAKEUP_DEBOUNCE_COUNT(5);
WR4(sc, IF_USB_SUSP_CTRL, val);
}
val = RD4(sc, IF_USB_SUSP_CTRL);
val |= UTMIP_RESET;
WR4(sc, IF_USB_SUSP_CTRL, val);
val = RD4(sc, UTMIP_BAT_CHRG_CFG0);
val |= UTMIP_PD_CHRG;
WR4(sc, UTMIP_BAT_CHRG_CFG0, val);
val = RD4(sc, UTMIP_XCVR_CFG0);
val |= UTMIP_FORCE_PD_POWERDOWN;
val |= UTMIP_FORCE_PD2_POWERDOWN;
val |= UTMIP_FORCE_PDZI_POWERDOWN;
WR4(sc, UTMIP_XCVR_CFG0, val);
val = RD4(sc, UTMIP_XCVR_CFG1);
val |= UTMIP_FORCE_PDDISC_POWERDOWN;
val |= UTMIP_FORCE_PDCHRP_POWERDOWN;
val |= UTMIP_FORCE_PDDR_POWERDOWN;
WR4(sc, UTMIP_XCVR_CFG1, val);
usbpby_enable_cnt--;
if (usbpby_enable_cnt <= 0) {
rv = clk_enable(sc->clk_pads);
if (rv != 0) {
device_printf(sc->dev,
"Cannot enable 'utmi-pads' clock\n");
return (rv);
}
val =bus_read_4(sc->pads_res, UTMIP_BIAS_CFG0);
val |= UTMIP_OTGPD;
val |= UTMIP_BIASPD;
bus_write_4(sc->pads_res, UTMIP_BIAS_CFG0, val);
rv = clk_disable(sc->clk_pads);
if (rv != 0) {
device_printf(sc->dev,
"Cannot disable 'utmi-pads' clock\n");
return (rv);
}
}
return (0);
}
开发者ID:2asoft,项目名称:freebsd,代码行数:58,代码来源:tegra_usbphy.c
示例13: reg_read
static __inline uint32_t
reg_read(ig4iic_softc_t *sc, uint32_t reg)
{
uint32_t value;
bus_barrier(sc->regs_res, reg, 4, BUS_SPACE_BARRIER_READ);
value = bus_read_4(sc->regs_res, reg);
return (value);
}
开发者ID:cyrilmagsuci,项目名称:freebsd,代码行数:9,代码来源:ig4_iic.c
示例14: terasic_mtl_reg_textframebufaddr_get
void
terasic_mtl_reg_textframebufaddr_get(struct terasic_mtl_softc *sc,
uint32_t *addrp)
{
uint32_t addr;
addr = bus_read_4(sc->mtl_reg_res, TERASIC_MTL_OFF_TEXTFRAMEBUFADDR);
*addrp = le32toh(addr);
}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:9,代码来源:terasic_mtl_reg.c
示例15: hpet_disable
static void
hpet_disable(struct hpet_softc *sc)
{
uint32_t val;
val = bus_read_4(sc->mem_res, HPET_CONFIG);
val &= ~HPET_CNF_ENABLE;
bus_write_4(sc->mem_res, HPET_CONFIG, val);
}
开发者ID:ChristosKa,项目名称:freebsd,代码行数:9,代码来源:acpi_hpet.c
示例16: screamer_write_locked
static void
screamer_write_locked(struct davbus_softc *d, u_int reg, u_int val)
{
u_int x;
KASSERT(val == (val & 0xfff), ("bad val"));
while (bus_read_4(d->reg, DAVBUS_CODEC_CTRL) & DAVBUS_CODEC_BUSY)
DELAY(100);
x = reg;
x |= SCREAMER_CODEC_EMSEL0;
x |= val;
bus_write_4(d->reg, DAVBUS_CODEC_CTRL, x);
while (bus_read_4(d->reg, DAVBUS_CODEC_CTRL) & DAVBUS_CODEC_BUSY)
DELAY(100);
}
开发者ID:JabirTech,项目名称:Source,代码行数:18,代码来源:davbus.c
示例17: macio_enable_wireless
int
macio_enable_wireless(device_t dev, bool enable)
{
struct macio_softc *sc = device_get_softc(dev);
uint32_t x;
if (enable) {
x = bus_read_4(sc->sc_memr, KEYLARGO_FCR2);
x |= 0x4;
bus_write_4(sc->sc_memr, KEYLARGO_FCR2, x);
/* Enable card slot. */
bus_write_1(sc->sc_memr, KEYLARGO_GPIO_BASE + 0x0f, 5);
DELAY(1000);
bus_write_1(sc->sc_memr, KEYLARGO_GPIO_BASE + 0x0f, 4);
DELAY(1000);
x = bus_read_4(sc->sc_memr, KEYLARGO_FCR2);
x &= ~0x80000000;
bus_write_4(sc->sc_memr, KEYLARGO_FCR2, x);
/* out8(gpio + 0x10, 4); */
bus_write_1(sc->sc_memr, KEYLARGO_EXTINT_GPIO_REG_BASE + 0x0b, 0);
bus_write_1(sc->sc_memr, KEYLARGO_EXTINT_GPIO_REG_BASE + 0x0a, 0x28);
bus_write_1(sc->sc_memr, KEYLARGO_EXTINT_GPIO_REG_BASE + 0x0d, 0x28);
bus_write_1(sc->sc_memr, KEYLARGO_GPIO_BASE + 0x0d, 0x28);
bus_write_1(sc->sc_memr, KEYLARGO_GPIO_BASE + 0x0e, 0x28);
bus_write_4(sc->sc_memr, 0x1c000, 0);
/* Initialize the card. */
bus_write_4(sc->sc_memr, 0x1a3e0, 0x41);
x = bus_read_4(sc->sc_memr, KEYLARGO_FCR2);
x |= 0x80000000;
bus_write_4(sc->sc_memr, KEYLARGO_FCR2, x);
} else {
x = bus_read_4(sc->sc_memr, KEYLARGO_FCR2);
x &= ~0x4;
bus_write_4(sc->sc_memr, KEYLARGO_FCR2, x);
/* out8(gpio + 0x10, 0); */
}
return (0);
}
开发者ID:Alkzndr,项目名称:freebsd,代码行数:43,代码来源:macio.c
示例18: bcm_dma_reset
static void
bcm_dma_reset(device_t dev, int ch)
{
struct bcm_dma_softc *sc = device_get_softc(dev);
struct bcm_dma_cb *cb;
uint32_t cs;
int count;
if (ch < 0 || ch >= BCM_DMA_CH_MAX)
return;
cs = bus_read_4(sc->sc_mem, BCM_DMA_CS(ch));
if (cs & CS_ACTIVE) {
/* pause current task */
bus_write_4(sc->sc_mem, BCM_DMA_CS(ch), 0);
count = 1000;
do {
cs = bus_read_4(sc->sc_mem, BCM_DMA_CS(ch));
} while (!(cs & CS_ISPAUSED) && (count-- > 0));
if (!(cs & CS_ISPAUSED)) {
device_printf(dev,
"Can't abort DMA transfer at channel %d\n", ch);
}
bus_write_4(sc->sc_mem, BCM_DMA_CBNEXT(ch), 0);
/* Complete everything, clear interrupt */
bus_write_4(sc->sc_mem, BCM_DMA_CS(ch),
CS_ABORT | CS_INT | CS_END| CS_ACTIVE);
}
/* clear control blocks */
bus_write_4(sc->sc_mem, BCM_DMA_CBADDR(ch), 0);
bus_write_4(sc->sc_mem, BCM_DMA_CBNEXT(ch), 0);
/* Reset control block */
cb = sc->sc_dma_ch[ch].cb;
bzero(cb, sizeof(*cb));
cb->info = INFO_WAIT_RESP;
}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:43,代码来源:bcm2835_dma.c
示例19: rt305x_ic_get
uint32_t
rt305x_ic_get(uint32_t reg)
{
struct rt305x_ic_softc *sc = rt305x_ic_softc;
if (!sc)
return (0);
return (bus_read_4(sc->mem_res, reg));
}
开发者ID:coyizumi,项目名称:cs111,代码行数:10,代码来源:rt305x_ic.c
示例20: bcm_dma_intr
static void
bcm_dma_intr(void *arg)
{
struct bcm_dma_softc *sc = bcm_dma_sc;
struct bcm_dma_ch *ch = (struct bcm_dma_ch *)arg;
uint32_t cs, debug;
/* my interrupt? */
cs = bus_read_4(sc->sc_mem, BCM_DMA_CS(ch->ch));
if (!(cs & (CS_INT | CS_ERR)))
return;
/* running? */
if (!(ch->flags & BCM_DMA_CH_USED)) {
device_printf(sc->sc_dev,
"unused DMA intr CH=%d, CS=%x\n", ch->ch, cs);
return;
}
if (cs & CS_ERR) {
debug = bus_read_4(sc->sc_mem, BCM_DMA_DEBUG(ch->ch));
device_printf(sc->sc_dev, "DMA error %d on CH%d\n",
debug & DEBUG_ERROR_MASK, ch->ch);
bus_write_4(sc->sc_mem, BCM_DMA_DEBUG(ch->ch),
debug & DEBUG_ERROR_MASK);
bcm_dma_reset(sc->sc_dev, ch->ch);
}
if (cs & CS_INT) {
/* acknowledge interrupt */
bus_write_4(sc->sc_mem, BCM_DMA_CS(ch->ch),
CS_INT | CS_END);
/* Prepare for possible access to len field */
bus_dmamap_sync(sc->sc_dma_tag, ch->dma_map,
BUS_DMASYNC_POSTWRITE);
/* save callback function and argument */
if (ch->intr_func)
ch->intr_func(ch->ch, ch->intr_arg);
}
}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:43,代码来源:bcm2835_dma.c
注:本文中的bus_read_4函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论