Thread (1 message) 1 message, 1 author, 2008-09-12

Re: [RFC] acer-wmi: Add rfkill support for wireless and bluetooth (v4)

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2008-09-12 20:43:09
Also in: linux-acpi

Hi Carlos,

On Fri, Sep 12, 2008 at 08:44:26PM +0100, Carlos Corbacho wrote:
+
+static int acer_rfkill_register(struct device *dev, struct rfkill **rfkill_dev,
+enum rfkill_type type, char *name, u32 cap)
+{
+	int err;
+	u32 state;
+	u32 *data;
+
+	*rfkill_dev = rfkill_allocate(dev, type);
+	if (!*rfkill_dev)
+		return -ENOMEM;
+	(*rfkill_dev)->name = name;
+	get_u32(&state, cap);
+	(*rfkill_dev)->state = state ? RFKILL_STATE_UNBLOCKED :
+		RFKILL_STATE_SOFT_BLOCKED;
+	data = kzalloc(sizeof(u32), GFP_KERNEL);
+	if (!data) {
+		rfkill_free(*rfkill_dev);
+		return -ENOMEM;
+	}
+	*data = cap;
+	(*rfkill_dev)->data = data;
+	(*rfkill_dev)->toggle_radio = acer_rfkill_set;
+	(*rfkill_dev)->user_claim_unsupported = 1;
+
+	err = rfkill_register(*rfkill_dev);
+	if (err) {
+		kfree((*rfkill_dev)->data);
+		rfkill_free(*rfkill_dev);
+		return err;
+	}
+	return 0;
+}
+
Sorry if I am late to the party but this function is best to have
'struct rfkill *' return value and use ERR_PTR() to signal errors.

-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help