Add model soloSE & update kernel and drivers.
[vuplus_openvuplus] / meta-openvuplus / recipes-vuplus / usbtunerhelper / usbtunerhelper / no_usb_device.patch
1 diff --git a/usbtunerhelper.c b/usbtunerhelper.c
2 index 94519dc..93ae110 100644
3 --- a/usbtunerhelper.c
4 +++ b/usbtunerhelper.c
5 @@ -66,7 +66,6 @@ struct vtuner_message
6         } body;
7  };
8  
9 -#define SYS_USB_DEVICES_DIR "/sys/class/usb_device"
10  #define VTUNER_PATH "/dev/misc"
11  #define MAX_ADAPTERS 8
12  #define BUFFER_SIZE ((188 / 4) * 4096) /* multiple of ts packet and page size */
13 @@ -130,64 +129,42 @@ void sort_adapters()
14  
15  int scan_adapters()
16  {
17 -       DIR *dirusb, *dirdev, *dirvtun;
18 -       struct dirent *edirusb, *edirdev, *edirvtun;
19 +       char filename[256];
20         int i;
21 +       DIR *dirvtun;
22 +       struct dirent *edirvtun;
23  
24 -       /* adapters detect */
25 -       dirusb = opendir(SYS_USB_DEVICES_DIR);
26 -       if (!dirusb) return -1;
27 -
28 -       while ((edirusb = readdir(dirusb)) != NULL && adaptercount < MAX_ADAPTERS)
29 +       int nr = 1;
30 +       while(adaptercount < MAX_ADAPTERS)
31         {
32 -               char devdir[256];
33 -               if (edirusb->d_name[0] == '.') continue;
34 -
35 -               sprintf(devdir, "%s/%s/device/dvb", SYS_USB_DEVICES_DIR, edirusb->d_name);
36 -               dirdev = opendir(devdir);
37 -               if (!dirdev)
38 +               FILE *fd;
39 +               snprintf(filename, sizeof(filename), "/sys/class/dvb/dvb%d.frontend0/device/product", nr);
40 +               fd = fopen(filename, "r");
41 +               if (!fd)
42                 {
43 -                       sprintf(devdir, "%s/%s/device", SYS_USB_DEVICES_DIR, edirusb->d_name);
44 -                       dirdev = opendir(devdir);
45 -                       if (!dirdev) continue;
46 +                       snprintf(filename, sizeof(filename), "/sys/class/dvb/dvb%d.frontend0/device/manufacturer", nr);
47 +                       fd = fopen(filename, "r");
48                 }
49  
50 -               while ((edirdev = readdir(dirdev)) != NULL && adaptercount < MAX_ADAPTERS)
51 +               if (fd)
52                 {
53 -                       FILE *fd;
54 -                       char filename[256];
55 -                       int namelen = strlen(edirdev->d_name);
56 -
57 -                       if (namelen < 14) continue;
58 -                       if (strcmp(edirdev->d_name + (namelen - 9), "frontend0")) continue;
59 -
60 -                       sprintf(filename, "%s/%s/device/product", SYS_USB_DEVICES_DIR, edirusb->d_name);
61 -                       fd = fopen(filename, "r");
62 -                       if (!fd)
63 -                       {
64 -                               sprintf(filename, "%s/%s/device/manufacturer", SYS_USB_DEVICES_DIR, edirusb->d_name);
65 -                               fd = fopen(filename, "r");
66 -                       }
67 -
68 -                       if (fd)
69 -                       {
70 -                               char *tmp = adapters[adaptercount].name;
71 -                               fread(tmp, 63, 1, fd);
72 -                               tmp[63] = 0;
73 -                               while (strlen(tmp) > 0 && (tmp[strlen(tmp) - 1] == '\n' || tmp[strlen(tmp) - 1] == ' ')) tmp[strlen(tmp) - 1] = 0;
74 -                               fclose(fd);
75 -                       }
76 -                       else
77 -                       {
78 -                               strcpy(adapters[adaptercount].name, "unknown frontend");
79 -                       }
80 -
81 -                       adapters[adaptercount].index = edirdev->d_name[namelen - 11] - '0';
82 -                       adaptercount++;
83 +                       char *tmp = adapters[adaptercount].name;
84 +                       fread(tmp, 63, 1, fd);
85 +                       tmp[63] = 0;
86 +                       while (strlen(tmp) > 0 && (tmp[strlen(tmp) - 1] == '\n' || tmp[strlen(tmp) - 1] == ' ')) tmp[strlen(tmp) - 1] = 0;
87 +                       fclose(fd);
88 +               }
89 +               else
90 +               {
91 +                       strcpy(adapters[adaptercount].name, "unknown frontend");
92 +                       break;
93                 }
94 -               closedir(dirdev);
95 +
96 +               adapters[adaptercount].index = nr;
97 +               adaptercount++;
98 +               nr++;
99 +               
100         }
101 -       closedir(dirusb);
102  
103         dirvtun = opendir(VTUNER_PATH);
104         if (dirvtun)
105 @@ -200,7 +177,6 @@ int scan_adapters()
106                 closedir(dirvtun);
107         }
108  
109 -       sort_adapters();
110  
111         for (i = 0; i < adaptercount; i++)
112         {
113 @@ -216,6 +192,7 @@ int scan_adapters()
114                 }
115         }
116         return adaptercount;
117 +
118  }
119  
120