Rev 1404 | Rev 5078 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1404 | Rev 2005 | ||
---|---|---|---|
1 | #include |
1 | #include |
2 | #include |
2 | #include |
3 | #include |
3 | #include |
4 | #include "radeon_drm.h" |
4 | #include "radeon_drm.h" |
5 | #include "radeon.h" |
5 | #include "radeon.h" |
6 | #include "radeon_object.h" |
6 | #include "radeon_object.h" |
7 | 7 | ||
- | 8 | extern int radeon_benchmarking; |
|
- | 9 | ||
8 | static int my_atoi(char **cmd) |
10 | static int my_atoi(char **cmd) |
9 | { |
11 | { |
10 | char* p = *cmd; |
12 | char* p = *cmd; |
11 | int val = 0; |
13 | int val = 0; |
12 | 14 | ||
13 | for (;; *p++) { |
15 | for (;; *p++) { |
14 | switch (*p) { |
16 | switch (*p) { |
15 | case '0' ... '9': |
17 | case '0' ... '9': |
16 | val = 10*val+(*p-'0'); |
18 | val = 10*val+(*p-'0'); |
17 | break; |
19 | break; |
18 | default: |
20 | default: |
19 | *cmd = p; |
21 | *cmd = p; |
20 | return val; |
22 | return val; |
21 | } |
23 | } |
22 | } |
24 | } |
23 | } |
25 | } |
24 | 26 | ||
25 | char* parse_mode(char *p, videomode_t *mode) |
27 | char* parse_mode(char *p, videomode_t *mode) |
26 | { |
28 | { |
27 | char c; |
29 | char c; |
28 | 30 | ||
29 | while( (c = *p++) == ' '); |
31 | while( (c = *p++) == ' '); |
30 | 32 | ||
31 | if( c ) |
33 | if( c ) |
32 | { |
34 | { |
33 | p--; |
35 | p--; |
34 | 36 | ||
35 | mode->width = my_atoi(&p); |
37 | mode->width = my_atoi(&p); |
36 | if(*p == 'x') p++; |
38 | if(*p == 'x') p++; |
37 | 39 | ||
38 | mode->height = my_atoi(&p); |
40 | mode->height = my_atoi(&p); |
39 | if(*p == 'x') p++; |
41 | if(*p == 'x') p++; |
40 | 42 | ||
41 | mode->bpp = 32; |
43 | mode->bpp = 32; |
42 | 44 | ||
43 | mode->freq = my_atoi(&p); |
45 | mode->freq = my_atoi(&p); |
44 | 46 | ||
45 | if( mode->freq == 0 ) |
47 | if( mode->freq == 0 ) |
46 | mode->freq = 60; |
48 | mode->freq = 60; |
47 | } |
49 | } |
48 | 50 | ||
49 | return p; |
51 | return p; |
50 | }; |
52 | }; |
51 | 53 | ||
52 | char* parse_path(char *p, char *log) |
54 | char* parse_path(char *p, char *log) |
53 | { |
55 | { |
54 | char c; |
56 | char c; |
55 | 57 | ||
56 | while( (c = *p++) == ' '); |
58 | while( (c = *p++) == ' '); |
57 | p--; |
59 | p--; |
58 | while( (c = *log++ = *p++) && (c != ' ')); |
60 | while( (c = *log++ = *p++) && (c != ' ')); |
59 | *log = 0; |
61 | *log = 0; |
60 | 62 | ||
61 | return p; |
63 | return p; |
62 | }; |
64 | }; |
63 | 65 | ||
64 | void parse_cmdline(char *cmdline, videomode_t *mode, char *log, int *kms) |
66 | void parse_cmdline(char *cmdline, videomode_t *mode, char *log, int *kms) |
65 | { |
67 | { |
66 | char *p = cmdline; |
68 | char *p = cmdline; |
67 | 69 | ||
68 | char c = *p++; |
70 | char c = *p++; |
69 | 71 | ||
70 | while( c ) |
72 | while( c ) |
71 | { |
73 | { |
72 | if( c == '-') |
74 | if( c == '-') |
73 | { |
75 | { |
74 | switch(*p++) |
76 | switch(*p++) |
75 | { |
77 | { |
76 | case 'm': |
78 | case 'b': |
77 | p = parse_mode(p, mode); |
79 | radeon_benchmarking = 1; |
78 | break; |
80 | break; |
79 | 81 | ||
80 | case 'l': |
82 | case 'l': |
81 | p = parse_path(p, log); |
83 | p = parse_path(p, log); |
82 | break; |
84 | break; |
83 | 85 | ||
- | 86 | case 'm': |
|
- | 87 | p = parse_mode(p, mode); |
|
- | 88 | break; |
|
- | 89 | ||
84 | case 'n': |
90 | case 'n': |
85 | *kms = 0; |
91 | *kms = 0; |
86 | }; |
92 | }; |
87 | }; |
93 | }; |
88 | c = *p++; |
94 | c = *p++; |
89 | }; |
95 | }; |
90 | }; |
96 | }; |