Lines Matching defs:state

17  * struct qcom_smem_state - state context
18 * @refcount: refcount for the state
19 * @orphan: boolean indicator that this state has been unregistered
21 * @of_node: of_node to use for matching the state in DT
23 * @ops: ops for the state
38 * qcom_smem_state_update_bits() - update the masked bits in state with value
39 * @state: state handle acquired by calling qcom_smem_state_get()
45 int qcom_smem_state_update_bits(struct qcom_smem_state *state,
49 if (state->orphan)
52 if (!state->ops.update_bits)
55 return state->ops.update_bits(state->priv, mask, value);
61 struct qcom_smem_state *state;
65 list_for_each_entry(state, &smem_states, list) {
66 if (state->of_node == np) {
67 kref_get(&state->refcount);
71 state = ERR_PTR(-EPROBE_DEFER);
76 return state;
80 * qcom_smem_state_get() - acquire handle to a state
82 * @con_id: name of the state to lookup
83 * @bit: flags from the state reference, indicating which bit's affected
85 * Returns handle to the state, or ERR_PTR(). qcom_smem_state_put() must be
86 * called to release the returned state handle.
92 struct qcom_smem_state *state;
99 "qcom,smem-state-names",
102 dev_err(dev, "missing qcom,smem-state-names\n");
109 "#qcom,smem-state-cells",
118 dev_err(dev, "invalid #qcom,smem-state-cells\n");
122 state = of_node_to_state(args.np);
123 if (IS_ERR(state))
130 return state;
136 struct qcom_smem_state *state = container_of(ref, struct qcom_smem_state, refcount);
138 list_del(&state->list);
139 of_node_put(state->of_node);
140 kfree(state);
144 * qcom_smem_state_put() - release state handle
145 * @state: state handle to be released
147 void qcom_smem_state_put(struct qcom_smem_state *state)
150 kref_put(&state->refcount, qcom_smem_state_release);
156 * qcom_smem_state_register() - register a new state
165 struct qcom_smem_state *state;
167 state = kzalloc(sizeof(*state), GFP_KERNEL);
168 if (!state)
171 kref_init(&state->refcount);
173 state->of_node = of_node_get(of_node);
174 state->ops = *ops;
175 state->priv = priv;
178 list_add(&state->list, &smem_states);
181 return state;
186 * qcom_smem_state_unregister() - unregister a registered state
187 * @state: state handle to be unregistered
189 void qcom_smem_state_unregister(struct qcom_smem_state *state)
191 state->orphan = true;
192 qcom_smem_state_put(state);