您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ DMA_BIT_MASK函数代码示例

51自学网 2021-06-01 20:22:23
  C++
这篇教程C++ DMA_BIT_MASK函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中DMA_BIT_MASK函数的典型用法代码示例。如果您正苦于以下问题:C++ DMA_BIT_MASK函数的具体用法?C++ DMA_BIT_MASK怎么用?C++ DMA_BIT_MASK使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了DMA_BIT_MASK函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: DMA_BIT_MASK

};static struct resource orion_ge00_resources[] = {	{		.name	= "ge00 irq",		.flags	= IORESOURCE_IRQ,	},};static struct platform_device orion_ge00 = {	.name		= MV643XX_ETH_NAME,	.id		= 0,	.num_resources	= 1,	.resource	= orion_ge00_resources,	.dev		= {		.coherent_dma_mask	= DMA_BIT_MASK(32),	},};void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data,			    unsigned long mapbase,			    unsigned long irq,			    unsigned long irq_err,			    int tclk){	fill_resources(&orion_ge00_shared, orion_ge00_shared_resources,		       mapbase + 0x2000, SZ_16K - 1, irq_err);	ge_complete(&orion_ge00_shared_data, tclk,		    orion_ge00_resources, irq, &orion_ge00_shared,		    eth_data, &orion_ge00);}
开发者ID:0xroot,项目名称:Blackphone-BP1-Kernel,代码行数:31,


示例2: wrl

	for (i = 0; i < 4; i++) {		wrl(USB_WINDOW_CTRL(i), 0);		wrl(USB_WINDOW_BASE(i), 0);	}	for (i = 0; i < dram->num_cs; i++) {		const struct mbus_dram_window *cs = dram->cs + i;		wrl(USB_WINDOW_CTRL(i), ((cs->size - 1) & 0xffff0000) |					(cs->mbus_attr << 8) |					(dram->mbus_dram_target_id << 4) | 1);		wrl(USB_WINDOW_BASE(i), cs->base);	}}static u64 ehci_orion_dma_mask = DMA_BIT_MASK(32);static int ehci_orion_drv_probe(struct platform_device *pdev){	struct orion_ehci_data *pd = pdev->dev.platform_data;	const struct mbus_dram_target_info *dram;	struct resource *res;	struct usb_hcd *hcd;	struct ehci_hcd *ehci;	struct clk *clk;	void __iomem *regs;	int irq, err;	enum orion_ehci_phy_ver phy_version;	if (usb_disabled())		return -ENODEV;
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:31,


示例3: omap_init_sham

	omap_init_sham();	omap_init_aes();	omap_init_vout();	am33xx_register_edma();	am33xx_init_pcm();	return 0;}arch_initcall(omap2_init_devices);#define AM33XX_CPSW_BASE		(0x4A100000)#define AM33XX_CPSW_MDIO_BASE		(0x4A101000)#define AM33XX_CPSW_SS_BASE		(0x4A101200)#define AM33XX_EMAC_MDIO_FREQ		(1000000)static u64 am33xx_cpsw_dmamask = DMA_BIT_MASK(32);/* TODO : Verify the offsets */static struct cpsw_slave_data am33xx_cpsw_slaves[] = {	{		.slave_reg_ofs  = 0x208,		.sliver_reg_ofs = 0xd80,		.phy_id		= "0:00",	},	{		.slave_reg_ofs  = 0x308,		.sliver_reg_ofs = 0xdc0,		.phy_id		= "0:01",	},};static struct cpsw_platform_data am33xx_cpsw_pdata = {
开发者ID:JudeBake,项目名称:linux-am33x,代码行数:31,


示例4: DMA_BIT_MASK

		.start = DMACH_AC97_MICIN,		.end   = DMACH_AC97_MICIN,		.flags = IORESOURCE_DMA,	},	[4] = {		.start = IRQ_AC97,		.end   = IRQ_AC97,		.flags = IORESOURCE_IRQ,	},};static struct s3c_audio_pdata s3c_ac97_pdata = {	.cfg_gpio = s5pv310_ac97_cfg_gpio,};static u64 s5pv310_ac97_dmamask = DMA_BIT_MASK(32);struct platform_device s5pv310_device_ac97 = {	.name             = "s3c-ac97",	.id               = -1,	.num_resources    = ARRAY_SIZE(s5pv310_ac97_resource),	.resource         = s5pv310_ac97_resource,	.dev = {		.platform_data = &s3c_ac97_pdata,		.dma_mask = &s5pv310_ac97_dmamask,		.coherent_dma_mask = DMA_BIT_MASK(32),	},};static struct resource s5pv310_rp_resource[] = {};
开发者ID:Ateeq72,项目名称:lulz-kernel_gt-i9100,代码行数:31,


