本文整理汇总了C++中pr_err函数的典型用法代码示例。如果您正苦于以下问题:C++ pr_err函数的具体用法?C++ pr_err怎么用?C++ pr_err使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pr_err函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: pn544_probe
static int pn544_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
int ret;
struct pn544_i2c_platform_data *platform_data;
struct pn544_dev *pn544_dev;
platform_data = client->dev.platform_data;
if (platform_data == NULL) {
pr_err("%s : nfc probe fail\n", __func__);
return -ENODEV;
}
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) {
pr_err("%s : need I2C_FUNC_I2C\n", __func__);
return -ENODEV;
}
ret = gpio_request(platform_data->irq_gpio, "nfc_int");
if (ret)
return -ENODEV;
ret = gpio_request(platform_data->ven_gpio, "nfc_ven");
if (ret)
goto err_ven;
if (platform_data->firm_gpio) {
ret = gpio_request(platform_data->firm_gpio, "nfc_firm");
if (ret)
goto err_firm;
}
pn544_dev = kzalloc(sizeof(*pn544_dev), GFP_KERNEL);
if (pn544_dev == NULL) {
dev_err(&client->dev,
"failed to allocate memory for module data\n");
ret = -ENOMEM;
goto err_exit;
}
pn544_dev->irq_gpio = platform_data->irq_gpio;
pn544_dev->ven_gpio = platform_data->ven_gpio;
pn544_dev->firm_gpio = platform_data->firm_gpio;
pn544_dev->client = client;
ret = gpio_direction_input(pn544_dev->irq_gpio);
if (ret < 0) {
pr_err("%s :not able to set irq_gpio as input\n", __func__);
goto err_ven;
}
ret = gpio_direction_output(pn544_dev->ven_gpio, 0);
if (ret < 0) {
pr_err("%s : not able to set ven_gpio as output\n", __func__);
goto err_firm;
}
if (platform_data->firm_gpio) {
ret = gpio_direction_output(pn544_dev->firm_gpio, 0);
if (ret < 0) {
pr_err("%s : not able to set firm_gpio as output\n",
__func__);
goto err_exit;
}
}
/* init mutex and queues */
init_waitqueue_head(&pn544_dev->read_wq);
mutex_init(&pn544_dev->read_mutex);
mutex_init(&pn544_dev->shutdown_mutex);
spin_lock_init(&pn544_dev->irq_enabled_lock);
pn544_dev->pn544_device.minor = MISC_DYNAMIC_MINOR;
pn544_dev->pn544_device.name = "pn544";
pn544_dev->pn544_device.fops = &pn544_dev_fops;
ret = misc_register(&pn544_dev->pn544_device);
if (ret) {
pr_err("%s : misc_register failed\n", __FILE__);
goto err_misc_register;
}
/* request irq. the irq is set whenever the chip has data available
* for reading. it is cleared when all data has been read.
*/
pr_info("%s : requesting IRQ %d\n", __func__, client->irq);
pn544_dev->irq_enabled = true;
ret = request_irq(client->irq, pn544_dev_irq_handler,
IRQF_TRIGGER_HIGH, client->name, pn544_dev);
if (ret) {
dev_err(&client->dev, "request_irq failed\n");
goto err_request_irq_failed;
}
pn544_disable_irq(pn544_dev);
i2c_set_clientdata(client, pn544_dev);
return 0;
err_request_irq_failed:
misc_deregister(&pn544_dev->pn544_device);
err_misc_register:
mutex_destroy(&pn544_dev->read_mutex);
mutex_destroy(&pn544_dev->shutdown_mutex);
//.........这里部分代码省略.........
开发者ID:0xroot,项目名称:Blackphone-BP1-Kernel,代码行数:101,代码来源:pn544.c
示例2: soc_compr_open_fe
static int soc_compr_open_fe(struct snd_compr_stream *cstream)
{
struct snd_soc_pcm_runtime *fe = cstream->private_data;
struct snd_pcm_substream *fe_substream = fe->pcm->streams[0].substream;
struct snd_soc_platform *platform = fe->platform;
struct snd_soc_dpcm *dpcm;
struct snd_soc_dapm_widget_list *list;
int stream;
int ret = 0;
if (cstream->direction == SND_COMPRESS_PLAYBACK)
stream = SNDRV_PCM_STREAM_PLAYBACK;
else
stream = SNDRV_PCM_STREAM_CAPTURE;
mutex_lock_nested(&fe->card->mutex, SND_SOC_CARD_CLASS_RUNTIME);
if (platform->driver->compr_ops && platform->driver->compr_ops->open) {
ret = platform->driver->compr_ops->open(cstream);
if (ret < 0) {
pr_err("compress asoc: can't open platform %s\n",
platform->component.name);
goto out;
}
}
if (fe->dai_link->compr_ops && fe->dai_link->compr_ops->startup) {
ret = fe->dai_link->compr_ops->startup(cstream);
if (ret < 0) {
pr_err("compress asoc: %s startup failed\n", fe->dai_link->name);
goto machine_err;
}
}
fe->dpcm[stream].runtime = fe_substream->runtime;
ret = dpcm_path_get(fe, stream, &list);
if (ret < 0)
goto fe_err;
else if (ret == 0)
dev_dbg(fe->dev, "ASoC: %s no valid %s route\n",
fe->dai_link->name, stream ? "capture" : "playback");
/* calculate valid and active FE <-> BE dpcms */
dpcm_process_paths(fe, stream, &list, 1);
fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_FE;
ret = dpcm_be_dai_startup(fe, stream);
if (ret < 0) {
/* clean up all links */
list_for_each_entry(dpcm, &fe->dpcm[stream].be_clients, list_be)
dpcm->state = SND_SOC_DPCM_LINK_STATE_FREE;
dpcm_be_disconnect(fe, stream);
fe->dpcm[stream].runtime = NULL;
goto fe_err;
}
dpcm_clear_pending_state(fe, stream);
dpcm_path_put(&list);
fe->dpcm[stream].state = SND_SOC_DPCM_STATE_OPEN;
fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_NO;
snd_soc_runtime_activate(fe, stream);
mutex_unlock(&fe->card->mutex);
return 0;
fe_err:
if (fe->dai_link->compr_ops && fe->dai_link->compr_ops->shutdown)
fe->dai_link->compr_ops->shutdown(cstream);
machine_err:
if (platform->driver->compr_ops && platform->driver->compr_ops->free)
platform->driver->compr_ops->free(cstream);
out:
fe->dpcm[stream].runtime_update = SND_SOC_DPCM_UPDATE_NO;
mutex_unlock(&fe->card->mutex);
return ret;
}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:82,代码来源:soc-compress.c
示例3: s5k5b3g_power_up
static int32_t s5k5b3g_power_up(struct msm_sensor_ctrl_t *s_ctrl)
{
int32_t rc;
struct device *dev = &s_ctrl->sensor_i2c_client->client->dev;
struct msm_camera_sensor_info *info = s_ctrl->sensordata;
if (!info->oem_data) {
pr_err("%s: oem data NULL in sensor info, aborting", __func__);
rc = -EINVAL;
goto power_up_done;
}
pr_debug("%s: R: %d, A: %d D: %d D_On %d MIPI %d\n",
__func__,
info->sensor_reset,
info->oem_data->sensor_avdd_en,
info->oem_data->sensor_dig_en,
info->oem_data->sensor_vdig_on_always,
info->oem_data->sensor_using_shared_mipi);
/* Request gpios */
rc = gpio_request(info->oem_data->sensor_avdd_en, "s5k5b3g");
if (rc < 0) {
pr_err("%s: gpio request sensor_avdd_en failed (%d)\n",
__func__, rc);
goto power_up_done;
}
rc = gpio_request(info->sensor_reset, "s5k5b3g");
if (rc < 0) {
pr_err("%s: gpio request sensor_reset failed (%d)\n",
__func__, rc);
goto abort0;
}
rc = gpio_request(info->oem_data->sensor_dig_en, "s5k5b3g");
if (rc < 0) {
pr_err("%s: gpio request sensor_dig_en failed (%d)\n",
__func__, rc);
goto abort1;
}
/* Set reset low */
gpio_direction_output(info->sensor_reset, 0);
/* Enable supplies */
rc = s5k5b3g_regulator_on(&cam_vio, dev, "cam_vio", 0);
if (rc < 0)
goto abort2;
if (info->oem_data->sensor_vdig_on_always == 0) {
rc = s5k5b3g_regulator_on(&cam_vdig, dev, "cam_vdig", 1200000);
if (rc < 0) {
pr_err("%s: cam_vdig is unable to turn on (%d)\n",
__func__, rc);
goto abort2;
}
}
if (info->oem_data->sensor_using_shared_mipi) {
rc = s5k5b3g_regulator_on(&cam_mipi_mux, dev, "cam_mipi_mux",
2800000);
if (rc < 0) {
pr_err("%s: cam_mipi_mux is unable to turn on (%d)\n",
__func__, rc);
goto abort2;
}
}
/* Wait for core supplies to power up */
usleep_range(10000, 15000);
/* Set dig_en high */
gpio_direction_output(info->oem_data->sensor_dig_en, 1);
/*Enable MCLK*/
cam_mot_8960_clk_info->clk_rate = s_ctrl->clk_rate;
rc = msm_cam_clk_enable(dev, cam_mot_8960_clk_info,
s_ctrl->cam_clk, ARRAY_SIZE(cam_mot_8960_clk_info), 1);
if (rc < 0) {
pr_err("%s: msm_cam_clk_enable failed (%d)\n",
__func__, rc);
goto abort2;
}
/* Set avdd_en high */
gpio_direction_output(info->oem_data->sensor_avdd_en, 1);
usleep_range(1000, 2000);
/* Set reset high */
gpio_direction_output(info->sensor_reset, 1);
usleep_range(1000, 2000);
goto power_up_done;
/* Cleanup, ignore errors during abort */
abort2:
gpio_free(info->oem_data->sensor_dig_en);
abort1:
gpio_free(info->sensor_reset);
//.........这里部分代码省略.........
开发者ID:gustavosss,项目名称:android_kernel_motorola_ghost,代码行数:101,代码来源:s5k5b3g_v4l2.c
示例4: soc_new_compress
/* create a new compress */
int soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
{
struct snd_soc_codec *codec = rtd->codec;
struct snd_soc_platform *platform = rtd->platform;
struct snd_soc_dai *codec_dai = rtd->codec_dai;
struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
struct snd_compr *compr;
struct snd_pcm *be_pcm;
char new_name[64];
int ret = 0, direction = 0;
if (rtd->num_codecs > 1) {
dev_err(rtd->card->dev, "Multicodec not supported for compressed stream\n");
return -EINVAL;
}
/* check client and interface hw capabilities */
snprintf(new_name, sizeof(new_name), "%s %s-%d",
rtd->dai_link->stream_name, codec_dai->name, num);
if (codec_dai->driver->playback.channels_min)
direction = SND_COMPRESS_PLAYBACK;
else if (codec_dai->driver->capture.channels_min)
direction = SND_COMPRESS_CAPTURE;
else
return -EINVAL;
compr = kzalloc(sizeof(*compr), GFP_KERNEL);
if (compr == NULL) {
snd_printk(KERN_ERR "Cannot allocate compr\n");
return -ENOMEM;
}
compr->ops = devm_kzalloc(rtd->card->dev, sizeof(soc_compr_ops),
GFP_KERNEL);
if (compr->ops == NULL) {
dev_err(rtd->card->dev, "Cannot allocate compressed ops\n");
ret = -ENOMEM;
goto compr_err;
}
if (rtd->dai_link->dynamic) {
snprintf(new_name, sizeof(new_name), "(%s)",
rtd->dai_link->stream_name);
ret = snd_pcm_new_internal(rtd->card->snd_card, new_name, num,
rtd->dai_link->dpcm_playback,
rtd->dai_link->dpcm_capture, &be_pcm);
if (ret < 0) {
dev_err(rtd->card->dev, "ASoC: can't create compressed for %s\n",
rtd->dai_link->name);
goto compr_err;
}
rtd->pcm = be_pcm;
rtd->fe_compr = 1;
if (rtd->dai_link->dpcm_playback)
be_pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream->private_data = rtd;
else if (rtd->dai_link->dpcm_capture)
be_pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream->private_data = rtd;
memcpy(compr->ops, &soc_compr_dyn_ops, sizeof(soc_compr_dyn_ops));
} else
memcpy(compr->ops, &soc_compr_ops, sizeof(soc_compr_ops));
/* Add copy callback for not memory mapped DSPs */
if (platform->driver->compr_ops && platform->driver->compr_ops->copy)
compr->ops->copy = soc_compr_copy;
mutex_init(&compr->lock);
ret = snd_compress_new(rtd->card->snd_card, num, direction, compr);
if (ret < 0) {
pr_err("compress asoc: can't create compress for codec %s\n",
codec->component.name);
goto compr_err;
}
/* DAPM dai link stream work */
INIT_DELAYED_WORK(&rtd->delayed_work, close_delayed_work);
rtd->compr = compr;
compr->private_data = rtd;
printk(KERN_INFO "compress asoc: %s <-> %s mapping ok\n", codec_dai->name,
cpu_dai->name);
return ret;
compr_err:
kfree(compr);
return ret;
}
开发者ID:P-D-A,项目名称:android_kernel_lge_mt6753,代码行数:91,代码来源:soc-compress.c
示例5: disable_smps_locally_set_pull_down
/*
* Set an SMPS regulator to be disabled in its CTRL register, but enabled
* in the master enable register. Also set it's pull down enable bit.
* Take care to make sure that the output voltage doesn't change if switching
* from advanced mode to legacy mode.
*/
static int disable_smps_locally_set_pull_down(u16 ctrl_addr, u16 test2_addr,
u16 master_enable_addr, u8 master_enable_bit)
{
int rc = 0;
u8 vref_sel, vlow_sel, band, vprog, bank, reg;
if (pmic_chip == NULL)
return -ENODEV;
bank = REGULATOR_BANK_SEL(7);
rc = ssbi_write(pmic_chip->dev, test2_addr, &bank, 1);
if (rc) {
pr_err("%s: FAIL ssbi_write(0x%03X): rc=%d\n", __func__,
test2_addr, rc);
goto done;
}
rc = ssbi_read(pmic_chip->dev, test2_addr, ®, 1);
if (rc) {
pr_err("%s: FAIL pm8058_read(0x%03X): rc=%d\n",
__func__, test2_addr, rc);
goto done;
}
/* Check if in advanced mode. */
if ((reg & SMPS_ADVANCED_MODE_MASK) == SMPS_ADVANCED_MODE) {
/* Determine current output voltage. */
rc = ssbi_read(pmic_chip->dev, ctrl_addr, ®, 1);
if (rc) {
pr_err("%s: FAIL pm8058_read(0x%03X): rc=%d\n",
__func__, ctrl_addr, rc);
goto done;
}
band = (reg & SMPS_ADVANCED_BAND_MASK)
>> SMPS_ADVANCED_BAND_SHIFT;
switch (band) {
case 3:
vref_sel = 0;
vlow_sel = 0;
break;
case 2:
vref_sel = SMPS_LEGACY_VREF_SEL;
vlow_sel = 0;
break;
case 1:
vref_sel = SMPS_LEGACY_VREF_SEL;
vlow_sel = SMPS_LEGACY_VLOW_SEL;
break;
default:
pr_err("%s: regulator already disabled\n", __func__);
return -EPERM;
}
vprog = (reg & SMPS_ADVANCED_VPROG_MASK);
/* Round up if fine step is in use. */
vprog = (vprog + 1) >> 1;
if (vprog > SMPS_LEGACY_VPROG_MASK)
vprog = SMPS_LEGACY_VPROG_MASK;
/* Set VLOW_SEL bit. */
bank = REGULATOR_BANK_SEL(1);
rc = ssbi_write(pmic_chip->dev, test2_addr, &bank, 1);
if (rc) {
pr_err("%s: FAIL ssbi_write(0x%03X): rc=%d\n",
__func__, test2_addr, rc);
goto done;
}
rc = pm8058_masked_write(test2_addr,
REGULATOR_BANK_WRITE | REGULATOR_BANK_SEL(1)
| vlow_sel,
REGULATOR_BANK_WRITE | REGULATOR_BANK_MASK
| SMPS_LEGACY_VLOW_SEL);
if (rc)
goto done;
/* Switch to legacy mode */
bank = REGULATOR_BANK_SEL(7);
rc = ssbi_write(pmic_chip->dev, test2_addr, &bank, 1);
if (rc) {
pr_err("%s: FAIL ssbi_write(0x%03X): rc=%d\n", __func__,
test2_addr, rc);
goto done;
}
rc = pm8058_masked_write(test2_addr,
REGULATOR_BANK_WRITE | REGULATOR_BANK_SEL(7)
| SMPS_LEGACY_MODE,
REGULATOR_BANK_WRITE | REGULATOR_BANK_MASK
| SMPS_ADVANCED_MODE_MASK);
if (rc)
goto done;
/* Enable locally, enable pull down, keep voltage the same. */
rc = pm8058_masked_write(ctrl_addr,
REGULATOR_ENABLE | REGULATOR_PULL_DOWN_EN
//.........这里部分代码省略.........
开发者ID:ryrzy,项目名称:android_kernel_htc_shooter_u_cm10,代码行数:101,代码来源:pmic8058.c
示例6: read_eeprom_memory
/**
* read_eeprom_memory() - read map data into buffer
* @e_ctrl: eeprom control struct
* @block: block to be read
*
* This function iterates through blocks stored in block->map, reads each
* region and concatenate them into the pre-allocated block->mapdata
*/
static int read_eeprom_memory(struct msm_eeprom_ctrl_t *e_ctrl,
struct msm_eeprom_memory_block_t *block)
{
int rc = 0;
int j;
struct msm_eeprom_memory_map_t *emap = block->map;
struct msm_eeprom_board_info *eb_info;
uint8_t *memptr = block->mapdata;
if (!e_ctrl) {
pr_err("%s e_ctrl is NULL", __func__);
return -EINVAL;
}
eb_info = e_ctrl->eboard_info;
for (j = 0; j < block->num_map; j++) {
if (emap[j].saddr.addr) {
eb_info->i2c_slaveaddr = emap[j].saddr.addr;
e_ctrl->i2c_client.cci_client->sid =
eb_info->i2c_slaveaddr >> 1;
pr_err("qcom,slave-addr = 0x%X\n",
eb_info->i2c_slaveaddr);
}
if (emap[j].page.valid_size) {
e_ctrl->i2c_client.addr_type = emap[j].page.addr_t;
rc = e_ctrl->i2c_client.i2c_func_tbl->i2c_write(
&(e_ctrl->i2c_client), emap[j].page.addr,
emap[j].page.data, emap[j].page.data_t);
msleep(emap[j].page.delay);
if (rc < 0) {
pr_err("%s: page write failed\n", __func__);
return rc;
}
}
if (emap[j].pageen.valid_size) {
e_ctrl->i2c_client.addr_type = emap[j].pageen.addr_t;
rc = e_ctrl->i2c_client.i2c_func_tbl->i2c_write(
&(e_ctrl->i2c_client), emap[j].pageen.addr,
emap[j].pageen.data, emap[j].pageen.data_t);
msleep(emap[j].pageen.delay);
if (rc < 0) {
pr_err("%s: page enable failed\n", __func__);
return rc;
}
}
if (emap[j].poll.valid_size) {
e_ctrl->i2c_client.addr_type = emap[j].poll.addr_t;
rc = e_ctrl->i2c_client.i2c_func_tbl->i2c_poll(
&(e_ctrl->i2c_client), emap[j].poll.addr,
emap[j].poll.data, emap[j].poll.data_t);
msleep(emap[j].poll.delay);
if (rc < 0) {
pr_err("%s: poll failed\n", __func__);
return rc;
}
}
if (emap[j].mem.valid_size) {
e_ctrl->i2c_client.addr_type = emap[j].mem.addr_t;
rc = e_ctrl->i2c_client.i2c_func_tbl->i2c_read_seq(
&(e_ctrl->i2c_client), emap[j].mem.addr,
memptr, emap[j].mem.valid_size);
if (rc < 0) {
pr_err("%s: read failed\n", __func__);
return rc;
}
memptr += emap[j].mem.valid_size;
}
if (emap[j].pageen.valid_size) {
e_ctrl->i2c_client.addr_type = emap[j].pageen.addr_t;
rc = e_ctrl->i2c_client.i2c_func_tbl->i2c_write(
&(e_ctrl->i2c_client), emap[j].pageen.addr,
0, emap[j].pageen.data_t);
if (rc < 0) {
pr_err("%s: page disable failed\n", __func__);
return rc;
}
}
}
开发者ID:bgtwoigu,项目名称:android_kernel_huawei_msm8909,代码行数:89,代码来源:msm_eeprom.c
示例7: ssp_probe
static int ssp_probe(struct spi_device *spi_dev)
{
int iRet = 0;
struct ssp_data *data;
struct ssp_platform_data *pdata;
if (poweroff_charging == 1 || recovery_mode == 1) {
pr_err("[SSP] probe exit : lpm %d recovery %d \n",
poweroff_charging, recovery_mode);
return -ENODEV;
}
data = kzalloc(sizeof(*data), GFP_KERNEL);
if (data == NULL) {
pr_err("[SSP]: %s - failed to allocate memory for data\n",
__func__);
iRet = -ENOMEM;
goto exit;
}
if (spi_dev->dev.of_node) {
iRet = ssp_parse_dt(&spi_dev->dev, data);
if (iRet) {
pr_err("[SSP]: %s - Failed to parse DT\n", __func__);
goto err_setup;
}
data->ssp_changes = SSP_MCU_L5; /* K330, MPU L5*/
} else {
pdata = spi_dev->dev.platform_data;
if (pdata == NULL) {
pr_err("[SSP]: %s - platform_data is null\n", __func__);
iRet = -ENOMEM;
goto err_setup;
}
data->wakeup_mcu = pdata->wakeup_mcu;
data->check_mcu_ready = pdata->check_mcu_ready;
data->check_mcu_busy = pdata->check_mcu_busy;
data->set_mcu_reset = pdata->set_mcu_reset;
data->read_chg = pdata->read_chg;
/* AP system_rev */
if (pdata->check_ap_rev)
data->ap_rev = pdata->check_ap_rev();
else
data->ap_rev = 0;
/* For changed devices */
if (pdata->check_changes)
data->ssp_changes = pdata->check_changes();
else
data->ssp_changes = SSP_MCU_L5; /* K330, MPU L5*/
/* Get sensor positions */
if (pdata->get_positions)
pdata->get_positions(&data->accel_position,
&data->mag_position);
else if (spi_dev->dev.of_node == NULL) {
data->accel_position = 0;
data->mag_position = 0;
}
}
spi_dev->mode = SPI_MODE_1;
if (spi_setup(spi_dev)) {
pr_err("failed to setup spi for ssp_spi\n");
goto err_setup;
}
data->bProbeIsDone = false;
data->fw_dl_state = FW_DL_STATE_NONE;
data->spi = spi_dev;
spi_set_drvdata(spi_dev, data);
#ifdef CONFIG_SENSORS_SSP_SHTC1
mutex_init(&data->cp_temp_adc_lock);
mutex_init(&data->bulk_temp_read_lock);
#endif
#ifdef CONFIG_SENSORS_SSP_STM
mutex_init(&data->comm_mutex);
mutex_init(&data->pending_mutex);
#endif
if (((data->wakeup_mcu == NULL)
|| (data->check_mcu_ready == NULL)
|| (data->check_mcu_busy == NULL)
|| (data->set_mcu_reset == NULL)
|| (data->read_chg == NULL))
&& (spi_dev->dev.of_node == NULL)) {
pr_err("[SSP]: %s - function callback is null\n", __func__);
iRet = -EIO;
goto err_reset_null;
}
pr_info("\n#####################################################\n");
INIT_DELAYED_WORK(&data->work_firmware, work_function_firmware_update);
wake_lock_init(&data->ssp_wake_lock,
WAKE_LOCK_SUSPEND, "ssp_wake_lock");
iRet = initialize_input_dev(data);
//.........这里部分代码省略.........
开发者ID:mikebarr007,项目名称:BeastMode-Kernel-N900P,代码行数:101,代码来源:ssp_dev.c
示例8: magnetic_get_selftest
static ssize_t magnetic_get_selftest(struct device *dev,
struct device_attribute *attr, char *buf)
{
char chTempBuf[22] = { 0, };
int iRet = 0;
s8 id = 0, x = 0, y1 = 0, y2 = 0, dir = 0;
s16 sx = 0, sy = 0, ohx = 0, ohy = 0, ohz = 0;
s8 err[7] = {-1, };
struct ssp_data *data = dev_get_drvdata(dev);
struct ssp_msg *msg = kzalloc(sizeof(*msg), GFP_KERNEL);
if (msg == NULL) {
pr_err("[SSP] %s, failed to alloc memory for ssp_msg\n", __func__);
goto exit;
}
msg->cmd = GEOMAGNETIC_FACTORY;
msg->length = 22;
msg->options = AP2HUB_READ;
msg->buffer = chTempBuf;
msg->free_buffer = 0;
iRet = ssp_spi_sync(data, msg, 1000);
if (iRet != SUCCESS) {
pr_err("[SSP]: %s - Magnetic Selftest Timeout!! %d\n", __func__, iRet);
goto exit;
}
id = (s8)(chTempBuf[0]);
err[0] = (s8)(chTempBuf[1]);
err[1] = (s8)(chTempBuf[2]);
err[2] = (s8)(chTempBuf[3]);
x = (s8)(chTempBuf[4]);
y1 = (s8)(chTempBuf[5]);
y2 = (s8)(chTempBuf[6]);
err[3] = (s8)(chTempBuf[7]);
dir = (s8)(chTempBuf[8]);
err[4] = (s8)(chTempBuf[9]);
ohx = (s16)((chTempBuf[10] << 8) + chTempBuf[11]);
ohy = (s16)((chTempBuf[12] << 8) + chTempBuf[13]);
ohz = (s16)((chTempBuf[14] << 8) + chTempBuf[15]);
err[6] = (s8)(chTempBuf[16]);
sx = (s16)((chTempBuf[17] << 8) + chTempBuf[18]);
sy = (s16)((chTempBuf[19] << 8) + chTempBuf[20]);
err[5] = (s8)(chTempBuf[21]);
if (unlikely(id != 0x2))
err[0] = -1;
if (unlikely(x < -30 || x > 30))
err[3] = -1;
if (unlikely(y1 < -30 || y1 > 30))
err[3] = -1;
if (unlikely(y2 < -30 || y2 > 30))
err[3] = -1;
if (unlikely(sx < 17 || sy < 22))
err[5] = -1;
if (unlikely(ohx < -600 || ohx > 600))
err[6] = -1;
if (unlikely(ohy < -600 || ohy > 600))
err[6] = -1;
if (unlikely(ohz < -600 || ohz > 600))
err[6] = -1;
pr_info("[SSP] %s\n"
"[SSP] Test1 - err = %d, id = %d\n"
"[SSP] Test3 - err = %d\n"
"[SSP] Test4 - err = %d, offset = %d,%d,%d\n"
"[SSP] Test5 - err = %d, direction = %d\n"
"[SSP] Test6 - err = %d, sensitivity = %d,%d\n"
"[SSP] Test7 - err = %d, offset = %d,%d,%d\n"
"[SSP] Test2 - err = %d\n",
__func__, err[0], id, err[2], err[3], x, y1, y2, err[4], dir,
err[5], sx, sy, err[6], ohx, ohy, ohz, err[1]);
exit:
return sprintf(buf,
"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
err[0], id, err[2], err[3], x, y1, y2, err[4], dir,
err[5], sx, sy, err[6], ohx, ohy, ohz, err[1]);
}
开发者ID:BigBot96,项目名称:android_kernel_samsung_gts2wifi,代码行数:80,代码来源:magnetic_yas532.c
示例9: omap_hsmmc_pdata_init
static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
struct omap_mmc_platform_data *mmc)
{
char *hc_name;
unsigned long max_freq, min_freq;
hc_name = kzalloc(sizeof(char) * (HSMMC_NAME_LEN + 1), GFP_KERNEL);
if (!hc_name) {
pr_err("Cannot allocate memory for controller slot name\n");
kfree(hc_name);
return -ENOMEM;
}
if (c->name)
strncpy(hc_name, c->name, HSMMC_NAME_LEN);
else
snprintf(hc_name, (HSMMC_NAME_LEN + 1), "mmc%islot%i",
c->mmc, 1);
mmc->slots[0].name = hc_name;
mmc->nr_slots = 1;
mmc->slots[0].caps = c->caps;
mmc->slots[0].pm_caps = c->pm_caps;
mmc->slots[0].internal_clock = !c->ext_clock;
mmc->dma_mask = 0xffffffff;
mmc->set_clk_src = omap_hsmmc_set_clks_src;
if (omap_hsmmc_max_min(c->mmc - 1, &max_freq, &min_freq)) {
pr_err("Invalid mmc slot");
kfree(hc_name);
return -EINVAL;
}
if (c->max_freq > 0)
mmc->max_freq = min(c->max_freq, max_freq);
else
mmc->max_freq = max_freq;
mmc->max_si_freq = max_freq;
mmc->min_freq = min_freq;
if (cpu_is_omap44xx())
mmc->reg_offset = OMAP4_MMC_REG_OFFSET;
else
mmc->reg_offset = 0;
//mmc->get_context_loss_count = hsmmc_get_context_loss;
mmc->slots[0].switch_pin = c->gpio_cd;
mmc->slots[0].gpio_wp = c->gpio_wp;
mmc->slots[0].remux = c->remux;
mmc->slots[0].init_card = c->init_card;
if (c->cover_only)
mmc->slots[0].cover = 1;
if (c->nonremovable)
mmc->slots[0].nonremovable = 1;
if (c->power_saving)
mmc->slots[0].power_saving = 1;
if (c->no_off)
mmc->slots[0].no_off = 1;
if (c->no_off_init)
mmc->slots[0].no_regulator_off_init = c->no_off_init;
if (c->vcc_aux_disable_is_sleep)
mmc->slots[0].vcc_aux_disable_is_sleep = 1;
/*
* NOTE: MMC slots should have a Vcc regulator set up.
* This may be from a TWL4030-family chip, another
* controllable regulator, or a fixed supply.
*
* temporary HACK: ocr_mask instead of fixed supply
*/
//if (cpu_is_omap3505() || cpu_is_omap3517())
//mmc->slots[0].ocr_mask = MMC_VDD_165_195 |
//MMC_VDD_26_27 |
//MMC_VDD_27_28 |
//MMC_VDD_29_30 |
//MMC_VDD_30_31 |
//MMC_VDD_31_32;
//else
mmc->slots[0].built_in = c->built_in;
if (cpu_is_omap44xx()) {
if (omap_rev() > OMAP4430_REV_ES1_0)
mmc->slots[0].features |= HSMMC_HAS_UPDATED_RESET;
if (c->mmc >= 3 && c->mmc <= 5)
mmc->slots[0].features |= HSMMC_HAS_48MHZ_MASTER_CLK;
}
//if (c->mmc_data) {
//memcpy(&mmc->slots[0].mmc_data, c->mmc_data,
//sizeof(struct mmc_platform_data));
//mmc->slots[0].card_detect =
//(mmc_card_detect_func)c->mmc_data->status;
//}
//.........这里部分代码省略.........
开发者ID:ReconInstruments,项目名称:jet_kernel,代码行数:101,代码来源:hsmmc.c
示例10: ssp_parse_dt
static int ssp_parse_dt(struct device *dev,
struct ssp_data *data)
{
struct device_node *np = dev->of_node;
enum of_gpio_flags flags;
int errorno = 0;
data->mcu_int1 = of_get_named_gpio_flags(np, "ssp,mcu_int1-gpio",
0, &flags);
if (data->mcu_int1 < 0) {
errorno = data->mcu_int1;
goto dt_exit;
}
data->mcu_int2 = of_get_named_gpio_flags(np, "ssp,mcu_int2-gpio",
0, &flags);
if (data->mcu_int2 < 0) {
errorno = data->mcu_int2;
goto dt_exit;
}
data->ap_int = of_get_named_gpio_flags(np, "ssp,ap_int-gpio",
0, &flags);
if (data->ap_int < 0) {
errorno = data->ap_int;
goto dt_exit;
}
data->rst = of_get_named_gpio_flags(np, "ssp,rst-gpio",
0, &flags);
if (data->rst < 0) {
errorno = data->rst ;
goto dt_exit;
}
if (of_property_read_u32(np, "ssp,acc-position", &data->accel_position))
data->accel_position = 0;
if (of_property_read_u32(np, "ssp,mag-position", &data->mag_position))
data->mag_position = 0;
if (of_property_read_u32(np, "ssp,sns-combination", &data->sns_combination))
data->sns_combination = 0;
if (of_property_read_u32(np, "ssp,ap-rev", &data->ap_rev))
data->ap_rev = 0;
if (of_property_read_u32(np, "ssp,rotation-direction", &data->rot_direction))
data->rot_direction = 0;
errorno = gpio_request(data->mcu_int1, "mpu_ap_int1");
if (errorno) {
printk(KERN_ERR "failed to request MCU_INT2 for SSP\n");
goto dt_exit;
}
errorno = gpio_direction_input(data->mcu_int1);
if (errorno) {
printk(KERN_ERR "failed to set mcu_int1 as input\n");
goto dt_exit;
}
errorno = gpio_request(data->mcu_int2, "MCU_INT2");
if (errorno) {
printk(KERN_ERR "failed to request MCU_INT2 for SSP\n");
goto dt_exit;
}
gpio_direction_input(data->mcu_int2);
errorno = gpio_request(data->ap_int, "AP_MCU_INT");
if (errorno) {
printk(KERN_ERR "failed to request AP_INT for SSP\n");
goto dt_exit;
}
gpio_direction_output(data->ap_int, 1);
errorno = gpio_request(data->rst, "MCU_RST");
if (errorno) {
printk(KERN_ERR "failed to request MCU_RST for SSP\n");
goto dt_exit;
}
gpio_direction_output(data->rst, 1);
data->reg_hub = devm_regulator_get(dev, "hub_vreg");
if (IS_ERR(data->reg_hub)) {
pr_err("[SSP] could not get hub_vreg, %ld\n",
PTR_ERR(data->reg_hub));
} else {
regulator_enable(data->reg_hub);
}
data->reg_sns= devm_regulator_get(dev, "psns_vreg");
if (IS_ERR(data->reg_hub)) {
pr_err("[SSP] could not get psns_vreg, %ld\n",
PTR_ERR(data->reg_sns));
} else {
regulator_enable(data->reg_sns);
}
dt_exit:
//.........这里部分代码省略.........
开发者ID:mikebarr007,项目名称:BeastMode-Kernel-N900P,代码行数:101,代码来源:ssp_dev.c
示例11: pn544_dev_read
static ssize_t pn544_dev_read(struct file *filp, char __user *buf,
size_t count, loff_t *offset)
{
struct pn544_dev *pn544_dev = filp->private_data;
char tmp[MAX_BUFFER_SIZE];
int ret;
if (count > MAX_BUFFER_SIZE)
count = MAX_BUFFER_SIZE;
pr_debug("%s : reading %zu bytes.\n", __func__, count);
mutex_lock(&pn544_dev->read_mutex);
if (pn544_dev && (pn544_dev->shutdown_complete == true)) {
pr_info(" %s : discarding read as " \
"NFC in shutdown state\n", __func__);
mutex_unlock(&pn544_dev->read_mutex);
return -ENODEV;
}
if (!gpio_get_value(pn544_dev->irq_gpio)) {
if (filp->f_flags & O_NONBLOCK) {
ret = -EAGAIN;
goto fail;
}
pn544_dev->irq_enabled = true;
enable_irq(pn544_dev->client->irq);
ret = wait_event_interruptible(pn544_dev->read_wq,
gpio_get_value(pn544_dev->irq_gpio));
pn544_disable_irq(pn544_dev);
if (ret)
goto fail;
}
/* Read data */
mutex_lock(&pn544_dev->shutdown_mutex);
ret = i2c_master_recv(pn544_dev->client, tmp, count);
mutex_unlock(&pn544_dev->shutdown_mutex);
mutex_unlock(&pn544_dev->read_mutex);
/* pn544 seems to be slow in handling I2C read requests
* so add 1ms delay after recv operation */
udelay(1000);
if (ret < 0) {
pr_err("%s: i2c_master_recv returned %d\n", __func__, ret);
return ret;
}
if (ret > count) {
pr_err("%s: received too many bytes from i2c (%d)\n",
__func__, ret);
return -EIO;
}
if (copy_to_user(buf, tmp, ret)) {
pr_warning("%s : failed to copy to user space\n", __func__);
return -EFAULT;
}
return ret;
fail:
mutex_unlock(&pn544_dev->read_mutex);
return ret;
}
开发者ID:0xroot,项目名称:Blackphone-BP1-Kernel,代码行数:69,代码来源:pn544.c
示例12: msm_8974_init_gpiomux
void __init msm_8974_init_gpiomux(void)
{
int rc;
rc = msm_gpiomux_init_dt();
if (rc) {
pr_err("%s failed %d\n", __func__, rc);
return;
}
#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
msm_gpiomux_install(msm_eth_configs, ARRAY_SIZE(msm_eth_configs));
#endif
msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs));
msm_gpiomux_install(msm_blsp2_uart7_configs,
ARRAY_SIZE(msm_blsp2_uart7_configs));
msm_gpiomux_install(wcnss_5wire_interface,
ARRAY_SIZE(wcnss_5wire_interface));
if (of_board_is_liquid())
msm_gpiomux_install_nowrite(ath_gpio_configs,
ARRAY_SIZE(ath_gpio_configs));
msm_gpiomux_install(msm8974_slimbus_config,
ARRAY_SIZE(msm8974_slimbus_config));
msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs));
msm_gpiomux_install(hap_lvl_shft_config,
ARRAY_SIZE(hap_lvl_shft_config));
msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs));
msm_gpiomux_install(&sd_card_det, 1);
if (machine_is_apq8074() && (of_board_is_liquid() || \
of_board_is_dragonboard()))
msm_gpiomux_sdc3_install();
msm_gpiomux_sdc4_install();
msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config));
msm_gpiomux_install(msm_hsic_configs, ARRAY_SIZE(msm_hsic_configs));
msm_gpiomux_install(msm_hsic_hub_configs,
ARRAY_SIZE(msm_hsic_hub_configs));
msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs));
if (of_board_is_fluid())
msm_gpiomux_install(msm_mhl_configs,
ARRAY_SIZE(msm_mhl_configs));
if (of_board_is_liquid())
msm_gpiomux_install(msm8974_pri_ter_auxpcm_configs,
ARRAY_SIZE(msm8974_pri_ter_auxpcm_configs));
else
msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs,
ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs));
msm_gpiomux_install(msm8974_sec_auxpcm_configs,
ARRAY_SIZE(msm8974_sec_auxpcm_configs));
msm_gpiomux_install_nowrite(msm_lcd_configs,
ARRAY_SIZE(msm_lcd_configs));
if (of_board_is_rumi())
msm_gpiomux_install(msm_rumi_blsp_configs,
ARRAY_SIZE(msm_rumi_blsp_configs));
if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM)
msm_gpiomux_install(mdm_configs,
ARRAY_SIZE(mdm_configs));
if (of_board_is_dragonboard() && machine_is_apq8074())
msm_gpiomux_install(apq8074_dragonboard_ts_config,
ARRAY_SIZE(apq8074_dragonboard_ts_config));
}
开发者ID:Dutchman1990,项目名称:kernel_lge_hammerhead,代码行数:74,代码来源:board-8974-gpiomux.c
注:本文中的pr_err函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论