这篇教程C++ wm831x_reg_read函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中wm831x_reg_read函数的典型用法代码示例。如果您正苦于以下问题:C++ wm831x_reg_read函数的具体用法?C++ wm831x_reg_read怎么用?C++ wm831x_reg_read使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了wm831x_reg_read函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: wm831x_gpio_set_debouncestatic int wm831x_gpio_set_debounce(struct wm831x *wm831x, unsigned offset, unsigned debounce){ int reg = WM831X_GPIO1_CONTROL + offset; int ret, fn; ret = wm831x_reg_read(wm831x, reg); if (ret < 0) return ret; switch (ret & WM831X_GPN_FN_MASK) { case 0: case 1: break; default: /* Not in GPIO mode */ return -EBUSY; } if (debounce >= 32 && debounce <= 64) fn = 0; else if (debounce >= 4000 && debounce <= 8000) fn = 1; else return -EINVAL; return wm831x_set_bits(wm831x, reg, WM831X_GPN_FN_MASK, fn);}
开发者ID:AshishNamdev,项目名称:linux,代码行数:28,
示例2: wm831x_rtc_set_mmss/* * Set current time and date in RTC */static int wm831x_rtc_set_mmss(struct device *dev, unsigned long time){ struct wm831x_rtc *wm831x_rtc = dev_get_drvdata(dev); struct wm831x *wm831x = wm831x_rtc->wm831x; struct rtc_time new_tm; unsigned long new_time; int ret; int count = 0; ret = wm831x_reg_write(wm831x, WM831X_RTC_TIME_1, (time >> 16) & 0xffff); if (ret < 0) { dev_err(dev, "Failed to write TIME_1: %d/n", ret); return ret; } ret = wm831x_reg_write(wm831x, WM831X_RTC_TIME_2, time & 0xffff); if (ret < 0) { dev_err(dev, "Failed to write TIME_2: %d/n", ret); return ret; } /* Wait for the update to complete - should happen first time * round but be conservative. */ do { msleep(1); ret = wm831x_reg_read(wm831x, WM831X_RTC_CONTROL); if (ret < 0) ret = WM831X_RTC_SYNC_BUSY; } while (!(ret & WM831X_RTC_SYNC_BUSY) && ++count < WM831X_SET_TIME_RETRIES); if (ret & WM831X_RTC_SYNC_BUSY) { dev_err(dev, "Timed out writing RTC update/n"); return -EIO; } /* Check that the update was accepted; security features may * have caused the update to be ignored. */ ret = wm831x_rtc_readtime(dev, &new_tm); if (ret < 0) return ret; ret = rtc_tm_to_time(&new_tm, &new_time); if (ret < 0) { dev_err(dev, "Failed to convert time: %d/n", ret); return ret; } /* Allow a second of change in case of tick */ if (new_time - time > 1) { dev_err(dev, "RTC update not permitted by hardware/n"); return -EPERM; } return 0;}
开发者ID:020gzh,项目名称:linux,代码行数:63,
示例3: wm831x_rtc_readalarm/* * Read alarm time and date in RTC */static int wm831x_rtc_readalarm(struct device *dev, struct rtc_wkalrm *alrm){ struct wm831x_rtc *wm831x_rtc = dev_get_drvdata(dev); int ret; u16 data[2]; u32 time; ret = wm831x_bulk_read(wm831x_rtc->wm831x, WM831X_RTC_ALARM_1, 2, data); if (ret != 0) { dev_err(dev, "Failed to read alarm time: %d/n", ret); return ret; } time = (data[0] << 16) | data[1]; rtc_time_to_tm(time, &alrm->time); ret = wm831x_reg_read(wm831x_rtc->wm831x, WM831X_RTC_CONTROL); if (ret < 0) { dev_err(dev, "Failed to read RTC control: %d/n", ret); return ret; } if (ret & WM831X_RTC_ALM_ENA) alrm->enabled = 1; else alrm->enabled = 0; return 0;}
开发者ID:119-org,项目名称:hi3518-osdrv,代码行数:34,
示例4: wm831x_dcdc_get_modestatic unsigned int wm831x_dcdc_get_mode(struct regulator_dev *rdev){ struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); struct wm831x *wm831x = dcdc->wm831x; u16 reg = dcdc->base + WM831X_DCDC_ON_CONFIG; int val; val = wm831x_reg_read(wm831x, reg); if (val < 0) return val; val = (val & WM831X_DC1_ON_MODE_MASK) >> WM831X_DC1_ON_MODE_SHIFT; switch (val) { case WM831X_DCDC_MODE_FAST: return REGULATOR_MODE_FAST; case WM831X_DCDC_MODE_NORMAL: return REGULATOR_MODE_NORMAL; case WM831X_DCDC_MODE_STANDBY: return REGULATOR_MODE_STANDBY; case WM831X_DCDC_MODE_IDLE: return REGULATOR_MODE_IDLE; default: BUG(); return -EINVAL; }}
开发者ID:develersrl,项目名称:winmate-kernel,代码行数:28,
示例5: wm831x_pre_initstatic int wm831x_pre_init(struct wm831x *parm){ int ret; Wm831x = parm;// printk("%s/n", __func__); gpio_request(PMU_POWER_SLEEP, "NULL"); gpio_direction_output(PMU_POWER_SLEEP, GPIO_LOW); #ifdef CONFIG_WM8326_VBAT_LOW_DETECTION #ifdef CONFIG_BATTERY_RK30_VOL3V8 wm831x_set_bits(parm,WM831X_SYSVDD_CONTROL ,0xc077,0xc035); //pvdd power on dect vbat voltage printk("+++The vbat is too low+++/n"); #endif #endif ret = wm831x_reg_read(parm, WM831X_POWER_STATE) & 0xffff; wm831x_reg_write(parm, WM831X_POWER_STATE, (ret & 0xfff8) | 0x04); wm831x_set_bits(parm, WM831X_RTC_CONTROL, WM831X_RTC_ALAM_ENA_MASK, 0x0400);//enable rtc alam //BATT_FET_ENA = 1 wm831x_reg_write(parm, WM831X_SECURITY_KEY, 0x9716); // unlock security key wm831x_set_bits(parm, WM831X_RESET_CONTROL, 0x1003, 0x1001); ret = wm831x_reg_read(parm, WM831X_RESET_CONTROL) & 0xffff & UNLOCK_SECURITY_KEY; // enternal reset active in sleep// printk("%s:WM831X_RESET_CONTROL=0x%x/n", __func__, ret); wm831x_reg_write(parm, WM831X_RESET_CONTROL, ret); wm831x_set_bits(parm,WM831X_DC1_ON_CONFIG ,0x0300,0x0000); //set dcdc mode is FCCM wm831x_set_bits(parm,WM831X_DC2_ON_CONFIG ,0x0300,0x0000); wm831x_set_bits(parm,WM831X_DC3_ON_CONFIG ,0x0300,0x0000); wm831x_set_bits(parm,0x4066,0x0300,0x0000);#ifndef CONFIG_MACH_RK3066_SDK wm831x_set_bits(parm,WM831X_LDO10_CONTROL ,0x0040,0x0040);// set ldo10 in switch mode#endif wm831x_set_bits(parm,WM831X_STATUS_LED_1 ,0xc300,0xc100);// set led1 on(in manual mode) wm831x_set_bits(parm,WM831X_STATUS_LED_2 ,0xc300,0xc000);//set led2 off(in manual mode) wm831x_set_bits(parm,WM831X_LDO5_SLEEP_CONTROL ,0xe000,0x2000);// set ldo5 is disable in sleep mode wm831x_set_bits(parm,WM831X_LDO1_SLEEP_CONTROL ,0xe000,0x2000);// set ldo1 is disable in sleep mode wm831x_reg_write(parm, WM831X_SECURITY_KEY, LOCK_SECURITY_KEY); // lock security key return 0;}
开发者ID:AndrewDB,项目名称:rk3066-kernel,代码行数:44,
示例6: wm831x_dcdc_get_statusstatic int wm831x_dcdc_get_status(struct regulator_dev *rdev){ struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); struct wm831x *wm831x = dcdc->wm831x; int ret; /* First, check for errors */ ret = wm831x_reg_read(wm831x, WM831X_DCDC_UV_STATUS); if (ret < 0) return ret; if (ret & (1 << rdev_get_id(rdev))) { dev_dbg(wm831x->dev, "DCDC%d under voltage/n", rdev_get_id(rdev) + 1); return REGULATOR_STATUS_ERROR; } /* DCDC1 and DCDC2 can additionally detect high voltage/current */ if (rdev_get_id(rdev) < 2) { if (ret & (WM831X_DC1_OV_STS << rdev_get_id(rdev))) { dev_dbg(wm831x->dev, "DCDC%d over voltage/n", rdev_get_id(rdev) + 1); return REGULATOR_STATUS_ERROR; } if (ret & (WM831X_DC1_HC_STS << rdev_get_id(rdev))) { dev_dbg(wm831x->dev, "DCDC%d over current/n", rdev_get_id(rdev) + 1); return REGULATOR_STATUS_ERROR; } } /* Is the regulator on? */ ret = wm831x_reg_read(wm831x, WM831X_DCDC_STATUS); if (ret < 0) return ret; if (!(ret & (1 << rdev_get_id(rdev)))) return REGULATOR_STATUS_OFF; /* TODO: When we handle hardware control modes so we can report the * current mode. */ return REGULATOR_STATUS_ON;}
开发者ID:develersrl,项目名称:winmate-kernel,代码行数:43,
示例7: wm831x_rtc_set_mmssstatic int wm831x_rtc_set_mmss(struct device *dev, unsigned long time){ struct wm831x_rtc *wm831x_rtc = dev_get_drvdata(dev); struct wm831x *wm831x = wm831x_rtc->wm831x; struct rtc_time new_tm; unsigned long new_time; int ret; int count = 0; ret = wm831x_reg_write(wm831x, WM831X_RTC_TIME_1, (time >> 16) & 0xffff); if (ret < 0) { dev_err(dev, "Failed to write TIME_1: %d/n", ret); return ret; } ret = wm831x_reg_write(wm831x, WM831X_RTC_TIME_2, time & 0xffff); if (ret < 0) { dev_err(dev, "Failed to write TIME_2: %d/n", ret); return ret; } do { msleep(1); ret = wm831x_reg_read(wm831x, WM831X_RTC_CONTROL); if (ret < 0) ret = WM831X_RTC_SYNC_BUSY; } while (!(ret & WM831X_RTC_SYNC_BUSY) && ++count < WM831X_SET_TIME_RETRIES); if (ret & WM831X_RTC_SYNC_BUSY) { dev_err(dev, "Timed out writing RTC update/n"); return -EIO; } ret = wm831x_rtc_readtime(dev, &new_tm); if (ret < 0) return ret; ret = rtc_tm_to_time(&new_tm, &new_time); if (ret < 0) { dev_err(dev, "Failed to convert time: %d/n", ret); return ret; } if (new_time - time > 1) { dev_err(dev, "RTC update not permitted by hardware/n"); return -EPERM; } return 0;}
开发者ID:DirtyDroidX,项目名称:android_kernel_htc_m8ul,代码行数:54,
示例8: wm831x_rtc_probestatic int wm831x_rtc_probe(struct platform_device *pdev){ struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent); struct wm831x_rtc *wm831x_rtc; int per_irq = platform_get_irq_byname(pdev, "PER"); int alm_irq = platform_get_irq_byname(pdev, "ALM"); int ret = 0; wm831x_rtc = kzalloc(sizeof(*wm831x_rtc), GFP_KERNEL); if (wm831x_rtc == NULL) return -ENOMEM; platform_set_drvdata(pdev, wm831x_rtc); wm831x_rtc->wm831x = wm831x; ret = wm831x_reg_read(wm831x, WM831X_RTC_CONTROL); if (ret < 0) { dev_err(&pdev->dev, "Failed to read RTC control: %d/n", ret); goto err; } if (ret & WM831X_RTC_ALM_ENA) wm831x_rtc->alarm_enabled = 1; device_init_wakeup(&pdev->dev, 1); wm831x_rtc->rtc = rtc_device_register("wm831x", &pdev->dev, &wm831x_rtc_ops, THIS_MODULE); if (IS_ERR(wm831x_rtc->rtc)) { ret = PTR_ERR(wm831x_rtc->rtc); goto err; } ret = request_threaded_irq(per_irq, NULL, wm831x_per_irq, IRQF_TRIGGER_RISING, "RTC period", wm831x_rtc); if (ret != 0) { dev_err(&pdev->dev, "Failed to request periodic IRQ %d: %d/n", per_irq, ret); } ret = request_threaded_irq(alm_irq, NULL, wm831x_alm_irq, IRQF_TRIGGER_RISING, "RTC alarm", wm831x_rtc); if (ret != 0) { dev_err(&pdev->dev, "Failed to request alarm IRQ %d: %d/n", alm_irq, ret); } return 0;err: kfree(wm831x_rtc); return ret;}
开发者ID:119-org,项目名称:hi3518-osdrv,代码行数:54,
示例9: wm831x_buckp_get_voltage_selstatic int wm831x_buckp_get_voltage_sel(struct regulator_dev *rdev){ struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); struct wm831x *wm831x = dcdc->wm831x; u16 reg = dcdc->base + WM831X_DCDC_ON_CONFIG; int val; val = wm831x_reg_read(wm831x, reg); if (val < 0) return val; return val & WM831X_DC3_ON_VSEL_MASK;}
开发者ID:develersrl,项目名称:winmate-kernel,代码行数:13,
示例10: wm831x_buckv_get_current_limitstatic int wm831x_buckv_get_current_limit(struct regulator_dev *rdev){ struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); struct wm831x *wm831x = dcdc->wm831x; u16 reg = dcdc->base + WM831X_DCDC_CONTROL_2; int val; val = wm831x_reg_read(wm831x, reg); if (val < 0) return val; return wm831x_dcdc_ilim[val & WM831X_DC1_HC_THR_MASK];}
开发者ID:develersrl,项目名称:winmate-kernel,代码行数:13,
示例11: wm831x_pre_initstatic int wm831x_pre_init(struct wm831x *parm){ int ret; Wm831x = parm;// printk("%s/n", __func__); gpio_request(PMU_POWER_SLEEP, "NULL"); gpio_direction_output(PMU_POWER_SLEEP, GPIO_LOW); ret = wm831x_reg_read(parm, WM831X_POWER_STATE) & 0xffff; wm831x_reg_write(parm, WM831X_POWER_STATE, (ret & 0xfff8) | 0x04); wm831x_set_bits(parm, WM831X_RTC_CONTROL, WM831X_RTC_ALAM_ENA_MASK, 0x0400);//enable rtc alam //BATT_FET_ENA = 1 wm831x_reg_write(parm, WM831X_SECURITY_KEY, 0x9716); // unlock security key wm831x_set_bits(parm, WM831X_RESET_CONTROL, 0x1003, 0x1001); ret = wm831x_reg_read(parm, WM831X_RESET_CONTROL) & 0xffff & UNLOCK_SECURITY_KEY; // enternal reset active in sleep// printk("%s:WM831X_RESET_CONTROL=0x%x/n", __func__, ret); wm831x_reg_write(parm, WM831X_RESET_CONTROL, ret); wm831x_set_bits(parm,WM831X_DC1_ON_CONFIG ,0x0300,0x0000); //set dcdc mode is FCCM wm831x_set_bits(parm,WM831X_DC2_ON_CONFIG ,0x0300,0x0000); wm831x_set_bits(parm,WM831X_DC3_ON_CONFIG ,0x0300,0x0000); wm831x_set_bits(parm,0x4066,0x0300,0x0000);// wm831x_set_bits(parm,WM831X_LDO10_CONTROL ,0x0040,0x0040);// set ldo10 in switch mode wm831x_set_bits(parm,WM831X_STATUS_LED_1 ,0xc300,0xc100);// set led1 on(in manual mode) wm831x_set_bits(parm,WM831X_STATUS_LED_2 ,0xc300,0xc000);//set led2 off(in manual mode) wm831x_set_bits(parm,WM831X_LDO5_SLEEP_CONTROL ,0xe000,0x2000);// set ldo5 is disable in sleep mode wm831x_set_bits(parm,WM831X_LDO1_SLEEP_CONTROL ,0xe000,0x2000);// set ldo1 is disable in sleep mode wm831x_reg_write(parm, WM831X_SECURITY_KEY, LOCK_SECURITY_KEY); // lock security key return 0;}
开发者ID:AndrewDB,项目名称:rk3066-kernel,代码行数:36,
示例12: wm831x_alive_ldo_get_voltagestatic int wm831x_alive_ldo_get_voltage(struct regulator_dev *rdev){ struct wm831x_ldo *ldo = rdev_get_drvdata(rdev); struct wm831x *wm831x = ldo->wm831x; int reg = ldo->base + WM831X_ALIVE_LDO_ON_CONTROL; int ret; ret = wm831x_reg_read(wm831x, reg); if (ret < 0) return ret; ret &= WM831X_LDO11_ON_VSEL_MASK; return wm831x_alive_ldo_list_voltage(rdev, ret);}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:15,
示例13: wm831x_gp_ldo_get_modestatic unsigned int wm831x_gp_ldo_get_mode(struct regulator_dev *rdev){ struct wm831x_ldo *ldo = rdev_get_drvdata(rdev); struct wm831x *wm831x = ldo->wm831x; int ctrl_reg = ldo->base + WM831X_LDO_CONTROL; int on_reg = ldo->base + WM831X_LDO_ON_CONTROL; int ret; ret = wm831x_reg_read(wm831x, on_reg); if (ret < 0) return ret; if (!(ret & WM831X_LDO1_ON_MODE)) return REGULATOR_MODE_NORMAL; ret = wm831x_reg_read(wm831x, ctrl_reg); if (ret < 0) return ret; if (ret & WM831X_LDO1_LP_MODE) return REGULATOR_MODE_STANDBY; else return REGULATOR_MODE_IDLE;}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:24,
示例14: wm831x_gpio_getstatic int wm831x_gpio_get(struct gpio_chip *chip, unsigned offset){ struct wm831x_gpio *wm831x_gpio = gpiochip_get_data(chip); struct wm831x *wm831x = wm831x_gpio->wm831x; int ret; ret = wm831x_reg_read(wm831x, WM831X_GPIO_LEVEL); if (ret < 0) return ret; if (ret & 1 << offset) return 1; else return 0;}
开发者ID:EMFPGA,项目名称:linux_media,代码行数:15,
示例15: wm831x_rtc_probestatic int wm831x_rtc_probe(struct platform_device *pdev){ struct wm831x *wm831x = dev_get_drvdata(pdev->dev.parent); struct wm831x_rtc *wm831x_rtc; int alm_irq = wm831x_irq(wm831x, platform_get_irq_byname(pdev, "ALM")); int ret = 0; wm831x_rtc = devm_kzalloc(&pdev->dev, sizeof(*wm831x_rtc), GFP_KERNEL); if (wm831x_rtc == NULL) return -ENOMEM; platform_set_drvdata(pdev, wm831x_rtc); wm831x_rtc->wm831x = wm831x; ret = wm831x_reg_read(wm831x, WM831X_RTC_CONTROL); if (ret < 0) { dev_err(&pdev->dev, "Failed to read RTC control: %d/n", ret); return ret; } if (ret & WM831X_RTC_ALM_ENA) wm831x_rtc->alarm_enabled = 1; device_init_wakeup(&pdev->dev, 1); wm831x_rtc->rtc = devm_rtc_allocate_device(&pdev->dev); if (IS_ERR(wm831x_rtc->rtc)) return PTR_ERR(wm831x_rtc->rtc); wm831x_rtc->rtc->ops = &wm831x_rtc_ops; wm831x_rtc->rtc->range_max = U32_MAX; ret = rtc_register_device(wm831x_rtc->rtc); if (ret) return ret; ret = devm_request_threaded_irq(&pdev->dev, alm_irq, NULL, wm831x_alm_irq, IRQF_TRIGGER_RISING, "RTC alarm", wm831x_rtc); if (ret != 0) { dev_err(&pdev->dev, "Failed to request alarm IRQ %d: %d/n", alm_irq, ret); } wm831x_rtc_add_randomness(wm831x); return 0;}
开发者ID:avagin,项目名称:linux,代码行数:48,
示例16: wm831x_read_on_pin_statusstatic int wm831x_read_on_pin_status(struct wm831x_chg *wm831x_chg){ int ret; if(!wm831x_chg) { printk("err:%s:wm831x_chg address is 0/n",__FUNCTION__); return -1; } ret = wm831x_reg_read(wm831x_chg->wm831x, WM831X_ON_PIN_CONTROL); if (ret < 0) return ret; return !(ret & WM831X_ON_PIN_STS) ? 1 : 0;}
开发者ID:loyfan,项目名称:android-kernel-mediacom-mp810c,代码行数:16,
示例17: wm831x_ldo_is_enabledstatic int wm831x_ldo_is_enabled(struct regulator_dev *rdev){ struct wm831x_ldo *ldo = rdev_get_drvdata(rdev); struct wm831x *wm831x = ldo->wm831x; int mask = 1 << rdev_get_id(rdev); int reg; reg = wm831x_reg_read(wm831x, WM831X_LDO_ENABLE); if (reg < 0) return reg; if (reg & mask) return 1; else return 0;}
开发者ID:Core2idiot,项目名称:Kernel-Samsung-3.0...-,代码行数:16,
示例18: wm831x_alive_ldo_get_statusstatic int wm831x_alive_ldo_get_status(struct regulator_dev *rdev){ struct wm831x_ldo *ldo = rdev_get_drvdata(rdev); struct wm831x *wm831x = ldo->wm831x; int mask = 1 << rdev_get_id(rdev); int ret; /* Is the regulator on? */ ret = wm831x_reg_read(wm831x, WM831X_LDO_STATUS); if (ret < 0) return ret; if (ret & mask) return REGULATOR_STATUS_ON; else return REGULATOR_STATUS_OFF;}
开发者ID:3sOx,项目名称:asuswrt-merlin,代码行数:16,
示例19: wm831x_dcdc_is_enabledstatic int wm831x_dcdc_is_enabled(struct regulator_dev *rdev){ struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); struct wm831x *wm831x = dcdc->wm831x; int mask = 1 << rdev_get_id(rdev); int reg; reg = wm831x_reg_read(wm831x, WM831X_DCDC_ENABLE); if (reg < 0) return reg; if (reg & mask) return 1; else return 0;}
开发者ID:develersrl,项目名称:winmate-kernel,代码行数:16,
示例20: wm831x_read_on_pin_statusint wm831x_read_on_pin_status(void){ int ret; if(!g_wm831x_power) { printk("err:%s:g_wm831x_power address is 0/n",__FUNCTION__); return -1; } ret = wm831x_reg_read(g_wm831x_power->wm831x, WM831X_ON_PIN_CONTROL); if (ret < 0) return ret; return !(ret & WM831X_ON_PIN_STS) ? 1 : 0;}
开发者ID:AndrewDB,项目名称:rk3066-kernel,代码行数:16,
示例21: wm831x_power_check_onlinestatic int wm831x_power_check_online(struct wm831x *wm831x, int supply, union power_supply_propval *val){ int ret; ret = wm831x_reg_read(wm831x, WM831X_SYSTEM_STATUS); if (ret < 0) return ret; if (ret & supply) val->intval = 1; else val->intval = 0; return 0;}
开发者ID:AndrewDB,项目名称:rk3066-kernel,代码行数:16,
示例22: wm831x_isink_is_enabledstatic int wm831x_isink_is_enabled(struct regulator_dev *rdev){ struct wm831x_isink *isink = rdev_get_drvdata(rdev); struct wm831x *wm831x = isink->wm831x; int ret; ret = wm831x_reg_read(wm831x, isink->reg); if (ret < 0) return ret; if ((ret & (WM831X_CS1_ENA | WM831X_CS1_DRIVE)) == (WM831X_CS1_ENA | WM831X_CS1_DRIVE)) return 1; else return 0;}
开发者ID:DirtyDroidX,项目名称:android_kernel_htc_m8ul,代码行数:16,
示例23: wm831x_isink_get_currentstatic int wm831x_isink_get_current(struct regulator_dev *rdev){ struct wm831x_isink *isink = rdev_get_drvdata(rdev); struct wm831x *wm831x = isink->wm831x; int ret; ret = wm831x_reg_read(wm831x, isink->reg); if (ret < 0) return ret; ret &= WM831X_CS1_ISEL_MASK; if (ret > WM831X_ISINK_MAX_ISEL) ret = WM831X_ISINK_MAX_ISEL; return wm831x_isinkv_values[ret];}
开发者ID:DirtyDroidX,项目名称:android_kernel_htc_m8ul,代码行数:16,
示例24: wm831x_rtc_readtime/* * Read current time and date in RTC */static int wm831x_rtc_readtime(struct device *dev, struct rtc_time *tm){ struct wm831x_rtc *wm831x_rtc = dev_get_drvdata(dev); struct wm831x *wm831x = wm831x_rtc->wm831x; u16 time1[2], time2[2]; int ret; int count = 0; /* Has the RTC been programmed? */ ret = wm831x_reg_read(wm831x, WM831X_RTC_CONTROL); if (ret < 0) { dev_err(dev, "Failed to read RTC control: %d/n", ret); return ret; } if (!(ret & WM831X_RTC_VALID)) { dev_dbg(dev, "RTC not yet configured/n"); return -EINVAL; } /* Read twice to make sure we don't read a corrupt, partially * incremented, value. */ do { ret = wm831x_bulk_read(wm831x, WM831X_RTC_TIME_1, 2, time1); if (ret != 0) continue; ret = wm831x_bulk_read(wm831x, WM831X_RTC_TIME_1, 2, time2); if (ret != 0) continue; if (memcmp(time1, time2, sizeof(time1)) == 0) { u32 time = (time1[0] << 16) | time1[1]; rtc_time_to_tm(time, tm); return rtc_valid_tm(tm); } } while (++count < WM831X_GET_TIME_RETRIES); dev_err(dev, "Timed out reading current time/n"); return -EIO;}
开发者ID:020gzh,项目名称:linux,代码行数:49,
示例25: wm831x_low_power_detectionstatic int wm831x_low_power_detection(struct wm831x *wm831x){ wm831x_reg_write(wm831x,WM831X_AUXADC_CONTROL,0x803f); //open adc wm831x_reg_write(wm831x,WM831X_AUXADC_CONTROL,0xd03f); wm831x_reg_write(wm831x,WM831X_AUXADC_SOURCE,0x0001); wm831x_reg_write(wm831x,WM831X_COMPARATOR_CONTROL,0x0001); wm831x_reg_write(wm831x,WM831X_COMPARATOR_1,0x2910); //set the low power is 3.4v wm831x_reg_write(wm831x,WM831X_INTERRUPT_STATUS_1_MASK,0x99ee); wm831x_set_bits(wm831x,WM831X_SYSTEM_INTERRUPTS_MASK,0x0100,0x0000); if (wm831x_reg_read(wm831x,WM831X_AUXADC_DATA)< 0x1900){ printk("The vbat is too low./n"); wm831x_device_shutdown(wm831x); } return 0;}
开发者ID:AndrewDB,项目名称:rk3066-kernel,代码行数:17,
示例26: wm831x_buckv_read_voltagestatic int wm831x_buckv_read_voltage(struct regulator_dev *rdev){ int vol_read; int ret; struct wm831x_dcdc *dcdc = rdev_get_drvdata(rdev); struct wm831x *wm831x = dcdc->wm831x; int on_reg = dcdc->base + WM831X_DCDC_ON_CONFIG; ret = wm831x_reg_read(wm831x, on_reg); if (ret < 0) return ret; ret &= WM831X_DC1_ON_VSEL_MASK; vol_read = (ret-8)*12500 + 600000; return vol_read;}
开发者ID:Astralix,项目名称:rk29_kernel_308,代码行数:19,
示例27: wm831x_rtc_add_randomnessstatic void wm831x_rtc_add_randomness(struct wm831x *wm831x){ int ret; u16 reg; /* * The write counter contains a pseudo-random number which is * regenerated every time we set the RTC so it should be a * useful per-system source of entropy. */ ret = wm831x_reg_read(wm831x, WM831X_RTC_WRITE_COUNTER); if (ret >= 0) { reg = ret; add_device_randomness(®, sizeof(reg)); } else { dev_warn(wm831x->dev, "Failed to read RTC write counter: %d/n", ret); }}
开发者ID:020gzh,项目名称:linux,代码行数:19,
示例28: wm831x_bat_check_typestatic int wm831x_bat_check_type(struct wm831x *wm831x, int *type){ int ret;#ifdef WM831X_DEBUG_0 ret = wm831x_reg_read(wm831x, WM831X_POWER_STATE); if (ret < 0) return ret; WM_BATT_DBG("%s: wm831x power status %#x/n", __FUNCTION__, ret); ret = wm831x_reg_read(wm831x, WM831X_SYSTEM_STATUS); if (ret < 0) return ret; WM_BATT_DBG("%s: wm831x system status %#x/n", __FUNCTION__, ret); ret = wm831x_reg_read(wm831x, WM831X_CHARGER_CONTROL_1); if (ret < 0) return ret; WM_BATT_DBG("%s: wm831x charger control1 %#x/n", __FUNCTION__, ret); ret = wm831x_reg_read(wm831x, WM831X_CHARGER_CONTROL_2); if (ret < 0) return ret; WM_BATT_DBG("%s: wm831x charger control2 %#x/n", __FUNCTION__, ret); ret = wm831x_reg_read(wm831x, WM831X_CHARGER_STATUS); if (ret < 0) return ret; WM_BATT_DBG("%s: wm831x charger status %#x/n/n", __FUNCTION__, ret);#endif ret = wm831x_reg_read(wm831x, WM831X_CHARGER_STATUS); if (ret < 0) return ret; switch (ret & WM831X_CHG_STATE_MASK) { case WM831X_CHG_STATE_TRICKLE: case WM831X_CHG_STATE_TRICKLE_OT: *type = POWER_SUPPLY_CHARGE_TYPE_TRICKLE; break; case WM831X_CHG_STATE_FAST: case WM831X_CHG_STATE_FAST_OT: *type = POWER_SUPPLY_CHARGE_TYPE_FAST; break; default: *type = POWER_SUPPLY_CHARGE_TYPE_NONE; break; } return 0;}
开发者ID:AndrewDB,项目名称:rk3066-kernel,代码行数:50,
示例29: wm831x_wdt_pingstatic int wm831x_wdt_ping(struct watchdog_device *wdt_dev){ struct wm831x_wdt_drvdata *driver_data = watchdog_get_drvdata(wdt_dev); struct wm831x *wm831x = driver_data->wm831x; int ret; u16 reg; mutex_lock(&driver_data->lock); if (driver_data->update_gpio) { gpio_set_value_cansleep(driver_data->update_gpio, driver_data->update_state); driver_data->update_state = !driver_data->update_state; ret = 0; goto out; } reg = wm831x_reg_read(wm831x, WM831X_WATCHDOG); if (!(reg & WM831X_WDOG_RST_SRC)) { dev_err(wm831x->dev, "Hardware watchdog update unsupported/n"); ret = -EINVAL; goto out; } reg |= WM831X_WDOG_RESET; ret = wm831x_reg_unlock(wm831x); if (ret == 0) { ret = wm831x_reg_write(wm831x, WM831X_WATCHDOG, reg); wm831x_reg_lock(wm831x); } else { dev_err(wm831x->dev, "Failed to unlock security key: %d/n", ret); }out: mutex_unlock(&driver_data->lock); return ret;}
开发者ID:AD5GB,项目名称:kernel_n5_3.10-experimental,代码行数:41,
示例30: wm831x_read_chg_statusint wm831x_read_chg_status(void){ int ret, usb_chg = 0, wall_chg = 0; if(!g_wm831x_power) { printk("err:%s:g_wm831x_power address is 0/n",__FUNCTION__); return -1; } ret = wm831x_reg_read(g_wm831x_power->wm831x, WM831X_SYSTEM_STATUS); if (ret < 0) return ret; if (ret & WM831X_PWR_USB) usb_chg = 1; if (ret & WM831X_PWR_WALL) wall_chg = 1; return ((usb_chg | wall_chg) ? 1 : 0);}
开发者ID:AndrewDB,项目名称:rk3066-kernel,代码行数:21,
注:本文中的wm831x_reg_read函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ wm831x_set_bits函数代码示例 C++ wlog函数代码示例 |