示例5: DMA_BIT_MASK

    return !session_restart;}static struct musb_platform_ops dsps_ops = {    .init		= dsps_musb_init,    .exit		= dsps_musb_exit,    .enable		= dsps_musb_enable,    .disable	= dsps_musb_disable,    .try_idle	= dsps_musb_try_idle,    .set_mode	= dsps_musb_set_mode,    .reset		= dsps_musb_reset,};static u64 musb_dmamask = DMA_BIT_MASK(32);static int get_int_prop(struct device_node *dn, const char *s){    int ret;    u32 val;    ret = of_property_read_u32(dn, s, &val);    if (ret)        return 0;    return val;}static int get_musb_port_mode(struct device *dev){    enum usb_dr_mode mode;
开发者ID:mikemvk,项目名称:linux-at91,代码行数:31,


示例6: dma_free_writecombine

	for (stream = 0; stream < 2; stream++) {		substream = pcm->streams[stream].substream;		if (!substream)			continue;		buf = &substream->dma_buffer;		if (!buf->area)			continue;		dma_free_writecombine(pcm->card->dev, buf->bytes,				      buf->area, buf->addr);		buf->area = NULL;	}}static u64 sun4i_pcm_mask = DMA_BIT_MASK(32);static int sun4i_pcm_new(struct snd_card *card,			   struct snd_soc_dai *dai, struct snd_pcm *pcm){	int ret = 0;		if (!card->dev->dma_mask)		card->dev->dma_mask = &sun4i_pcm_mask;	if (!card->dev->coherent_dma_mask)		card->dev->coherent_dma_mask = 0xffffffff;	if (dai->driver->playback.channels_min) {		ret = sun4i_pcm_preallocate_dma_buffer(pcm,			SNDRV_PCM_STREAM_PLAYBACK);		if (ret)
开发者ID:panlinbing,项目名称:lichee_linux-3.0,代码行数:31,


示例7: octeon_mgmt_probe

//.........这里部分代码省略.........    result = platform_get_irq(pdev, 0);    if (result < 0)        goto err;    p->irq = result;    res_mix = platform_get_resource(pdev, IORESOURCE_MEM, 0);    if (res_mix == NULL) {        dev_err(&pdev->dev, "no 'reg' resource/n");        result = -ENXIO;        goto err;    }    res_agl = platform_get_resource(pdev, IORESOURCE_MEM, 1);    if (res_agl == NULL) {        dev_err(&pdev->dev, "no 'reg' resource/n");        result = -ENXIO;        goto err;    }    res_agl_prt_ctl = platform_get_resource(pdev, IORESOURCE_MEM, 3);    if (res_agl_prt_ctl == NULL) {        dev_err(&pdev->dev, "no 'reg' resource/n");        result = -ENXIO;        goto err;    }    p->mix_phys = res_mix->start;    p->mix_size = resource_size(res_mix);    p->agl_phys = res_agl->start;    p->agl_size = resource_size(res_agl);    p->agl_prt_ctl_phys = res_agl_prt_ctl->start;    p->agl_prt_ctl_size = resource_size(res_agl_prt_ctl);    if (!devm_request_mem_region(&pdev->dev, p->mix_phys, p->mix_size,                                 res_mix->name)) {        dev_err(&pdev->dev, "request_mem_region (%s) failed/n",                res_mix->name);        result = -ENXIO;        goto err;    }    if (!devm_request_mem_region(&pdev->dev, p->agl_phys, p->agl_size,                                 res_agl->name)) {        result = -ENXIO;        dev_err(&pdev->dev, "request_mem_region (%s) failed/n",                res_agl->name);        goto err;    }    if (!devm_request_mem_region(&pdev->dev, p->agl_prt_ctl_phys,                                 p->agl_prt_ctl_size, res_agl_prt_ctl->name)) {        result = -ENXIO;        dev_err(&pdev->dev, "request_mem_region (%s) failed/n",                res_agl_prt_ctl->name);        goto err;    }    p->mix = (u64)devm_ioremap(&pdev->dev, p->mix_phys, p->mix_size);    p->agl = (u64)devm_ioremap(&pdev->dev, p->agl_phys, p->agl_size);    p->agl_prt_ctl = (u64)devm_ioremap(&pdev->dev, p->agl_prt_ctl_phys,                                       p->agl_prt_ctl_size);    spin_lock_init(&p->lock);    skb_queue_head_init(&p->tx_list);    skb_queue_head_init(&p->rx_list);    tasklet_init(&p->tx_clean_tasklet,                 octeon_mgmt_clean_tx_tasklet, (unsigned long)p);    netdev->priv_flags |= IFF_UNICAST_FLT;    netdev->netdev_ops = &octeon_mgmt_ops;    netdev->ethtool_ops = &octeon_mgmt_ethtool_ops;    mac = of_get_mac_address(pdev->dev.of_node);    if (mac)        memcpy(netdev->dev_addr, mac, ETH_ALEN);    else        eth_hw_addr_random(netdev);    p->phy_np = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0);    result = dma_coerce_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));    if (result)        goto err;    netif_carrier_off(netdev);    result = register_netdev(netdev);    if (result)        goto err;    dev_info(&pdev->dev, "Version " DRV_VERSION "/n");    return 0;err:    free_netdev(netdev);    return result;}
开发者ID:raoy1990,项目名称:linux,代码行数:101,


示例8: DMA_BIT_MASK

static struct ahci_platform_data exynos4_ahci_pdata = {	.init = exynos4_ahci_init,};static struct resource exynos4_ahci_resource[] = {	[0] = {		.start	= EXYNOS4_PA_SATA,		.end	= EXYNOS4_PA_SATA + SZ_64K - 1,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= EXYNOS4_IRQ_SATA,		.end	= EXYNOS4_IRQ_SATA,		.flags	= IORESOURCE_IRQ,	},};static u64 exynos4_ahci_dmamask = DMA_BIT_MASK(32);struct platform_device exynos4_device_ahci = {	.name		= "ahci",	.id		= -1,	.resource	= exynos4_ahci_resource,	.num_resources	= ARRAY_SIZE(exynos4_ahci_resource),	.dev		= {		.platform_data		= &exynos4_ahci_pdata,		.dma_mask		= &exynos4_ahci_dmamask,		.coherent_dma_mask	= DMA_BIT_MASK(32),	},};
开发者ID:curbthepain,项目名称:android_kernel_us990_rev,代码行数:30,


示例9: DMA_BIT_MASK

#include <asm/time.h>#include <asm/netlogic/hal/nlm_hal.h>#include <asm/netlogic/xlp_irq.h>#include <asm/netlogic/xlp.h>#define XLP_SOC_PCI_DRIVER 	"XLP SoC Driver"#define DEV_IRT_INFO			0x3D#define XLP_MAX_DEVICE			8#define XLP_MAX_FUNC			8#define MAX_NUM_UARTS			4#define XLP_UART_PORTIO_OFFSET	0x1000static struct plat_serial8250_port xlp_uart_port[MAX_NUM_UARTS];static u64 xlp_dev_dmamask = DMA_BIT_MASK(32);struct dev2drv {	uint32_t 	devid;	uint8_t 	drvname[16];	uint8_t 	len;	uint8_t 	id;};#ifdef CONFIG_SERIAL_8250unsigned int xlp_uart_in(struct uart_port *p, int offset) {	nlm_reg_t *mmio;	unsigned int value;	/* XLP uart does not need any mapping of regs 
开发者ID:akennedy-adtran,项目名称:linux_mmc_2.6.32.9,代码行数:31,


示例10: fnic_probe

static int __devinit fnic_probe(struct pci_dev *pdev,				const struct pci_device_id *ent){	struct Scsi_Host *host;	struct fc_lport *lp;	struct fnic *fnic;	mempool_t *pool;	int err;	int i;	unsigned long flags;	/*	 * Allocate SCSI Host and set up association between host,	 * local port, and fnic	 */	lp = libfc_host_alloc(&fnic_host_template, sizeof(struct fnic));	if (!lp) {;		err = -ENOMEM;		goto err_out;	}	host = lp->host;	fnic = lport_priv(lp);	fnic->lport = lp;	fnic->ctlr.lp = lp;	snprintf(fnic->name, sizeof(fnic->name) - 1, "%s%d", DRV_NAME,		 host->host_no);	host->transportt = fnic_fc_transport;	err = scsi_init_shared_tag_map(host, FNIC_MAX_IO_REQ);	if (err) {//		shost_printk(KERN_ERR, fnic->lport->host,;		goto err_out_free_hba;	}	/* Setup PCI resources */	pci_set_drvdata(pdev, fnic);	fnic->pdev = pdev;	err = pci_enable_device(pdev);	if (err) {//		shost_printk(KERN_ERR, fnic->lport->host,;		goto err_out_free_hba;	}	err = pci_request_regions(pdev, DRV_NAME);	if (err) {//		shost_printk(KERN_ERR, fnic->lport->host,;		goto err_out_disable_device;	}	pci_set_master(pdev);	/* Query PCI controller on system for DMA addressing	 * limitation for the device.  Try 40-bit first, and	 * fail to 32-bit.	 */	err = pci_set_dma_mask(pdev, DMA_BIT_MASK(40));	if (err) {		err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));		if (err) {//			shost_printk(KERN_ERR, fnic->lport->host,//				     "No usable DMA configuration ";			goto err_out_release_regions;		}		err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));		if (err) {//			shost_printk(KERN_ERR, fnic->lport->host,//				     "Unable to obtain 32-bit DMA ";			goto err_out_release_regions;		}	} else {		err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(40));		if (err) {//			shost_printk(KERN_ERR, fnic->lport->host,//				     "Unable to obtain 40-bit DMA ";			goto err_out_release_regions;		}	}	/* Map vNIC resources from BAR0 */	if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM)) {//		shost_printk(KERN_ERR, fnic->lport->host,;		err = -ENODEV;		goto err_out_release_regions;	}	fnic->bar0.vaddr = pci_iomap(pdev, 0, 0);	fnic->bar0.bus_addr = pci_resource_start(pdev, 0);	fnic->bar0.len = pci_resource_len(pdev, 0);//.........这里部分代码省略.........
开发者ID:rrowicki,项目名称:Chrono_Kernel-1,代码行数:101,


示例11: snd_vortex_create

// chip-specific constructor// (see "Management of Cards and Components")static intsnd_vortex_create(struct snd_card *card, struct pci_dev *pci, vortex_t ** rchip){	vortex_t *chip;	int err;	static struct snd_device_ops ops = {		.dev_free = snd_vortex_dev_free,	};	*rchip = NULL;	// check PCI availability (DMA).	if ((err = pci_enable_device(pci)) < 0)		return err;	if (pci_set_dma_mask(pci, DMA_BIT_MASK(32)) < 0 ||	    pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(32)) < 0) {		dev_err(card->dev, "error to set DMA mask/n");		pci_disable_device(pci);		return -ENXIO;	}	chip = kzalloc(sizeof(*chip), GFP_KERNEL);	if (chip == NULL) {		pci_disable_device(pci);		return -ENOMEM;	}	chip->card = card;	// initialize the stuff	chip->pci_dev = pci;	chip->io = pci_resource_start(pci, 0);	chip->vendor = pci->vendor;	chip->device = pci->device;	chip->card = card;	chip->irq = -1;	// (1) PCI resource allocation	// Get MMIO area	//	if ((err = pci_request_regions(pci, CARD_NAME_SHORT)) != 0)		goto regions_out;	chip->mmio = pci_ioremap_bar(pci, 0);	if (!chip->mmio) {		dev_err(card->dev, "MMIO area remap failed./n");		err = -ENOMEM;		goto ioremap_out;	}	/* Init audio core.	 * This must be done before we do request_irq otherwise we can get spurious	 * interrupts that we do not handle properly and make a mess of things */	if ((err = vortex_core_init(chip)) != 0) {		dev_err(card->dev, "hw core init failed/n");		goto core_out;	}	if ((err = request_irq(pci->irq, vortex_interrupt,			       IRQF_SHARED, KBUILD_MODNAME,	                       chip)) != 0) {		dev_err(card->dev, "cannot grab irq/n");		goto irq_out;	}	chip->irq = pci->irq;	pci_set_master(pci);	// End of PCI setup.	// Register alsa root device.	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {		goto alloc_out;	}	*rchip = chip;	return 0;      alloc_out:	free_irq(chip->irq, chip);      irq_out:	vortex_core_shutdown(chip);      core_out:	iounmap(chip->mmio);      ioremap_out:	pci_release_regions(chip->pci_dev);      regions_out:	pci_disable_device(chip->pci_dev);	//FIXME: this not the right place to unregister the gameport	vortex_gameport_unregister(chip);	kfree(chip);	return err;}
开发者ID:19Dan01,项目名称:linux,代码行数:95,


示例12: ath_pci_probe

static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id){    void __iomem *mem;    struct ath_softc *sc;    struct ieee80211_hw *hw;    u8 csz;    u32 val;    int ret = 0;    char hw_name[64];    if (pci_enable_device(pdev))        return -EIO;    ret =  pci_set_dma_mask(pdev, DMA_BIT_MASK(32));    if (ret) {        printk(KERN_ERR "ath9k: 32-bit DMA not available/n");        goto err_dma;    }    ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32));    if (ret) {        printk(KERN_ERR "ath9k: 32-bit DMA consistent "               "DMA enable failed/n");        goto err_dma;    }    /*     * Cache line size is used to size and align various     * structures used to communicate with the hardware.     */    pci_read_config_byte(pdev, PCI_CACHE_LINE_SIZE, &csz);    if (csz == 0) {        /*         * Linux 2.4.18 (at least) writes the cache line size         * register as a 16-bit wide register which is wrong.         * We must have this setup properly for rx buffer         * DMA to work so force a reasonable value here if it         * comes up zero.         */        csz = L1_CACHE_BYTES / sizeof(u32);        pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, csz);    }    /*     * The default setting of latency timer yields poor results,     * set it to the value used by other systems. It may be worth     * tweaking this setting more.     */    pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xa8);    pci_set_master(pdev);    /*     * Disable the RETRY_TIMEOUT register (0x41) to keep     * PCI Tx retries from interfering with C3 CPU state.     */    pci_read_config_dword(pdev, 0x40, &val);    if ((val & 0x0000ff00) != 0)        pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);    ret = pci_request_region(pdev, 0, "ath9k");    if (ret) {        dev_err(&pdev->dev, "PCI memory region reserve error/n");        ret = -ENODEV;        goto err_region;    }    mem = pci_iomap(pdev, 0, 0);    if (!mem) {        printk(KERN_ERR "PCI memory map error/n") ;        ret = -EIO;        goto err_iomap;    }    hw = ieee80211_alloc_hw(sizeof(struct ath_softc), &ath9k_ops);    if (!hw) {        dev_err(&pdev->dev, "No memory for ieee80211_hw/n");        ret = -ENOMEM;        goto err_alloc_hw;    }    SET_IEEE80211_DEV(hw, &pdev->dev);    pci_set_drvdata(pdev, hw);    sc = hw->priv;    sc->hw = hw;    sc->dev = &pdev->dev;    sc->mem = mem;    /* Will be cleared in ath9k_start() */    sc->sc_flags |= SC_OP_INVALID;    ret = request_irq(pdev->irq, ath_isr, IRQF_SHARED, "ath9k", sc);    if (ret) {        dev_err(&pdev->dev, "request_irq failed/n");        goto err_irq;    }    sc->irq = pdev->irq;    ret = ath9k_init_device(id->device, sc, &ath_pci_bus_ops);//.........这里部分代码省略.........
开发者ID:aaron856,项目名称:linux-3.x,代码行数:101,


