brintos

brintos / linux-shallow public Read only

0
0
Text · 959 B · 45774aa Raw
45 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Intel BayTrail PMIC I2C bus semaphore implementation4 * Copyright (c) 2014, Intel Corporation.5 */6#include <linux/device.h>7#include <linux/acpi.h>8#include <linux/i2c.h>9#include <linux/interrupt.h>10 11#include <asm/iosf_mbi.h>12 13#include "i2c-designware-core.h"14 15int i2c_dw_baytrail_probe_lock_support(struct dw_i2c_dev *dev)16{17	acpi_status status;18	unsigned long long shared_host = 0;19	acpi_handle handle;20 21	if (!dev)22		return -ENODEV;23 24	handle = ACPI_HANDLE(dev->dev);25	if (!handle)26		return -ENODEV;27 28	status = acpi_evaluate_integer(handle, "_SEM", NULL, &shared_host);29	if (ACPI_FAILURE(status))30		return -ENODEV;31 32	if (!shared_host)33		return -ENODEV;34 35	if (!iosf_mbi_available())36		return -EPROBE_DEFER;37 38	dev_info(dev->dev, "I2C bus managed by PUNIT\n");39	dev->acquire_lock = iosf_mbi_block_punit_i2c_access;40	dev->release_lock = iosf_mbi_unblock_punit_i2c_access;41	dev->shared_with_punit = true;42 43	return 0;44}45