Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pal.c
Go to the documentation of this file.
1 /*
2  * UWB PAL support.
3  *
4  * Copyright (C) 2008 Cambridge Silicon Radio Ltd.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License version
8  * 2 as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 #include <linux/kernel.h>
19 #include <linux/debugfs.h>
20 #include <linux/uwb.h>
21 #include <linux/export.h>
22 
23 #include "uwb-internal.h"
24 
29 void uwb_pal_init(struct uwb_pal *pal)
30 {
31  INIT_LIST_HEAD(&pal->node);
32 }
34 
42 {
43  struct uwb_rc *rc = pal->rc;
44  int ret;
45 
46  if (pal->device) {
47  ret = sysfs_create_link(&pal->device->kobj,
48  &rc->uwb_dev.dev.kobj, "uwb_rc");
49  if (ret < 0)
50  return ret;
51  ret = sysfs_create_link(&rc->uwb_dev.dev.kobj,
52  &pal->device->kobj, pal->name);
53  if (ret < 0) {
54  sysfs_remove_link(&pal->device->kobj, "uwb_rc");
55  return ret;
56  }
57  }
58 
60 
61  mutex_lock(&rc->uwb_dev.mutex);
62  list_add(&pal->node, &rc->pals);
63  mutex_unlock(&rc->uwb_dev.mutex);
64 
65  return 0;
66 }
68 
74 {
75  struct uwb_rc *rc = pal->rc;
76 
77  uwb_radio_stop(pal);
78 
79  mutex_lock(&rc->uwb_dev.mutex);
80  list_del(&pal->node);
81  mutex_unlock(&rc->uwb_dev.mutex);
82 
84 
85  if (pal->device) {
86  sysfs_remove_link(&rc->uwb_dev.dev.kobj, pal->name);
87  sysfs_remove_link(&pal->device->kobj, "uwb_rc");
88  }
89 }
91 
96 void uwb_rc_pal_init(struct uwb_rc *rc)
97 {
98  INIT_LIST_HEAD(&rc->pals);
99 }