示例13: init_cc_resources

static int init_cc_resources(struct platform_device *plat_dev){	struct resource *req_mem_cc_regs = NULL;	struct cc_drvdata *new_drvdata;	struct device *dev = &plat_dev->dev;	struct device_node *np = dev->of_node;	u32 signature_val;	u64 dma_mask;	int rc = 0;	new_drvdata = devm_kzalloc(dev, sizeof(*new_drvdata), GFP_KERNEL);	if (!new_drvdata)		return -ENOMEM;	platform_set_drvdata(plat_dev, new_drvdata);	new_drvdata->plat_dev = plat_dev;	new_drvdata->clk = of_clk_get(np, 0);	new_drvdata->coherent = of_dma_is_coherent(np);	/* Get device resources */	/* First CC registers space */	req_mem_cc_regs = platform_get_resource(plat_dev, IORESOURCE_MEM, 0);	/* Map registers space */	new_drvdata->cc_base = devm_ioremap_resource(dev, req_mem_cc_regs);	if (IS_ERR(new_drvdata->cc_base))		return PTR_ERR(new_drvdata->cc_base);	dev_dbg(dev, "Got MEM resource (%s): %pR/n", req_mem_cc_regs->name,		req_mem_cc_regs);	dev_dbg(dev, "CC registers mapped from %pa to 0x%p/n",		&req_mem_cc_regs->start, new_drvdata->cc_base);	/* Then IRQ */	new_drvdata->irq = platform_get_irq(plat_dev, 0);	if (new_drvdata->irq < 0) {		dev_err(dev, "Failed getting IRQ resource/n");		return new_drvdata->irq;	}	rc = devm_request_irq(dev, new_drvdata->irq, cc_isr,			      IRQF_SHARED, "arm_cc7x", new_drvdata);	if (rc) {		dev_err(dev, "Could not register to interrupt %d/n",			new_drvdata->irq);		return rc;	}	dev_dbg(dev, "Registered to IRQ: %d/n", new_drvdata->irq);	init_completion(&new_drvdata->hw_queue_avail);	if (!plat_dev->dev.dma_mask)		plat_dev->dev.dma_mask = &plat_dev->dev.coherent_dma_mask;	dma_mask = DMA_BIT_MASK(DMA_BIT_MASK_LEN);	while (dma_mask > 0x7fffffffUL) {		if (dma_supported(&plat_dev->dev, dma_mask)) {			rc = dma_set_coherent_mask(&plat_dev->dev, dma_mask);			if (!rc)				break;		}		dma_mask >>= 1;	}	if (rc) {		dev_err(dev, "Failed in dma_set_mask, mask=%par/n", &dma_mask);		return rc;	}	rc = cc_clk_on(new_drvdata);	if (rc) {		dev_err(dev, "Failed to enable clock");		return rc;	}	/* Verify correct mapping */	signature_val = cc_ioread(new_drvdata, CC_REG(HOST_SIGNATURE));	if (signature_val != CC_DEV_SIGNATURE) {		dev_err(dev, "Invalid CC signature: SIGNATURE=0x%08X != expected=0x%08X/n",			signature_val, (u32)CC_DEV_SIGNATURE);		rc = -EINVAL;		goto post_clk_err;	}	dev_dbg(dev, "CC SIGNATURE=0x%08X/n", signature_val);	/* Display HW versions */	dev_info(dev, "ARM CryptoCell %s Driver: HW version 0x%08X, Driver version %s/n",		 CC_DEV_NAME_STR,		 cc_ioread(new_drvdata, CC_REG(HOST_VERSION)),		 DRV_MODULE_VERSION);	rc = init_cc_regs(new_drvdata, true);	if (rc) {		dev_err(dev, "init_cc_regs failed/n");		goto post_clk_err;	}	rc = cc_debugfs_init(new_drvdata);	if (rc) {		dev_err(dev, "Failed registering debugfs interface/n");//.........这里部分代码省略.........
开发者ID:ReneNyffenegger,项目名称:linux,代码行数:101,


示例14: DMA_BIT_MASK

}struct snd_pcm_ops mxs_pcm_ops = {	.open		= mxs_pcm_open,	.close		= mxs_pcm_close,	.ioctl		= snd_pcm_lib_ioctl,	.hw_params	= mxs_pcm_hw_params,	.hw_free	= mxs_pcm_hw_free,	.prepare	= mxs_pcm_prepare,	.trigger	= mxs_pcm_trigger,	.pointer	= mxs_pcm_pointer,	.copy		= mcs_pcm_copy,	.mmap		= mxs_pcm_mmap,};static u64 mxs_pcm_dma_mask = DMA_BIT_MASK(32);static int mxs_pcm_new(struct snd_card *card,			    struct snd_soc_dai *dai, struct snd_pcm *pcm){	size_t size = mxs_pcm_hardware.buffer_bytes_max;	if (!card->dev->dma_mask)		card->dev->dma_mask = &mxs_pcm_dma_mask;	if (!card->dev->coherent_dma_mask)		card->dev->coherent_dma_mask = DMA_BIT_MASK(32);	snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, NULL,					      size, size);
开发者ID:tiagolb,项目名称:liboot-tz,代码行数:30,


示例15: DMA_BIT_MASK

	},	{		.start = DMOV_HSUART1_TX_CHAN,		.end   = DMOV_HSUART1_RX_CHAN,		.name  = "uartdm_channels",		.flags = IORESOURCE_DMA,	},	{		.start = DMOV_HSUART1_TX_CRCI,		.end   = DMOV_HSUART1_RX_CRCI,		.name  = "uartdm_crci",		.flags = IORESOURCE_DMA,	},};static u64 msm_uart_dm1_dma_mask = DMA_BIT_MASK(32);struct platform_device msm_device_uart_dm1 = {	.name = "msm_serial_hs",	.id = 0,	.num_resources = ARRAY_SIZE(msm_uart1_dm_resources),	.resource = msm_uart1_dm_resources,	.dev		= {		.dma_mask = &msm_uart_dm1_dma_mask,		.coherent_dma_mask = DMA_BIT_MASK(32),	},};static struct resource msm_uart2_dm_resources[] = {	{		.start = MSM_UART2DM_PHYS,
开发者ID:DroidHost,项目名称:android_kernel_samsung_reverb,代码行数:31,


示例16: xlp_find_pci_dev

//.........这里部分代码省略.........		j=node_online(i);		if(!j)     continue; 		maxdevice += XLP_MAX_DEVICE;	}		printk(KERN_DEBUG "XLP platform devices:/n");	for (i=0; i<maxdevice; i++) {		for (j=0; j<XLP_MAX_FUNC; j++) {			mmio = nlm_hal_get_dev_base(0, 0, i, j);			val  = nlm_hal_read_32bit_reg(mmio, 0);			if(val == 0xFFFFFFFF)				continue;		// No PCI device			devid = (val & 0xFFFF0000) >> 16;//			printk("PCI-e Device ID 0x%04X found at bus 0, device %d, function %d/n", devid, i, j);			idx = get_dev2drv(devid);			if(idx < 0)				continue;		// Not found in table			/* Register NAND only for other nodes.			 * Remove if condition when other devices are supported on other nodes as well.			 * */			if(!((i>8 && (devid == XLP_DEVID_NAND) ) || (i<8)))				continue;			num_devices = 1;			/* Handle PCI-e devices with multiple platform devices */			if (devid == XLP2XX_DEVID_I2C) {				if (is_nlm_xlp108() || is_nlm_xlp104() || is_nlm_xlp101())					num_devices = 2;				else					num_devices = 4;			}			while(num_devices--) {		// Handle multiple IDs per PCI device				base_id = dev2drv_table[idx].id++;				id = base_id;				/* Funny UART exception */				if (devid == XLP_DEVID_UART)					id += PLAT8250_DEV_PLATFORM;				pplatdev = platform_device_alloc((const char*)dev2drv_table[idx].drvname, id);				if (!pplatdev) {					printk(KERN_WARNING "platform_device_alloc failed/n");					continue;				}				if(devid == XLP_DEVID_UART) {					pplatdev->dev.platform_data = &xlp_uart_port[base_id];					xlp_init_uart(base_id);				}				irt = (nlm_hal_read_32bit_reg(mmio, DEV_IRT_INFO) & 0xFFFF);				irq = xlp_irt_to_irq(0, irt);				pres[0].start = irq;				pres[0].end   = irq;				pres[0].flags = IORESOURCE_IRQ;				/* XLP2xx I2C devices share I/O memory - so let the platform driver manage				 * it instead of each platform device (I2C bus).				 */				if(devid == XLP2XX_DEVID_I2C) {					printk(KERN_DEBUG "%12s.%d (PCIe B/D/F = 0/0x%02X/%d), IRQ = %3d/n",							dev2drv_table[idx].drvname, base_id, devid, j, irq);					platform_device_add_resources(pplatdev, pres, 1);				} else {					pres[1].start = mmio;					pres[1].end   = mmio + 0xFFF;					pres[1].flags = IORESOURCE_MEM;					printk(KERN_DEBUG "%12s.%d (PCIe B/D/F = 0/0x%02X/%d), IRQ = %3d, "							"mem = 0x%llX-0x%llX,/n",							dev2drv_table[idx].drvname, base_id, devid, j, irq,							mmio, mmio + 0xFFF);					platform_device_add_resources(pplatdev, pres, 2);				}				if (devid == XLP_DEVID_MMC){					mmc_pplat_dev = pplatdev;				}				pplatdev->dev.dma_mask = &xlp_dev_dmamask;				pplatdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);				platform_device_add(pplatdev);			}		}	}	return 0;}
开发者ID:akennedy-adtran,项目名称:linux_mmc_2.6.32.9,代码行数:101,


示例17: DMA_BIT_MASK

};static struct resource vpfe_resources[] = {	{		.start          = IRQ_VDINT0,		.end            = IRQ_VDINT0,		.flags          = IORESOURCE_IRQ,	},	{		.start          = IRQ_VDINT1,		.end            = IRQ_VDINT1,		.flags          = IORESOURCE_IRQ,	},};static u64 dm644x_video_dma_mask = DMA_BIT_MASK(32);static struct resource dm644x_ccdc_resource[] = {	/* CCDC Base address */	{		.start          = 0x01c70400,		.end            = 0x01c70400 + 0xff,		.flags          = IORESOURCE_MEM,	},};static struct platform_device dm644x_ccdc_dev = {	.name           = "dm644x_ccdc",	.id             = -1,	.num_resources  = ARRAY_SIZE(dm644x_ccdc_resource),	.resource       = dm644x_ccdc_resource,
开发者ID:Klaus-schwarzkopf,项目名称:linux-davinci-sensortherm,代码行数:31,


示例18: DMA_BIT_MASK

static struct resource au1100_lcd_resources[] = {	[0] = {		.start	= AU1100_LCD_PHYS_ADDR,		.end	= AU1100_LCD_PHYS_ADDR + 0x800 - 1,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= AU1100_LCD_INT,		.end	= AU1100_LCD_INT,		.flags	= IORESOURCE_IRQ,	}};static u64 au1100_lcd_dmamask = DMA_BIT_MASK(32);static struct platform_device au1100_lcd_device = {	.name		= "au1100-lcd",	.id		= 0,	.dev = {		.dma_mask		= &au1100_lcd_dmamask,		.coherent_dma_mask	= DMA_BIT_MASK(32),	},	.num_resources	= ARRAY_SIZE(au1100_lcd_resources),	.resource	= au1100_lcd_resources,};static struct resource alchemy_ac97c_res[] = {	[0] = {		.start	= AU1000_AC97_PHYS_ADDR,
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:29,


示例19: intcs_evt2irq

		.end	= 0xfe943fff,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= intcs_evt2irq(0x580),		.flags	= IORESOURCE_IRQ,	},};static struct platform_device lcdc_device = {	.name		= "sh_mobile_lcdc_fb",	.num_resources	= ARRAY_SIZE(lcdc_resources),	.resource	= lcdc_resources,	.dev	= {		.platform_data	= &lcdc_info,		.coherent_dma_mask = DMA_BIT_MASK(32),	},};/* Fixed 1.8V regulator to be used by MMCIF */static struct regulator_consumer_supply fixed1v8_power_consumers[] ={	REGULATOR_SUPPLY("vmmc", "sh_mmcif.0"),	REGULATOR_SUPPLY("vqmmc", "sh_mmcif.0"),};/* MMCIF */static struct resource sh_mmcif_resources[] = {	[0] = {		.name	= "MMCIF",		.start	= 0xe6bd0000,
开发者ID:0x000000FF,项目名称:Linux4Edison,代码行数:31,


示例20: ARRAY_SIZE

		.flags	= IORESOURCE_MEM,	},	{		.start	= USB1_HS_IRQ,		.end	= USB1_HS_IRQ,		.flags	= IORESOURCE_IRQ,	},};struct platform_device msm_device_otg = {	.name		= "msm_otg",	.id		= -1,	.num_resources	= ARRAY_SIZE(resources_otg),	.resource	= resources_otg,	.dev		= {		.coherent_dma_mask	= DMA_BIT_MASK(32),	},};static struct resource resources_hsusb[] = {	{		.start	= MSM9615_HSUSB_PHYS,		.end	= MSM9615_HSUSB_PHYS + MSM9615_HSUSB_SIZE - 1,		.flags	= IORESOURCE_MEM,	},	{		.start	= USB1_HS_IRQ,		.end	= USB1_HS_IRQ,		.flags	= IORESOURCE_IRQ,	},};
开发者ID:AndyOpie,项目名称:android_kernel_lge_msm7x27-3.0.x,代码行数:31,


示例21: INT_CFG

INT_CFG(DM365,  INT_IMX0_DISABLE,    0,     1,    1,     false)INT_CFG(DM365,  INT_HDVICP_ENABLE,   0,     1,    1,     false)INT_CFG(DM365,  INT_HDVICP_DISABLE,  0,     1,    0,     false)INT_CFG(DM365,  INT_IMX1_ENABLE,     24,    1,    1,     false)INT_CFG(DM365,  INT_IMX1_DISABLE,    24,    1,    0,     false)INT_CFG(DM365,  INT_NSF_ENABLE,      25,    1,    1,     false)INT_CFG(DM365,  INT_NSF_DISABLE,     25,    1,    0,     false)EVT_CFG(DM365,	EVT2_ASP_TX,         0,     1,    0,     false)EVT_CFG(DM365,	EVT3_ASP_RX,         1,     1,    0,     false)EVT_CFG(DM365,	EVT2_VC_TX,          0,     1,    1,     false)EVT_CFG(DM365,	EVT3_VC_RX,          1,     1,    1,     false)#endif};static u64 dm365_spi0_dma_mask = DMA_BIT_MASK(32);static struct davinci_spi_platform_data dm365_spi0_pdata = {	.version 	= SPI_VERSION_1,	.num_chipselect = 2,	.clk_internal	= 1,	.cs_hold	= 1,	.intr_level	= 0,	.poll_mode	= 1,	/* 0 -> interrupt mode 1-> polling mode */	.c2tdelay	= 0,	.t2cdelay	= 0,};static struct resource dm365_spi0_resources[] = {	{		.start = 0x01c66000,
开发者ID:12019,项目名称:linux-2.6.34-ts471x,代码行数:31,


示例22: usbnet_probe

intusbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod){	struct usbnet			*dev;	struct net_device		*net;	struct usb_host_interface	*interface;	struct driver_info		*info;	struct usb_device		*xdev;	int				status;	const char			*name;	struct usb_driver 	*driver = to_usb_driver(udev->dev.driver);	/* usbnet already took usb runtime pm, so have to enable the feature	 * for usb interface, otherwise usb_autopm_get_interface may return	 * failure if USB_SUSPEND(RUNTIME_PM) is enabled.	 */	if (!driver->supports_autosuspend) {		driver->supports_autosuspend = 1;		pm_runtime_enable(&udev->dev);	}	name = udev->dev.driver->name;	info = (struct driver_info *) prod->driver_info;	if (!info) {		dev_dbg (&udev->dev, "blacklisted by %s/n", name);		return -ENODEV;	}	xdev = interface_to_usbdev (udev);	interface = udev->cur_altsetting;	usb_get_dev (xdev);	status = -ENOMEM;	// set up our own records	net = alloc_etherdev(sizeof(*dev));	if (!net) {		dbg ("can't kmalloc dev");		goto out;	}	/* netdev_printk() needs this so do it as early as possible */	SET_NETDEV_DEV(net, &udev->dev);	dev = netdev_priv(net);	dev->udev = xdev;	dev->intf = udev;	dev->driver_info = info;	dev->driver_name = name;	dev->msg_enable = netif_msg_init (msg_level, NETIF_MSG_DRV				| NETIF_MSG_PROBE | NETIF_MSG_LINK);	skb_queue_head_init (&dev->rxq);	skb_queue_head_init (&dev->txq);	skb_queue_head_init (&dev->done);	skb_queue_head_init(&dev->rxq_pause);	dev->bh.func = usbnet_bh;	dev->bh.data = (unsigned long) dev;	INIT_WORK (&dev->kevent, kevent);	init_usb_anchor(&dev->deferred);	dev->delay.function = usbnet_bh;	dev->delay.data = (unsigned long) dev;	init_timer (&dev->delay);	mutex_init (&dev->phy_mutex);	dev->net = net;	strcpy (net->name, "usb%d");	memcpy (net->dev_addr, node_id, sizeof node_id);	/* rx and tx sides can use different message sizes;	 * bind() should set rx_urb_size in that case.	 */	dev->hard_mtu = net->mtu + net->hard_header_len;#if 0// dma_supported() is deeply broken on almost all architectures	// possible with some EHCI controllers	if (dma_supported (&udev->dev, DMA_BIT_MASK(64)))		net->features |= NETIF_F_HIGHDMA;#endif	net->netdev_ops = &usbnet_netdev_ops;	net->watchdog_timeo = TX_TIMEOUT_JIFFIES;	net->ethtool_ops = &usbnet_ethtool_ops;	// allow device-specific bind/init procedures	// NOTE net->name still not usable ...	if (info->bind) {		status = info->bind (dev, udev);		if (status < 0)			goto out1;		// heuristic:  "usb%d" for links we know are two-host,		// else "eth%d" when there's reasonable doubt.  userspace		// can rename the link if it knows better.		if ((dev->driver_info->flags & FLAG_ETHER) != 0 &&		    ((dev->driver_info->flags & FLAG_POINTTOPOINT) == 0 ||		     (net->dev_addr [0] & 0x02) == 0))			strcpy (net->name, "eth%d");		/* WLAN devices should always be named "wlan%d" */		if ((dev->driver_info->flags & FLAG_WLAN) != 0)			strcpy(net->name, "wlan%d");//.........这里部分代码省略.........
开发者ID:LOGMD-LifestreamROM,项目名称:xoom-ElementalX,代码行数:101,


示例23: dove_xor1_init

			IRQ_DOVE_XOR_00, IRQ_DOVE_XOR_01);}/***************************************************************************** * XOR 1 ****************************************************************************/static void __init dove_xor1_init(void){	orion_xor1_init(DOVE_XOR1_PHYS_BASE, DOVE_XOR1_HIGH_PHYS_BASE,			IRQ_DOVE_XOR_10, IRQ_DOVE_XOR_11);}/***************************************************************************** * SDIO ****************************************************************************/static u64 sdio_dmamask = DMA_BIT_MASK(32);static struct resource dove_sdio0_resources[] = {	{		.start	= DOVE_SDIO0_PHYS_BASE,		.end	= DOVE_SDIO0_PHYS_BASE + 0xff,		.flags	= IORESOURCE_MEM,	}, {		.start	= IRQ_DOVE_SDIO0,		.end	= IRQ_DOVE_SDIO0,		.flags	= IORESOURCE_IRQ,	},};static struct platform_device dove_sdio0 = {	.name		= "sdhci-dove",
开发者ID:0-T-0,项目名称:ps4-linux,代码行数:31,


示例24: snd_mixart_probe

/* *    probe function - creates the card manager */static int __devinit snd_mixart_probe(struct pci_dev *pci,				      const struct pci_device_id *pci_id){	static int dev;	struct mixart_mgr *mgr;	unsigned int i;	int err;	size_t size;	/*	 */	if (dev >= SNDRV_CARDS)		return -ENODEV;	if (! enable[dev]) {		dev++;		return -ENOENT;	}	/* enable PCI device */	if ((err = pci_enable_device(pci)) < 0)		return err;	pci_set_master(pci);	/* check if we can restrict PCI DMA transfers to 32 bits */	if (pci_set_dma_mask(pci, DMA_BIT_MASK(32)) < 0) {		snd_printk(KERN_ERR "architecture does not support 32bit PCI busmaster DMA/n");		pci_disable_device(pci);		return -ENXIO;	}	/*	 */	mgr = kzalloc(sizeof(*mgr), GFP_KERNEL);	if (! mgr) {		pci_disable_device(pci);		return -ENOMEM;	}	mgr->pci = pci;	mgr->irq = -1;	/* resource assignment */	if ((err = pci_request_regions(pci, CARD_NAME)) < 0) {		kfree(mgr);		pci_disable_device(pci);		return err;	}	for (i = 0; i < 2; i++) {		mgr->mem[i].phys = pci_resource_start(pci, i);		mgr->mem[i].virt = pci_ioremap_bar(pci, i);		if (!mgr->mem[i].virt) {		        printk(KERN_ERR "unable to remap resource 0x%lx/n",			       mgr->mem[i].phys);			snd_mixart_free(mgr);			return -EBUSY;		}	}	if (request_irq(pci->irq, snd_mixart_interrupt, IRQF_SHARED,			CARD_NAME, mgr)) {		snd_printk(KERN_ERR "unable to grab IRQ %d/n", pci->irq);		snd_mixart_free(mgr);		return -EBUSY;	}	mgr->irq = pci->irq;	sprintf(mgr->shortname, "Digigram miXart");	sprintf(mgr->longname, "%s at 0x%lx & 0x%lx, irq %i", mgr->shortname, mgr->mem[0].phys, mgr->mem[1].phys, mgr->irq);	/* ISR spinlock  */	spin_lock_init(&mgr->lock);	/* init mailbox  */	mgr->msg_fifo_readptr = 0;	mgr->msg_fifo_writeptr = 0;	spin_lock_init(&mgr->msg_lock);	mutex_init(&mgr->msg_mutex);	init_waitqueue_head(&mgr->msg_sleep);	atomic_set(&mgr->msg_processed, 0);	/* init setup mutex*/	mutex_init(&mgr->setup_mutex);	/* init message taslket */	tasklet_init(&mgr->msg_taskq, snd_mixart_msg_tasklet, (unsigned long) mgr);	/* card assignment */	mgr->num_cards = MIXART_MAX_CARDS; /* 4  FIXME: configurable? */	for (i = 0; i < mgr->num_cards; i++) {		struct snd_card *card;		char tmpid[16];		int idx;		if (index[dev] < 0)			idx = index[dev];		else//.........这里部分代码省略.........
开发者ID:KaZoom,项目名称:buildroot-linux-kernel-m3,代码行数:101,


示例25: DMA_BIT_MASK

//#include <mach/irqs.h>//#include <mach/map.h>//#include <plat/devs.h>static struct resource s3c_usb_hsotg_resources[] = {	[0] = {		.start	= S3C_PA_USB_HSOTG,		.end	= S3C_PA_USB_HSOTG + 0x10000 - 1,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= IRQ_OTG,		.end	= IRQ_OTG,		.flags	= IORESOURCE_IRQ,	},};static u64 s3c_hsotg_dmamask = DMA_BIT_MASK(32);struct platform_device s3c_device_usb_hsotg = {	.name		= "s3c-hsotg",	.id		= -1,	.num_resources	= ARRAY_SIZE(s3c_usb_hsotg_resources),	.resource	= s3c_usb_hsotg_resources,	.dev		= {		.dma_mask		= &s3c_hsotg_dmamask,		.coherent_dma_mask	= DMA_BIT_MASK(32),	},};
开发者ID:debugevery,项目名称:android-kernel-samsung-dev,代码行数:30,


示例26: DMA_BIT_MASK

#endifstatic struct pps_gpio_platform_data pps_gpio_info = {	.assert_falling_edge = false,	.capture_clear = false,	.gpio_pin = -1,	.gpio_label = "PPS",};static struct platform_device pps_gpio_device = {	.name = "pps-gpio",	.id = PLATFORM_DEVID_NONE,	.dev.platform_data = &pps_gpio_info,};static u64 fb_dmamask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON);static struct platform_device bcm2708_fb_device = {	.name = "bcm2708_fb",	.id = -1,		/* only one bcm2708_fb */	.resource = NULL,	.num_resources = 0,	.dev = {		.dma_mask = &fb_dmamask,		.coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON),		},};static struct resource bcm2708_usb_resources[] = {	[0] = {	       .start = USB_BASE,
开发者ID:MCherifiOSS,项目名称:tizen-tv-rpi-linux,代码行数:31,


示例27: DMA_BIT_MASK

	},	[3] = {		.start = DMACH_AC97_MICIN,		.end   = DMACH_AC97_MICIN,		.flags = IORESOURCE_DMA,	},	[4] = {		.start = IRQ_AC97,		.end   = IRQ_AC97,		.flags = IORESOURCE_IRQ,	},};static struct s3c_audio_pdata s3c_ac97_pdata;static u64 s3c64xx_ac97_dmamask = DMA_BIT_MASK(32);struct platform_device s3c64xx_device_ac97 = {	.name		  = "s3c-ac97",	.id		  = -1,	.num_resources	  = ARRAY_SIZE(s3c64xx_ac97_resource),	.resource	  = s3c64xx_ac97_resource,	.dev = {		.platform_data = &s3c_ac97_pdata,		.dma_mask = &s3c64xx_ac97_dmamask,		.coherent_dma_mask = DMA_BIT_MASK(32),	},};EXPORT_SYMBOL(s3c64xx_device_ac97);void __init s3c64xx_ac97_setup_gpio(int num)
开发者ID:12019,项目名称:android_kernel_samsung_xcover,代码行数:31,


示例28: defined

#include <mach/board.h>#include <mach/gpio.h>#include <mach/at572d940hf.h>#include <mach/at572d940hf_matrix.h>#include <mach/at91sam9_smc.h>#include "generic.h"#include "sam9_smc.h"/* -------------------------------------------------------------------- *  USB Host * -------------------------------------------------------------------- */#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)static u64 ohci_dmamask = DMA_BIT_MASK(32);static struct at91_usbh_data usbh_data;static struct resource usbh_resources[] = {	[0] = {		.start	= AT572D940HF_UHP_BASE,		.end	= AT572D940HF_UHP_BASE + SZ_1M - 1,		.flags	= IORESOURCE_MEM,	},	[1] = {		.start	= AT572D940HF_ID_UHP,		.end	= AT572D940HF_ID_UHP,		.flags	= IORESOURCE_IRQ,	},};
开发者ID:PolySat,项目名称:linux-2.6.30.2,代码行数:30,


示例29: snd_ad1889_create

static intsnd_ad1889_create(struct snd_card *card,		  struct pci_dev *pci,		  struct snd_ad1889 **rchip){	int err;	struct snd_ad1889 *chip;	static struct snd_device_ops ops = {		.dev_free = snd_ad1889_dev_free,	};	*rchip = NULL;	if ((err = pci_enable_device(pci)) < 0)		return err;	/* check PCI availability (32bit DMA) */	if (pci_set_dma_mask(pci, DMA_BIT_MASK(32)) < 0 ||	    pci_set_consistent_dma_mask(pci, DMA_BIT_MASK(32)) < 0) {		dev_err(card->dev, "error setting 32-bit DMA mask./n");		pci_disable_device(pci);		return -ENXIO;	}	/* allocate chip specific data with zero-filled memory */	if ((chip = kzalloc(sizeof(*chip), GFP_KERNEL)) == NULL) {		pci_disable_device(pci);		return -ENOMEM;	}	chip->card = card;	card->private_data = chip;	chip->pci = pci;	chip->irq = -1;	/* (1) PCI resource allocation */	if ((err = pci_request_regions(pci, card->driver)) < 0)		goto free_and_ret;	chip->bar = pci_resource_start(pci, 0);	chip->iobase = pci_ioremap_bar(pci, 0);	if (chip->iobase == NULL) {		dev_err(card->dev, "unable to reserve region./n");		err = -EBUSY;		goto free_and_ret;	}		pci_set_master(pci);	spin_lock_init(&chip->lock);	/* only now can we call ad1889_free */	if (request_irq(pci->irq, snd_ad1889_interrupt,			IRQF_SHARED, KBUILD_MODNAME, chip)) {		dev_err(card->dev, "cannot obtain IRQ %d/n", pci->irq);		snd_ad1889_free(chip);		return -EBUSY;	}	chip->irq = pci->irq;	synchronize_irq(chip->irq);	/* (2) initialization of the chip hardware */	if ((err = snd_ad1889_init(chip)) < 0) {		snd_ad1889_free(chip);		return err;	}	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {		snd_ad1889_free(chip);		return err;	}	*rchip = chip;	return 0;free_and_ret:	kfree(chip);	pci_disable_device(pci);	return err;}
开发者ID:Abioy,项目名称:kasan,代码行数:83,



注:本文中的DMA_BIT_MASK函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ DMA_BLOCK函数代码示例
C++ DL_ASSERT函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。