spmi_controller
static int spmi_read_cmd(struct spmi_controller *ctrl,
struct spmi_controller_dev *spmi_controller = dev_get_drvdata(&ctrl->dev);
u32 chnl_ofst = SPMI_CHANNEL_OFFSET * spmi_controller->channel;
spin_lock_irqsave(&spmi_controller->lock, flags);
writel(cmd, spmi_controller->base + chnl_ofst + SPMI_APB_SPMI_CMD_BASE_ADDR);
rc = spmi_controller_wait_for_done(&ctrl->dev, spmi_controller,
spmi_controller->base, slave_id, slave_addr);
data = readl(spmi_controller->base + chnl_ofst +
spin_unlock_irqrestore(&spmi_controller->lock, flags);
static int spmi_write_cmd(struct spmi_controller *ctrl,
struct spmi_controller_dev *spmi_controller = dev_get_drvdata(&ctrl->dev);
u32 chnl_ofst = SPMI_CHANNEL_OFFSET * spmi_controller->channel;
spin_lock_irqsave(&spmi_controller->lock, flags);
spmi_controller->base + chnl_ofst +
writel(cmd, spmi_controller->base + chnl_ofst + SPMI_APB_SPMI_CMD_BASE_ADDR);
rc = spmi_controller_wait_for_done(&ctrl->dev, spmi_controller,
spmi_controller->base, slave_id,
spin_unlock_irqrestore(&spmi_controller->lock, flags);
struct spmi_controller_dev *spmi_controller;
struct spmi_controller *ctrl;
ctrl = devm_spmi_controller_alloc(&pdev->dev, sizeof(*spmi_controller));
spmi_controller = spmi_controller_get_drvdata(ctrl);
spmi_controller->controller = ctrl;
spmi_controller->base = devm_ioremap(&pdev->dev, iores->start,
if (!spmi_controller->base) {
&spmi_controller->channel);
platform_set_drvdata(pdev, spmi_controller);
dev_set_drvdata(&ctrl->dev, spmi_controller);
spin_lock_init(&spmi_controller->lock);
struct spmi_controller *controller;
struct spmi_controller *ctrl;
static int apple_spmi_wait_rx_not_empty(struct spmi_controller *ctrl)
static int spmi_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
static int spmi_write_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
spmi_controller_put(*(struct spmi_controller **)res);
struct spmi_controller *devm_spmi_controller_alloc(struct device *parent, size_t size)
struct spmi_controller **ptr, *ctrl;
spmi_controller_remove(*(struct spmi_controller **)res);
int devm_spmi_controller_add(struct device *parent, struct spmi_controller *ctrl)
struct spmi_controller **ptr;
static inline struct pmif *to_mtk_pmif(struct spmi_controller *ctrl)
static int pmif_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid)
static int pmif_spmi_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
static int pmif_spmi_write_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
struct spmi_controller *ctrl;
struct spmi_controller *ctrl;
struct spmi_controller *spmic;
struct spmi_controller *ctrl;
int (*non_data_cmd)(struct spmi_controller *ctrl, u8 opc, u8 sid);
static int pmic_arb_wait_for_done(struct spmi_controller *ctrl,
pmic_arb_non_data_cmd_v1(struct spmi_controller *ctrl, u8 opc, u8 sid)
pmic_arb_non_data_cmd_v2(struct spmi_controller *ctrl, u8 opc, u8 sid)
static int pmic_arb_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid)
static int pmic_arb_read_cmd_unlocked(struct spmi_controller *ctrl, u32 cmd,
static int pmic_arb_read_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
static int pmic_arb_write_cmd_unlocked(struct spmi_controller *ctrl, u32 cmd,
static int pmic_arb_write_cmd(struct spmi_controller *ctrl, u8 opc, u8 sid,
static int pmic_arb_masked_write(struct spmi_controller *ctrl, u8 sid, u16 addr,
static inline int spmi_read_cmd(struct spmi_controller *ctrl, u8 opcode,
static inline int spmi_write_cmd(struct spmi_controller *ctrl, u8 opcode,
struct spmi_controller *ctrl = to_spmi_controller(dev);
struct spmi_device *spmi_device_alloc(struct spmi_controller *ctrl)
struct spmi_controller *spmi_controller_alloc(struct device *parent,
struct spmi_controller *ctrl;
static void of_spmi_register_devices(struct spmi_controller *ctrl)
int spmi_controller_add(struct spmi_controller *ctrl)
void spmi_controller_remove(struct spmi_controller *ctrl)
struct spmi_controller *ctrl = sdev->ctrl;
spmi_cmd(struct spmi_controller *ctrl, u8 opcode, u8 sid)
static inline void spmi_controller_set_drvdata(struct spmi_controller *ctrl,
struct spmi_controller *spmi_controller_alloc(struct device *parent,
static inline void spmi_controller_put(struct spmi_controller *ctrl)
int spmi_controller_add(struct spmi_controller *ctrl);
void spmi_controller_remove(struct spmi_controller *ctrl);
struct spmi_controller *devm_spmi_controller_alloc(struct device *parent, size_t size);
int devm_spmi_controller_add(struct device *parent, struct spmi_controller *ctrl);
struct spmi_controller *ctrl;
struct spmi_device *spmi_device_alloc(struct spmi_controller *ctrl);
int (*cmd)(struct spmi_controller *ctrl, u8 opcode, u8 sid);
int (*read_cmd)(struct spmi_controller *ctrl, u8 opcode,
int (*write_cmd)(struct spmi_controller *ctrl, u8 opcode,
static inline struct spmi_controller *to_spmi_controller(struct device *d)
return container_of(d, struct spmi_controller, dev);
void *spmi_controller_get_drvdata(const struct spmi_controller *ctrl)