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