FreeBSD kernel IICBUS device code
|
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/bus.h>
#include <sys/endian.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/rman.h>
#include <sys/sbuf.h>
#include <machine/resource.h>
#include <contrib/dev/acpica/include/acpi.h>
#include <contrib/dev/acpica/include/accommon.h>
#include <contrib/dev/acpica/include/amlcode.h>
#include <dev/acpica/acpivar.h>
#include <dev/iicbus/iiconf.h>
#include <dev/iicbus/iicbus.h>
Go to the source code of this file.
Data Structures | |
struct | gsb_buffer |
struct | acpi_iicbus_softc |
struct | acpi_iicbus_ivars |
Macros | |
#define | ACPI_IICBUS_LOCAL_BUFSIZE 32 /* Fits max SMBUS block size */ |
#define | ResourceSource_Handle ResourceSource.StringPtr |
#define | _COMPONENT ACPI_BUS |
#define | AML_FIELD_ATTRIB_MASK 0x0F |
#define | AML_FIELD_ATTRIO(attr, io) (((attr) << 16) | (io)) |
Typedefs | |
typedef ACPI_RESOURCE_I2C_SERIALBUS | ACPI_IICBUS_RESOURCE_I2C_SERIALBUS |
Functions | |
__FBSDID ("$FreeBSD$") | |
TUNABLE_INT ("hw.iicbus.enable_acpi_space_handler", &install_space_handler) | |
static bool | acpi_resource_is_i2c_serialbus (ACPI_RESOURCE *res) |
static int | acpi_iicbus_sendb (device_t dev, u_char slave, char byte) |
static int | acpi_iicbus_recvb (device_t dev, u_char slave, char *byte) |
static int | acpi_iicbus_write (device_t dev, u_char slave, char cmd, void *buf, uint16_t buflen) |
static int | acpi_iicbus_read (device_t dev, u_char slave, char cmd, void *buf, uint16_t buflen) |
static int | acpi_iicbus_bwrite (device_t dev, u_char slave, char cmd, u_char count, char *buf) |
static int | acpi_iicbus_bread (device_t dev, u_char slave, char cmd, u_char *count, char *buf) |
static ACPI_STATUS | acpi_iicbus_space_handler (UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext) |
static int | acpi_iicbus_install_address_space_handler (struct acpi_iicbus_softc *sc) |
static int | acpi_iicbus_remove_address_space_handler (struct acpi_iicbus_softc *sc) |
static ACPI_STATUS | acpi_iicbus_get_i2cres_cb (ACPI_RESOURCE *res, void *context) |
static ACPI_STATUS | acpi_iicbus_get_i2cres (ACPI_HANDLE handle, ACPI_RESOURCE_I2C_SERIALBUS *sb) |
static ACPI_STATUS | acpi_iicbus_parse_resources_cb (ACPI_RESOURCE *res, void *context) |
static ACPI_STATUS | acpi_iicbus_parse_resources (ACPI_HANDLE handle, device_t dev) |
static void | acpi_iicbus_dump_res (device_t dev, ACPI_IICBUS_RESOURCE_I2C_SERIALBUS *sb) |
static device_t | acpi_iicbus_add_child (device_t dev, u_int order, const char *name, int unit) |
static ACPI_STATUS | acpi_iicbus_enumerate_child (ACPI_HANDLE handle, UINT32 level, void *context, void **result) |
static ACPI_STATUS | acpi_iicbus_enumerate_children (device_t dev) |
static void | acpi_iicbus_set_power_children (device_t dev, int state, bool all_children) |
static int | acpi_iicbus_probe (device_t dev) |
static int | acpi_iicbus_attach (device_t dev) |
static int | acpi_iicbus_detach (device_t dev) |
static int | acpi_iicbus_suspend (device_t dev) |
static int | acpi_iicbus_resume (device_t dev) |
static void | acpi_iicbus_probe_nomatch (device_t bus, device_t child) |
static void | acpi_iicbus_driver_added (device_t dev, driver_t *driver) |
static void | acpi_iicbus_child_deleted (device_t bus, device_t child) |
static int | acpi_iicbus_read_ivar (device_t bus, device_t child, int which, uintptr_t *res) |
static int | acpi_iicbus_write_ivar (device_t bus, device_t child, int which, uintptr_t val) |
static int | acpi_iicbus_child_location (device_t bus, device_t child, struct sbuf *sb) |
static int | acpi_iicbus_child_pnpinfo (device_t bus, device_t child, struct sbuf *sb) |
DEFINE_CLASS_1 (iicbus, acpi_iicbus_driver, acpi_iicbus_methods, sizeof(struct acpi_iicbus_softc), iicbus_driver) | |
MODULE_VERSION (acpi_iicbus, 1) | |
MODULE_DEPEND (acpi_iicbus, acpi, 1, 1, 1) | |
Variables | |
struct gsb_buffer | __packed |
static int | install_space_handler = 0 |
static device_method_t | acpi_iicbus_methods [] |
#define _COMPONENT ACPI_BUS |
Definition at line 61 of file acpi_iicbus.c.
#define ACPI_IICBUS_LOCAL_BUFSIZE 32 /* Fits max SMBUS block size */ |
Definition at line 50 of file acpi_iicbus.c.
#define AML_FIELD_ATTRIB_MASK 0x0F |
#define AML_FIELD_ATTRIO | ( | attr, | |
io | |||
) | (((attr) << 16) | (io)) |
#define ResourceSource_Handle ResourceSource.StringPtr |
Definition at line 58 of file acpi_iicbus.c.
typedef ACPI_RESOURCE_I2C_SERIALBUS ACPI_IICBUS_RESOURCE_I2C_SERIALBUS |
Definition at line 57 of file acpi_iicbus.c.
__FBSDID | ( | "$FreeBSD$" | ) |
|
static |
Definition at line 452 of file acpi_iicbus.c.
References dev, and iicbus_add_child_common().
|
static |
Definition at line 582 of file acpi_iicbus.c.
References acpi_iicbus_enumerate_children(), acpi_iicbus_install_address_space_handler(), acpi_iicbus_set_power_children(), iicbus_softc::bus_freq, dev, iicbus_attach_common(), install_space_handler, acpi_iicbus_softc::space_handler_installed, and acpi_iicbus_softc::super_sc.
|
static |
Definition at line 173 of file acpi_iicbus.c.
References ACPI_IICBUS_LOCAL_BUFSIZE, iic_msg::buf, buf, dev, errno2iic(), IIC_M_NOSTART, IIC_M_NOSTOP, IIC_M_RD, IIC_M_WR, IIC_WAIT, iicbus_release_bus(), iicbus_request_bus(), iicbus_transfer(), iic_msg::len, len, msgs, and slave.
Referenced by acpi_iicbus_space_handler().
|
static |
Definition at line 158 of file acpi_iicbus.c.
References buf, bytes, dev, errno2iic(), IIC_M_NOSTART, IIC_M_NOSTOP, IIC_M_WR, iicbus_transfer(), msgs, and slave.
Referenced by acpi_iicbus_space_handler().
|
static |
Definition at line 669 of file acpi_iicbus.c.
References acpi_iicbus_ivars::handle.
|
static |
Definition at line 713 of file acpi_iicbus.c.
References acpi_iicbus_ivars::handle, and iicbus_child_location().
|
static |
Definition at line 732 of file acpi_iicbus.c.
References acpi_iicbus_ivars::handle, and iicbus_child_pnpinfo().
|
static |
Definition at line 600 of file acpi_iicbus.c.
References acpi_iicbus_remove_address_space_handler(), acpi_iicbus_set_power_children(), dev, iicbus_detach(), and acpi_iicbus_softc::space_handler_installed.
|
static |
Definition at line 648 of file acpi_iicbus.c.
References dev.
|
static |
Definition at line 438 of file acpi_iicbus.c.
References dev.
Referenced by acpi_iicbus_enumerate_child().
|
static |
Definition at line 460 of file acpi_iicbus.c.
References acpi_iicbus_dump_res(), acpi_iicbus_get_i2cres(), acpi_iicbus_parse_resources(), iicbus_softc::bus_freq, and iicbus.
Referenced by acpi_iicbus_enumerate_children().
|
static |
Definition at line 537 of file acpi_iicbus.c.
References acpi_iicbus_enumerate_child(), and dev.
Referenced by acpi_iicbus_attach().
|
static |
Definition at line 387 of file acpi_iicbus.c.
References acpi_iicbus_get_i2cres_cb().
Referenced by acpi_iicbus_enumerate_child().
|
static |
Definition at line 361 of file acpi_iicbus.c.
References acpi_resource_is_i2c_serialbus(), and gsb_buffer::status.
Referenced by acpi_iicbus_get_i2cres().
|
static |
Definition at line 325 of file acpi_iicbus.c.
References acpi_iicbus_space_handler(), iicbus_softc::dev, acpi_iicbus_softc::space_handler_info, and acpi_iicbus_softc::super_sc.
Referenced by acpi_iicbus_attach().
|
static |
Definition at line 430 of file acpi_iicbus.c.
References acpi_iicbus_parse_resources_cb(), and dev.
Referenced by acpi_iicbus_enumerate_child().
|
static |
Definition at line 395 of file acpi_iicbus.c.
References dev, and iicbus_ivar::rl.
Referenced by acpi_iicbus_parse_resources().
|
static |
Definition at line 561 of file acpi_iicbus.c.
References dev.
|
static |
Definition at line 637 of file acpi_iicbus.c.
References iicbus_probe_nomatch().
|
static |
Definition at line 134 of file acpi_iicbus.c.
References ACPI_IICBUS_LOCAL_BUFSIZE, iic_msg::buf, buf, dev, IIC_M_NOSTOP, IIC_M_RD, IIC_M_WR, iicbus_transfer(), msgs, and slave.
Referenced by acpi_iicbus_space_handler().
|
static |
Definition at line 678 of file acpi_iicbus.c.
References acpi_iicbus_ivars::handle, and iicbus_read_ivar().
|
static |
Definition at line 106 of file acpi_iicbus.c.
References buf, dev, IIC_M_RD, iicbus_transfer(), msgs, and slave.
Referenced by acpi_iicbus_space_handler().
|
static |
Definition at line 343 of file acpi_iicbus.c.
References acpi_iicbus_space_handler(), iicbus_softc::dev, and acpi_iicbus_softc::super_sc.
Referenced by acpi_iicbus_detach().
|
static |
Definition at line 624 of file acpi_iicbus.c.
References acpi_iicbus_set_power_children(), and dev.
|
static |
Definition at line 96 of file acpi_iicbus.c.
References dev, IIC_M_WR, iicbus_transfer(), msgs, and slave.
Referenced by acpi_iicbus_space_handler().
|
static |
Definition at line 545 of file acpi_iicbus.c.
References dev.
Referenced by acpi_iicbus_attach(), acpi_iicbus_detach(), acpi_iicbus_resume(), and acpi_iicbus_suspend().
|
static |
Definition at line 219 of file acpi_iicbus.c.
References acpi_iicbus_bread(), acpi_iicbus_bwrite(), acpi_iicbus_read(), acpi_iicbus_recvb(), acpi_iicbus_sendb(), acpi_iicbus_write(), acpi_resource_is_i2c_serialbus(), AML_FIELD_ATTRIB_MASK, AML_FIELD_ATTRIO, gsb_buffer::data, iicbus_softc::dev, dev, gsb_buffer::len, gsb_buffer::status, acpi_iicbus_softc::super_sc, and val.
Referenced by acpi_iicbus_install_address_space_handler(), and acpi_iicbus_remove_address_space_handler().
|
static |
Definition at line 612 of file acpi_iicbus.c.
References acpi_iicbus_set_power_children(), and dev.
|
static |
Definition at line 122 of file acpi_iicbus.c.
References buf, dev, IIC_M_NOSTART, IIC_M_NOSTOP, IIC_M_WR, iicbus_transfer(), msgs, and slave.
Referenced by acpi_iicbus_space_handler().
|
static |
Definition at line 694 of file acpi_iicbus.c.
References acpi_iicbus_ivars::handle, iicbus_write_ivar(), and val.
|
inlinestatic |
Definition at line 85 of file acpi_iicbus.c.
Referenced by acpi_iicbus_get_i2cres_cb(), and acpi_iicbus_space_handler().
DEFINE_CLASS_1 | ( | iicbus | , |
acpi_iicbus_driver | , | ||
acpi_iicbus_methods | , | ||
sizeof(struct acpi_iicbus_softc) | , | ||
iicbus_driver | |||
) |
MODULE_DEPEND | ( | acpi_iicbus | , |
acpi | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_VERSION | ( | acpi_iicbus | , |
1 | |||
) |
TUNABLE_INT | ( | "hw.iicbus.enable_acpi_space_handler" | , |
& | install_space_handler | ||
) |
struct gsb_buffer __packed |
|
static |
Definition at line 750 of file acpi_iicbus.c.
|
static |
Definition at line 81 of file acpi_iicbus.c.
Referenced by acpi_iicbus_attach().