本文整理汇总了C++中clk_disable函数的典型用法代码示例。如果您正苦于以下问题:C++ clk_disable函数的具体用法?C++ clk_disable怎么用?C++ clk_disable使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clk_disable函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: s5p_g2d_probe
int s5p_g2d_probe(struct platform_device *pdev)
{
struct resource *res;
int ret;
#ifdef G2D_DEBUG
printk("###########################s5p_g2d_probe called\n");
#endif
/* find the IRQs */
s5p_g2d_irq_num = platform_get_irq(pdev, 0);
if(s5p_g2d_irq_num <= 0) {
printk(KERN_ERR "failed to get irq resouce\n");
return -ENOENT;
}
ret = request_irq(s5p_g2d_irq_num, s5p_g2d_irq, IRQF_DISABLED, pdev->name, NULL);
if (ret) {
printk("request_irq(g2d) failed.\n");
return ret;
}
/* get the memory region */
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if(res == NULL) {
printk(KERN_ERR "failed to get memory region resouce\n");
return -ENOENT;
}
s5p_g2d_mem = request_mem_region(res->start, res->end-res->start+1, pdev->name);
if(s5p_g2d_mem == NULL) {
printk(KERN_ERR "failed to reserve memory region\n");
return -ENOENT;
}
s5p_g2d_base = ioremap(s5p_g2d_mem->start, s5p_g2d_mem->end - res->start + 1);
if(s5p_g2d_base == NULL) {
printk(KERN_ERR "failed ioremap\n");
return -ENOENT;
}
#if 1
s5p_g2d_clock = clk_get(&pdev->dev, "clk_g2d");
if (IS_ERR(s5p_g2d_clock)) {
printk(KERN_ERR "failed to find g2d clock source\n");
return -ENOENT;
}
clk_enable(s5p_g2d_clock);
#endif
init_waitqueue_head(&waitq_g2d);
ret = misc_register(&s5p_g2d_dev);
if (ret) {
printk (KERN_ERR "cannot register miscdev on minor=%d (%d)\n",
G2D_MINOR, ret);
return ret;
}
h_rot_mutex = (struct mutex *)kmalloc(sizeof(struct mutex), GFP_KERNEL);
if (h_rot_mutex == NULL)
return -1;
mutex_init(h_rot_mutex);
clk_disable(s5p_g2d_clock);
//#ifdef G2D_DEBUG
printk(KERN_ALERT"##################### s5p_g2d_probe Success\n");
//#endif
return 0;
}
开发者ID:Arakmar,项目名称:G3MOD,代码行数:72,代码来源:g2d_dev.c
示例2: hawaii_camera_power_front
//.........这里部分代码省略.........
regulator_enable(d_gpsr_cam0_1v8);
usleep_range(1000, 1010);
regulator_enable(d_3v0_mmc1_vcc);
usleep_range(1000, 1010);
if (mm_ccu_set_pll_select(CSI1_BYTE1_PLL, 8)) {
pr_err("failed to set BYTE1\n");
goto e_clk_pll;
}
if (mm_ccu_set_pll_select(CSI1_BYTE0_PLL, 8)) {
pr_err("failed to set BYTE0\n");
goto e_clk_pll;
}
if (mm_ccu_set_pll_select(CSI1_CAMPIX_PLL, 8)) {
pr_err("failed to set PIXPLL\n");
goto e_clk_pll;
}
value = clk_enable(lp_clock_0);
if (value) {
printk(KERN_ERR "Failed to enable lp clock 0\n");
goto e_clk_lp0;
}
value = clk_set_rate(lp_clock_0, CSI0_LP_FREQ);
if (value) {
pr_err("Failed to set lp clock 0\n");
goto e_clk_set_lp0;
}
value = clk_enable(lp_clock_1);
if (value) {
pr_err(KERN_ERR "Failed to enable lp clock 1\n");
goto e_clk_lp1;
}
value = clk_set_rate(lp_clock_1, CSI1_LP_FREQ);
if (value) {
pr_err("Failed to set lp clock 1\n");
goto e_clk_set_lp1;
}
value = clk_enable(axi_clk_0);
if (value) {
printk(KERN_ERR "Failed to enable axi clock 0\n");
goto e_clk_axi_clk_0;
}
value = clk_enable(axi_clk);
if (value) {
printk(KERN_ERR "Failed to enable axi clock 1\n");
goto e_clk_axi;
}
value = clk_enable(clock);
if (value) {
printk("Failed to enable sensor 1 clock\n");
goto e_clk_clock;
}
value = clk_set_rate(clock, SENSOR_1_CLK_FREQ);
if (value) {
printk("Failed to set sensor 1 clock\n");
goto e_clk_set_clock;
}
usleep_range(10000, 10100);
gpio_set_value(SENSOR_1_GPIO_PWRDN, 0);
msleep(30);
} else {
gpio_set_value(SENSOR_1_GPIO_PWRDN, 1);
clk_disable(lp_clock_0);
clk_disable(lp_clock_1);
clk_disable(clock);
clk_disable(axi_clk);
clk_disable(axi_clk_0);
regulator_disable(d_lvldo2_cam1_1v8);
regulator_disable(d_1v8_mmc1_vcc);
regulator_disable(d_gpsr_cam0_1v8);
regulator_disable(d_3v0_mmc1_vcc);
if (pi_mgr_dfs_request_update
(&unicam_dfs_node, PI_MGR_DFS_MIN_VALUE)) {
printk("Failed to set DVFS for unicam\n");
}
}
return 0;
e_clk_set_clock:
clk_disable(clock);
e_clk_clock:
clk_disable(axi_clk);
e_clk_axi:
clk_disable(axi_clk_0);
e_clk_axi_clk_0:
e_clk_set_lp1:
clk_disable(lp_clock_1);
e_clk_lp1:
e_clk_set_lp0:
clk_disable(lp_clock_0);
e_clk_lp0:
e_clk_pll:
e_clk_get:
return ret;
}
开发者ID:ASAZING,项目名称:Android-Kernel-Gt-s7390l,代码行数:101,代码来源:board-garnet.c
示例3: s3c_rtc_probe
//.........这里部分代码省略.........
if (res == NULL) {
dev_err(&pdev->dev, "failed to get memory region resource\n");
return -ENOENT;
}
s3c_rtc_base = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(s3c_rtc_base))
return PTR_ERR(s3c_rtc_base);
rtc_clk = devm_clk_get(&pdev->dev, "rtc");
if (IS_ERR(rtc_clk)) {
dev_err(&pdev->dev, "failed to find rtc clock source\n");
ret = PTR_ERR(rtc_clk);
rtc_clk = NULL;
return ret;
}
clk_prepare_enable(rtc_clk);
/* check to see if everything is setup correctly */
s3c_rtc_enable(pdev, 1);
dev_dbg(&pdev->dev, "s3c2410_rtc: RTCCON=%02x\n",
readw(s3c_rtc_base + S3C2410_RTCCON));
device_init_wakeup(&pdev->dev, 1);
/* register RTC and exit */
rtc = devm_rtc_device_register(&pdev->dev, "s3c", &s3c_rtcops,
THIS_MODULE);
if (IS_ERR(rtc)) {
dev_err(&pdev->dev, "cannot attach rtc\n");
ret = PTR_ERR(rtc);
goto err_nortc;
}
s3c_rtc_cpu_type = s3c_rtc_get_driver_data(pdev);
/* Check RTC Time */
s3c_rtc_gettime(NULL, &rtc_tm);
if (rtc_valid_tm(&rtc_tm)) {
rtc_tm.tm_year = 100;
rtc_tm.tm_mon = 0;
rtc_tm.tm_mday = 1;
rtc_tm.tm_hour = 0;
rtc_tm.tm_min = 0;
rtc_tm.tm_sec = 0;
s3c_rtc_settime(NULL, &rtc_tm);
dev_warn(&pdev->dev, "warning: invalid RTC value so initializing it\n");
}
if (s3c_rtc_cpu_type != TYPE_S3C2410)
rtc->max_user_freq = 32768;
else
rtc->max_user_freq = 128;
if (s3c_rtc_cpu_type == TYPE_S3C2416 || s3c_rtc_cpu_type == TYPE_S3C2443) {
tmp = readw(s3c_rtc_base + S3C2410_RTCCON);
tmp |= S3C2443_RTCCON_TICSEL;
writew(tmp, s3c_rtc_base + S3C2410_RTCCON);
}
platform_set_drvdata(pdev, rtc);
s3c_rtc_setfreq(&pdev->dev, 1);
ret = devm_request_irq(&pdev->dev, s3c_rtc_alarmno, s3c_rtc_alarmirq,
0, "s3c2410-rtc alarm", rtc);
if (ret) {
dev_err(&pdev->dev, "IRQ%d error %d\n", s3c_rtc_alarmno, ret);
goto err_alarm_irq;
}
ret = devm_request_irq(&pdev->dev, s3c_rtc_tickno, s3c_rtc_tickirq,
0, "s3c2410-rtc tick", rtc);
if (ret) {
dev_err(&pdev->dev, "IRQ%d error %d\n", s3c_rtc_tickno, ret);
goto err_alarm_irq;
}
clk_disable(rtc_clk);
return 0;
err_alarm_irq:
platform_set_drvdata(pdev, NULL);
err_nortc:
s3c_rtc_enable(pdev, 0);
clk_disable_unprepare(rtc_clk);
return ret;
}
开发者ID:realmz,项目名称:blackfin-linux,代码行数:101,代码来源:rtc-s3c.c
示例4: dw_spi_mmio_probe
static int __devinit dw_spi_mmio_probe(struct platform_device *pdev)
{
struct dw_spi_mmio *dwsmmio;
struct dw_spi *dws;
struct resource *mem, *ioarea;
int ret;
dwsmmio = kzalloc(sizeof(struct dw_spi_mmio), GFP_KERNEL);
if (!dwsmmio) {
ret = -ENOMEM;
goto err_end;
}
dws = &dwsmmio->dws;
/* Get basic io resource and map it */
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!mem) {
dev_err(&pdev->dev, "no mem resource?\n");
ret = -EINVAL;
goto err_kfree;
}
ioarea = request_mem_region(mem->start, resource_size(mem),
pdev->name);
if (!ioarea) {
dev_err(&pdev->dev, "SPI region already claimed\n");
ret = -EBUSY;
goto err_kfree;
}
dws->regs = ioremap_nocache(mem->start, resource_size(mem));
if (!dws->regs) {
dev_err(&pdev->dev, "SPI region already mapped\n");
ret = -ENOMEM;
goto err_release_reg;
}
dws->irq = platform_get_irq(pdev, 0);
if (dws->irq < 0) {
dev_err(&pdev->dev, "no irq resource?\n");
ret = dws->irq; /* -ENXIO */
goto err_unmap;
}
dwsmmio->clk = clk_get(&pdev->dev, NULL);
if (!dwsmmio->clk) {
ret = -ENODEV;
goto err_irq;
}
clk_enable(dwsmmio->clk);
dws->parent_dev = &pdev->dev;
dws->bus_num = 0;
dws->num_cs = 4;
dws->max_freq = clk_get_rate(dwsmmio->clk);
ret = dw_spi_add_host(dws);
if (ret)
goto err_clk;
platform_set_drvdata(pdev, dwsmmio);
return 0;
err_clk:
clk_disable(dwsmmio->clk);
clk_put(dwsmmio->clk);
dwsmmio->clk = NULL;
err_irq:
free_irq(dws->irq, dws);
err_unmap:
iounmap(dws->regs);
err_release_reg:
release_mem_region(mem->start, resource_size(mem));
err_kfree:
kfree(dwsmmio);
err_end:
return ret;
}
开发者ID:Medvedroid,项目名称:OT_903D-kernel-2.6.35.7,代码行数:79,代码来源:dw_spi_mmio.c
示例5: ep93xx_stop_hc
static void ep93xx_stop_hc(struct device *dev)
{
clk_disable(usb_host_clock);
}
开发者ID:JulianKemmerer,项目名称:Drexel-CS370,代码行数:4,代码来源:ohci-ep93xx.c
示例6: sysmmu_clk_disable
void sysmmu_clk_disable(sysmmu_ips ips)
{
if (sysmmu_clk[ips])
clk_disable(sysmmu_clk[ips]);
}
开发者ID:08opt,项目名称:linux,代码行数:5,代码来源:dev-sysmmu.c
示例7: usb_hcd_nxp_probe
//.........这里部分代码省略.........
__raw_writel(USB_SLAVE_HCLK_EN | (1 << 19), USB_CTRL);
ret = i2c_add_driver(&isp1301_driver);
if (ret < 0) {
err("failed to add ISP1301 driver");
goto out;
}
i2c_adap = i2c_get_adapter(2);
memset(&i2c_info, 0, sizeof(struct i2c_board_info));
strlcpy(i2c_info.type, "isp1301_nxp", I2C_NAME_SIZE);
isp1301_i2c_client = i2c_new_probed_device(i2c_adap, &i2c_info,
normal_i2c, NULL);
i2c_put_adapter(i2c_adap);
if (!isp1301_i2c_client) {
err("failed to connect I2C to ISP1301 USB Transceiver");
ret = -ENODEV;
goto out_i2c_driver;
}
isp1301_configure();
/* Enable USB PLL */
usb_clk = clk_get(&pdev->dev, "ck_pll5");
if (IS_ERR(usb_clk)) {
err("failed to acquire USB PLL");
ret = PTR_ERR(usb_clk);
goto out1;
}
ret = clk_enable(usb_clk);
if (ret < 0) {
err("failed to start USB PLL");
goto out2;
}
ret = clk_set_rate(usb_clk, 48000);
if (ret < 0) {
err("failed to set USB clock rate");
goto out3;
}
__raw_writel(__raw_readl(USB_CTRL) | USB_HOST_NEED_CLK_EN, USB_CTRL);
/* Set to enable all needed USB clocks */
__raw_writel(USB_CLOCK_MASK, USB_OTG_CLK_CTRL);
while ((__raw_readl(USB_OTG_CLK_STAT) & USB_CLOCK_MASK) !=
USB_CLOCK_MASK) ;
hcd = usb_create_hcd (driver, &pdev->dev, dev_name(&pdev->dev));
if (!hcd) {
err("Failed to allocate HC buffer");
ret = -ENOMEM;
goto out3;
}
/* Set all USB bits in the Start Enable register */
nxp_set_usb_bits();
hcd->rsrc_start = pdev->resource[0].start;
hcd->rsrc_len = pdev->resource[0].end - pdev->resource[0].start + 1;
if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {
dev_dbg(&pdev->dev, "request_mem_region failed\n");
ret = -ENOMEM;
goto out4;
}
hcd->regs = (void __iomem *)pdev->resource[0].start;
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
ret = -ENXIO;
goto out4;
}
nxp_start_hc();
platform_set_drvdata(pdev, hcd);
ohci = hcd_to_ohci(hcd);
ohci_hcd_init(ohci);
dev_info(&pdev->dev, "at 0x%p, irq %d\n", hcd->regs, hcd->irq);
ret = usb_add_hcd(hcd, irq, 0);
if (ret == 0)
return ret;
nxp_stop_hc();
out4:
nxp_unset_usb_bits();
usb_put_hcd(hcd);
out3:
clk_disable(usb_clk);
out2:
clk_put(usb_clk);
out1:
i2c_unregister_device(isp1301_i2c_client);
isp1301_i2c_client = NULL;
out_i2c_driver:
i2c_del_driver(&isp1301_driver);
out:
return ret;
}
开发者ID:adis1313,项目名称:android_kernel_samsung_msm8974,代码行数:101,代码来源:ohci-nxp.c
示例8: wkup_m3_init
//.........这里部分代码省略.........
ret = -ENODEV;
goto exit;
}
ipc_regs = ioremap(A8_M3_IPC_REGS, 0x4*8);
if (!ipc_regs) {
pr_err("Could not ioremap the IPC area\b");
ret = -ENOMEM;
goto exit;
}
m3_eoi = ioremap(M3_TXEV_EOI, 0x4);
if (!m3_eoi) {
pr_err("Could not ioremap the EOI register\n");
ret = -ENOMEM;
goto err1;
}
/* Reserve the MBOX for sending messages to M3 */
m3_mbox = omap_mbox_get("wkup_m3", &wkup_m3_mbox_notifier);
if (IS_ERR(m3_mbox)) {
pr_err("Could not reserve mailbox for A8->M3 IPC\n");
ret = -ENODEV;
goto err2;
}
/* Enable access to the M3 code and data area from A8 */
m3_clk = clk_get(NULL, "wkup_m3_fck");
if (IS_ERR(m3_clk)) {
pr_err("%s failed to enable WKUP_M3 clock\n", __func__);
goto err3;
}
if (clk_enable(m3_clk)) {
pr_err("%s WKUP_M3: clock enable Failed\n", __func__);
goto err4;
}
m3_code = ioremap(M3_UMEM, SZ_16K);
if (!m3_code) {
pr_err("%s Could not ioremap M3 code space\n", __func__);
ret = -ENOMEM;
goto err5;
}
pr_info("Trying to load am335x-pm-firmware.bin (60 secs timeout)\n");
ret = request_firmware(&firmware, "am335x-pm-firmware.bin", mpu_dev);
if (ret < 0) {
dev_err(mpu_dev, "request_firmware failed\n");
goto err6;
} else {
memcpy(m3_code, firmware->data, firmware->size);
pr_info("Copied the M3 firmware to UMEM\n");
}
ret = request_irq(AM33XX_IRQ_M3_M3SP_TXEV, wkup_m3_txev_handler,
IRQF_DISABLED, "wkup_m3_txev", NULL);
if (ret) {
pr_err("%s request_irq failed for 0x%x\n", __func__,
AM33XX_IRQ_M3_M3SP_TXEV);
goto err6;
}
m3_state = M3_STATE_RESET;
/*
* Invalidate M3 firmware version before hardreset.
* Write invalid version in lower 4 nibbles of parameter
* register (ipc_regs + 0x8).
*/
ipc_reg_r = readl(ipc_regs + 0x8);
ipc_reg_r &= 0xffff0000;
m3_version |= ipc_reg_r;
writel(m3_version, ipc_regs + 0x8);
ret = omap_hwmod_deassert_hardreset(wkup_m3_oh, "wkup_m3");
if (ret) {
pr_err("Could not deassert the reset for WKUP_M3\n");
goto err6;
} else {
return 0;
}
err6:
release_firmware(firmware);
iounmap(m3_code);
err5:
clk_disable(m3_clk);
err4:
clk_put(m3_clk);
err3:
omap_mbox_put(m3_mbox, &wkup_m3_mbox_notifier);
err2:
iounmap(m3_eoi);
err1:
iounmap(ipc_regs);
exit:
return ret;
}
开发者ID:Potin,项目名称:linux-am33x-04.06.00.10,代码行数:101,代码来源:pm33xx.c
示例9: sdhci_pxav3_probe
static int __devinit sdhci_pxav3_probe(struct platform_device *pdev)
{
struct sdhci_pltfm_host *pltfm_host;
struct sdhci_pxa_platdata *pdata = pdev->dev.platform_data;
struct device *dev = &pdev->dev;
struct sdhci_host *host = NULL;
struct sdhci_pxa *pxa = NULL;
int ret;
struct clk *clk;
pxa = kzalloc(sizeof(struct sdhci_pxa), GFP_KERNEL);
if (!pxa)
return -ENOMEM;
host = sdhci_pltfm_init(pdev, NULL);
if (IS_ERR(host)) {
kfree(pxa);
return PTR_ERR(host);
}
pltfm_host = sdhci_priv(host);
pltfm_host->priv = pxa;
clk = clk_get(dev, "PXA-SDHCLK");
if (IS_ERR(clk)) {
dev_err(dev, "failed to get io clock\n");
ret = PTR_ERR(clk);
goto err_clk_get;
}
pltfm_host->clk = clk;
clk_enable(clk);
host->quirks = SDHCI_QUIRK_BROKEN_TIMEOUT_VAL
| SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC
| SDHCI_QUIRK_32BIT_ADMA_SIZE;
/* enable 1/8V DDR capable */
host->mmc->caps |= MMC_CAP_1_8V_DDR;
if (pdata) {
if (pdata->flags & PXA_FLAG_CARD_PERMANENT) {
/* on-chip device */
host->quirks |= SDHCI_QUIRK_BROKEN_CARD_DETECTION;
host->mmc->caps |= MMC_CAP_NONREMOVABLE;
}
/* If slot design supports 8 bit data, indicate this to MMC. */
if (pdata->flags & PXA_FLAG_SD_8_BIT_CAPABLE_SLOT)
host->mmc->caps |= MMC_CAP_8_BIT_DATA;
if (pdata->quirks)
host->quirks |= pdata->quirks;
if (pdata->host_caps)
host->mmc->caps |= pdata->host_caps;
if (pdata->pm_caps)
host->mmc->pm_caps |= pdata->pm_caps;
}
host->ops = &pxav3_sdhci_ops;
ret = sdhci_add_host(host);
if (ret) {
dev_err(&pdev->dev, "failed to add host\n");
goto err_add_host;
}
platform_set_drvdata(pdev, host);
return 0;
err_add_host:
clk_disable(clk);
clk_put(clk);
err_clk_get:
sdhci_pltfm_free(pdev);
kfree(pxa);
return ret;
}
开发者ID:adis1313,项目名称:android_kernel_samsung_msm8974,代码行数:77,代码来源:sdhci-pxav3.c
示例10: tegra_camera_disable_csi
static int tegra_camera_disable_csi(struct tegra_camera_dev *dev)
{
clk_disable(dev->csi_clk);
return 0;
}
开发者ID:marcero,项目名称:android-tegra-nv-2.6.39-rel-14r7,代码行数:5,代码来源:tegra_camera.c
示例11: tegra_camera_disable_isp
static int tegra_camera_disable_isp(struct tegra_camera_dev *dev)
{
clk_disable(dev->isp_clk);
return 0;
}
开发者ID:marcero,项目名称:android-tegra-nv-2.6.39-rel-14r7,代码行数:5,代码来源:tegra_camera.c
示例12: sh_mobile_sdhi_probe
//.........这里部分代码省略.........
}
/*
* All SDHI blocks support 2-byte and larger block sizes in 4-bit
* bus width mode.
*/
mmc_data->flags |= TMIO_MMC_BLKSZ_2BYTES;
/*
* All SDHI blocks support SDIO IRQ signalling.
*/
mmc_data->flags |= TMIO_MMC_SDIO_IRQ;
ret = tmio_mmc_host_probe(&host, pdev, mmc_data);
if (ret < 0)
goto eprobe;
/*
* Allow one or more specific (named) ISRs or
* one or more multiplexed (un-named) ISRs.
*/
irq = platform_get_irq_byname(pdev, SH_MOBILE_SDHI_IRQ_CARD_DETECT);
if (irq >= 0) {
multiplexed_isr = false;
ret = request_irq(irq, tmio_mmc_card_detect_irq, 0,
dev_name(&pdev->dev), host);
if (ret)
goto eirq_card_detect;
}
irq = platform_get_irq_byname(pdev, SH_MOBILE_SDHI_IRQ_SDIO);
if (irq >= 0) {
multiplexed_isr = false;
ret = request_irq(irq, tmio_mmc_sdio_irq, 0,
dev_name(&pdev->dev), host);
if (ret)
goto eirq_sdio;
}
irq = platform_get_irq_byname(pdev, SH_MOBILE_SDHI_IRQ_SDCARD);
if (irq >= 0) {
multiplexed_isr = false;
ret = request_irq(irq, tmio_mmc_sdcard_irq, 0,
dev_name(&pdev->dev), host);
if (ret)
goto eirq_sdcard;
} else if (!multiplexed_isr) {
dev_err(&pdev->dev,
"Principal SD-card IRQ is missing among named interrupts\n");
ret = irq;
goto eirq_sdcard;
}
if (multiplexed_isr) {
while (1) {
irq = platform_get_irq(pdev, i);
if (irq < 0)
break;
i++;
ret = request_irq(irq, tmio_mmc_irq, 0,
dev_name(&pdev->dev), host);
if (ret)
goto eirq_multiplexed;
}
/* There must be at least one IRQ source */
if (!i)
goto eirq_multiplexed;
}
dev_info(&pdev->dev, "%s base at 0x%08lx clock rate %u MHz\n",
mmc_hostname(host->mmc), (unsigned long)
(platform_get_resource(pdev,IORESOURCE_MEM, 0)->start),
mmc_data->hclk / 1000000);
return ret;
eirq_multiplexed:
while (i--) {
irq = platform_get_irq(pdev, i);
free_irq(irq, host);
}
eirq_sdcard:
irq = platform_get_irq_byname(pdev, SH_MOBILE_SDHI_IRQ_SDIO);
if (irq >= 0)
free_irq(irq, host);
eirq_sdio:
irq = platform_get_irq_byname(pdev, SH_MOBILE_SDHI_IRQ_CARD_DETECT);
if (irq >= 0)
free_irq(irq, host);
eirq_card_detect:
tmio_mmc_host_remove(host);
eprobe:
clk_disable(priv->clk);
clk_put(priv->clk);
eclkget:
kfree(priv);
return ret;
}
开发者ID:33d,项目名称:linux-2.6.21-hh20,代码行数:101,代码来源:sh_mobile_sdhi.c
示例13: apollon_init_smc91x
static inline void __init apollon_init_smc91x(void)
{
unsigned long base;
unsigned int rate;
struct clk *gpmc_fck;
int eth_cs;
gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */
if (IS_ERR(gpmc_fck)) {
WARN_ON(1);
return;
}
clk_enable(gpmc_fck);
rate = clk_get_rate(gpmc_fck);
eth_cs = APOLLON_ETH_CS;
/* Make sure CS1 timings are correct */
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1, 0x00011200);
if (rate >= 160000000) {
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f01);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080803);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1c0b1c0a);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4);
} else if (rate >= 130000000) {
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4);
} else {/* rate = 100000000 */
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x031A1F1F);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000003C2);
}
if (gpmc_cs_request(APOLLON_ETH_CS, SZ_16M, &base) < 0) {
printk(KERN_ERR "Failed to request GPMC CS for smc91x\n");
goto out;
}
apollon_smc91x_resources[0].start = base + 0x300;
apollon_smc91x_resources[0].end = base + 0x30f;
udelay(100);
omap_cfg_reg(W4__24XX_GPIO74);
if (gpio_request(APOLLON_ETHR_GPIO_IRQ, "SMC91x irq") < 0) {
printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n",
APOLLON_ETHR_GPIO_IRQ);
gpmc_cs_free(APOLLON_ETH_CS);
goto out;
}
gpio_direction_input(APOLLON_ETHR_GPIO_IRQ);
out:
clk_disable(gpmc_fck);
clk_put(gpmc_fck);
}
开发者ID:AppEngine,项目名称:linux-2.6,代码行数:63,代码来源:board-apollon.c
示例14: mmc_omap_probe
//.........这里部分代码省略.........
res = request_mem_region(res->start, resource_size(res),
pdev->name);
if (res == NULL)
return -EBUSY;
host = kzalloc(sizeof(struct mmc_omap_host), GFP_KERNEL);
if (host == NULL) {
ret = -ENOMEM;
goto err_free_mem_region;
}
INIT_WORK(&host->slot_release_work, mmc_omap_slot_release_work);
INIT_WORK(&host->send_stop_work, mmc_omap_send_stop_work);
INIT_WORK(&host->cmd_abort_work, mmc_omap_abort_command);
setup_timer(&host->cmd_abort_timer, mmc_omap_cmd_timer,
(unsigned long) host);
spin_lock_init(&host->clk_lock);
setup_timer(&host->clk_timer, mmc_omap_clk_timer, (unsigned long) host);
spin_lock_init(&host->dma_lock);
setup_timer(&host->dma_timer, mmc_omap_dma_timer, (unsigned long) host);
spin_lock_init(&host->slot_lock);
init_waitqueue_head(&host->slot_wq);
host->pdata = pdata;
host->dev = &pdev->dev;
platform_set_drvdata(pdev, host);
host->id = pdev->id;
host->mem_res = res;
host->irq = irq;
host->use_dma = 1;
host->dev->dma_mask = &pdata->dma_mask;
host->dma_ch = -1;
host->irq = irq;
host->phys_base = host->mem_res->start;
host->virt_base = ioremap(res->start, resource_size(res));
if (!host->virt_base)
goto err_ioremap;
host->iclk = clk_get(&pdev->dev, "ick");
if (IS_ERR(host->iclk)) {
ret = PTR_ERR(host->iclk);
goto err_free_mmc_host;
}
clk_enable(host->iclk);
host->fclk = clk_get(&pdev->dev, "fck");
if (IS_ERR(host->fclk)) {
ret = PTR_ERR(host->fclk);
goto err_free_iclk;
}
ret = request_irq(host->irq, mmc_omap_irq, 0, DRIVER_NAME, host);
if (ret)
goto err_free_fclk;
if (pdata->init != NULL) {
ret = pdata->init(&pdev->dev);
if (ret < 0)
goto err_free_irq;
}
host->nr_slots = pdata->nr_slots;
for (i = 0; i < pdata->nr_slots; i++) {
ret = mmc_omap_new_slot(host, i);
if (ret < 0) {
while (--i >= 0)
mmc_omap_remove_slot(host->slots[i]);
goto err_plat_cleanup;
}
}
host->reg_shift = (cpu_is_omap7xx() ? 1 : 2);
return 0;
err_plat_cleanup:
if (pdata->cleanup)
pdata->cleanup(&pdev->dev);
err_free_irq:
free_irq(host->irq, host);
err_free_fclk:
clk_put(host->fclk);
err_free_iclk:
clk_disable(host->iclk);
clk_put(host->iclk);
err_free_mmc_host:
iounmap(host->virt_base);
err_ioremap:
kfree(host);
err_free_mem_region:
release_mem_region(res->start, resource_size(res));
return ret;
}
开发者ID:robacklin,项目名称:omap-android,代码行数:101,代码来源:omap.c
示例15: mx6q_sabrelite_sata_exit
static void mx6q_sabrelite_sata_exit(struct device *dev)
{
clk_disable(sata_clk);
clk_put(sata_clk);
}
开发者ID:rogrady,项目名称:lin_imx6,代码行数:5,代码来源:board-mx6q_sabrelite.c
示例16: hisik3_wdt_probe
static int __devinit hisik3_wdt_probe(struct platform_device *pdev)
{
int ret = 0;
struct resource *res;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (!res) {
ret = -ENOENT;
dev_warn(&pdev->dev, "WDT memory resource not defined\n");
goto err;
}
if (!request_mem_region(res->start, resource_size(res), pdev->name)) {
dev_warn(&pdev->dev, "WDT failed to get memory region resource\n");
ret = -ENOENT;
goto err;
}
wdt = kzalloc(sizeof(*wdt), GFP_KERNEL);
if (!wdt) {
dev_warn(&pdev->dev, "WDT kzalloc failed\n");
ret = -ENOMEM;
goto err_kzalloc;
}
wdt->clk = clk_get(NULL,"clk_wd");
if (IS_ERR(wdt->clk)) {
dev_warn(&pdev->dev, "WDT clock not found\n");
ret = PTR_ERR(wdt->clk);
goto err_clk_get;
}
wdt->base = ioremap(res->start, resource_size(res));
if (!wdt->base) {
ret = -ENOMEM;
dev_warn(&pdev->dev, "WDT ioremap fail\n");
goto err_ioremap;
}
spin_lock_init(&wdt->lock);
/* This checks if system booted after watchdog reset or not */
ret = clk_enable(wdt->clk);
if (ret) {
dev_warn(&pdev->dev, "clock enable fail");
goto err_clk_enable;
}
wdt->pdev = pdev;
wdt_default_init(DEFAULT_TIMEOUT);
wdt_default_config();
INIT_DELAYED_WORK(&wdt->k3_wdt_delayed_work, wdt_mond);
schedule_delayed_work(&wdt->k3_wdt_delayed_work, 0);
ret = misc_register(&hisik3_wdt_miscdev);
if (ret < 0) {
dev_warn(&pdev->dev, "WDT cannot register misc device\n");
goto err_misc_register;
}
wdt_enable();
dev_warn(&pdev->dev,"WDT probing has been finished\n");
return 0;
err_misc_register:
clk_disable(wdt->clk);
err_clk_enable:
iounmap(wdt->base);
err_ioremap:
clk_put(wdt->clk);
err_clk_get:
kfree(wdt);
wdt = NULL;
err_kzalloc:
release_mem_region(res->start, resource_size(res));
err:
dev_warn(&pdev->dev, "WDT probe failed!!!\n");
return ret;
}
开发者ID:printusrzero,项目名称:hwp6s-kernel,代码行数:80,代码来源:hisik3_wdt.c
示例17: omap2_mcspi_disable_clocks
static void omap2_mcspi_disable_clocks(struct omap2_mcspi *mcspi)
{
clk_disable(mcspi->ick);
clk_disable(mcspi->fck);
}
开发者ID:12rafael,项目名称:jellytimekernel,代码行数:5,代码来源:omap2_mcspi.c
示例18: dss_clks_disable
static void dss_clks_disable(void)
{
clk_disable(dss_ick);
clk_disable(dss_dss_fclk);
clk_disable(dss_sys_fclk);
}
开发者ID:deviljoe9900,项目名称:Dhollmen_Kernel,代码行数:6,代码来源:board-espresso10-display.c
示例19: ath79_wdt_remove
static int ath79_wdt_remove(struct platform_device *pdev)
{
misc_deregister(&ath79_wdt_miscdev);
clk_disable(wdt_clk);
return 0;
}
开发者ID:AICP,项目名称:kernel_moto_shamu,代码行数:6,代码来源:ath79_wdt.c
示例20: h4_init_debug
static inline void __init h4_init_debug(void)
{
int eth_cs;
unsigned long cs_mem_base;
unsigned int muxed, rate;
struct clk *gpmc_fck;
eth_cs = H4_SMC91X_CS;
gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */
if (IS_ERR(gpmc_fck)) {
WARN_ON(1);
return;
}
clk_enable(gpmc_fck);
rate = clk_get_rate(gpmc_fck);
clk_disable(gpmc_fck);
clk_put(gpmc_fck);
if (is_gpmc_muxed())
muxed = 0x200;
else
muxed = 0;
/* Make sure CS1 timings are correct */
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG1,
0x00011000 | muxed);
if (rate >= 160000000) {
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f01);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080803);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1c0b1c0a);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4);
} else if (rate >= 130000000) {
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x041f1F1F);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000004C4);
} else {/* rate = 100000000 */
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG2, 0x001f1f00);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG3, 0x00080802);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG4, 0x1C091C09);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG5, 0x031A1F1F);
gpmc_cs_write_reg(eth_cs, GPMC_CS_CONFIG6, 0x000003C2);
}
if (gpmc_cs_request(eth_cs, SZ_16M, &cs_mem_base) < 0) {
printk(KERN_ERR "Failed to request GPMC mem for smc91x\n");
goto out;
}
udelay(100);
omap_cfg_reg(M15_24XX_GPIO92);
if (debug_card_init(cs_mem_base, H4_ETHR_GPIO_IRQ) < 0)
gpmc_cs_free(eth_cs);
out:
clk_disable(gpmc_fck);
clk_put(gpmc_fck);
}
开发者ID:AdiPat,项目名称:i9003_Kernel,代码行数:64,代码来源:board-h4.c
注:本文中的clk_disable函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论