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

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

51自学网 2021-06-03 10:00:54
  C++
这篇教程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_debounce

static 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_mode

static 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_init

static 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_status

static 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_mmss

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;	}	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_probe

static 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_sel

static 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_limit

static 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_init

static 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_voltage

static 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_mode

static 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_get

static 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_probe

static 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_status

static 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_enabled

static 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_status

static 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_enabled

static 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_status

int 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_online

static 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_enabled

static 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_current

static 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_detection

static 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_voltage

static 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_randomness

static 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(&reg, sizeof(reg));	} else {		dev_warn(wm831x->dev, "Failed to read RTC write counter: %d/n",			 ret);	}}
开发者ID:020gzh,项目名称:linux,代码行数:19,


示例28: wm831x_bat_check_type

static 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_ping

static 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_status

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