@@ -360,6 +360,15 @@ static int ORANGEPI_PIN_MASK_5PLUS[5][32] = //[BANK] [INDEX]
360
360
{-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,},//GPIO4
361
361
};
362
362
363
+ static int ORANGEPI_PIN_MASK_AIMAX [5 ][32 ] = //[BANK] [INDEX]
364
+ {
365
+ {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 , 5 , 6 , 7 , 0 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,},//GPIO0
366
+ {-1 ,-1 , 2 , 3 , 4 ,-1 ,-1 , 7 , 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 , 6 , 7 ,},//GPIO1
367
+ {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,},//GPIO2
368
+ { 0 , 1 , 2 , 3 , 4 , 5 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 , 5 , 6 ,-1 , -1 , 1 , 2 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,},//GPIO3
369
+ {-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,},//GPIO4
370
+ };
371
+
363
372
static int ORANGEPI_PIN_MASK_900 [5 ][32 ] = //[BANK] [INDEX]
364
373
{
365
374
{-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 , -1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,-1 ,},//GPIO0
@@ -1134,6 +1143,29 @@ int pinToGpio_5PLUS[64] =
1134
1143
-1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 ,// ... 63
1135
1144
};
1136
1145
1146
+ int pinToGpio_AIMAX [64 ] =
1147
+ {
1148
+ 16 , 15 , // 0, 1
1149
+ 62 , 13 , // 2, 3
1150
+ 14 , 36 , // 4 5
1151
+ 97 , 39 , // 6, 7
1152
+ 40 , 109 , // 8, 9
1153
+ 110 , 42 , //10,11
1154
+ 41 , 34 , //12,13
1155
+ 43 , 44 , //14,15
1156
+ 45 , 47 , //16,17
1157
+ 46 , 63 , //18,19
1158
+ 96 , 35 , //20,21
1159
+ 114 , 98 , //22,23
1160
+ 101 ,113 , //24,25
1161
+ 100 , 99 , //26,27
1162
+ -1 , -1 , //28,29
1163
+ -1 , -1 , //30,31
1164
+
1165
+ -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , // ... 47
1166
+ -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 ,// ... 63
1167
+ };
1168
+
1137
1169
int pinToGpio_900 [64 ] =
1138
1170
{
1139
1171
34 , 35 , // 0, 1
@@ -1928,6 +1960,35 @@ int physToGpio_5PLUS[64] =
1928
1960
-1 , -1 , -1 , -1 , -1 , -1 , -1 , // ... 63
1929
1961
};
1930
1962
1963
+ int physToGpio_AIMAX [64 ] =
1964
+ {
1965
+ -1 , // 0
1966
+ -1 , -1 , // 1, 2
1967
+ 16 , -1 , // 3, 4
1968
+ 15 , -1 , // 5, 6
1969
+ 62 , 13 , // 7, 8
1970
+ -1 , 14 , // 9, 10
1971
+ 36 , 97 , // 11, 12
1972
+ 39 , -1 , // 13, 14
1973
+ 40 , 109 , // 15, 16
1974
+ -1 , 110 , // 17, 18
1975
+ 42 , -1 , // 19, 20
1976
+ 41 , 34 , // 21, 22
1977
+ 43 , 44 , // 23, 24
1978
+ -1 , 45 , // 25, 26
1979
+ 47 , 46 , // 27, 28
1980
+ 63 , -1 , // 29, 30
1981
+ 96 , 35 , // 31, 32
1982
+ 114 , -1 , // 33, 34
1983
+ 98 , 101 , // 35, 36
1984
+ 113 ,100 , // 37, 38
1985
+ -1 , 99 , // 39, 40
1986
+
1987
+ //Padding:
1988
+ -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , -1 , // ... 56
1989
+ -1 , -1 , -1 , -1 , -1 , -1 , -1 , // ... 63
1990
+ };
1991
+
1931
1992
int physToGpio_900 [64 ] =
1932
1993
{
1933
1994
-1 , // 0
@@ -2473,6 +2534,7 @@ void piBoardId (int * model)
2473
2534
else if (strncmp (revision , "orangepi5max." , 13 ) == 0 ) { * model = PI_MODEL_5_MAX ; }
2474
2535
else if (strncmp (revision , "orangepi5ultra." , 15 ) == 0 ) { * model = PI_MODEL_5_ULTRA ; }
2475
2536
else if (strncmp (revision , "orangepi5plus." , 14 ) == 0 ) { * model = PI_MODEL_5_PLUS ; }
2537
+ else if (strncmp (revision , "orangepiaimax." , 14 ) == 0 ) { * model = PI_MODEL_AI_MAX ; }
2476
2538
else if (strncmp (revision , "orangepi900." , 12 ) == 0 ) { * model = PI_MODEL_900 ; }
2477
2539
else if (strncmp (revision , "orangepicm5." , 12 ) == 0 ) { * model = PI_MODEL_CM5 ; }
2478
2540
else if (strncmp (revision , "orangepicm5-tablet." , 19 ) == 0 ) { * model = PI_MODEL_CM5_TABLET ; }
@@ -2718,6 +2780,7 @@ void orangepi_pwm_set_tone(int pin,int freq)
2718
2780
case PI_MODEL_5_MAX :
2719
2781
case PI_MODEL_5_ULTRA :
2720
2782
case PI_MODEL_5_PLUS :
2783
+ case PI_MODEL_AI_MAX :
2721
2784
2722
2785
rk3588_set_pwm_reg (pin , & rk3588_soc_info_t );
2723
2786
@@ -2945,6 +3008,7 @@ void orangepi_pwm_set_clk(int pin,int clk)
2945
3008
case PI_MODEL_5_MAX :
2946
3009
case PI_MODEL_5_ULTRA :
2947
3010
case PI_MODEL_5_PLUS :
3011
+ case PI_MODEL_AI_MAX :
2948
3012
2949
3013
if ((clk < 2 ) || (clk > 512 )) {
2950
3014
fprintf (stderr , "gpio: clock must be between 2 and 512\n" ) ;
@@ -3166,6 +3230,7 @@ void orangepi_pwm_set_period(int pin, unsigned int period_cys)
3166
3230
case PI_MODEL_5_MAX :
3167
3231
case PI_MODEL_5_ULTRA :
3168
3232
case PI_MODEL_5_PLUS :
3233
+ case PI_MODEL_AI_MAX :
3169
3234
3170
3235
rk3588_set_pwm_reg (pin , & rk3588_soc_info_t );
3171
3236
@@ -3329,6 +3394,7 @@ void orangepi_pwm_set_act(int pin, int act_cys)
3329
3394
case PI_MODEL_5_MAX :
3330
3395
case PI_MODEL_5_ULTRA :
3331
3396
case PI_MODEL_5_PLUS :
3397
+ case PI_MODEL_AI_MAX :
3332
3398
3333
3399
rk3588_set_pwm_reg (pin ,& rk3588_soc_info_t );
3334
3400
@@ -4778,6 +4844,11 @@ int wiringPiSetup (void)
4778
4844
physToGpio = physToGpio_5PLUS ;
4779
4845
ORANGEPI_PIN_MASK = ORANGEPI_PIN_MASK_5PLUS ;
4780
4846
break ;
4847
+ case PI_MODEL_AI_MAX :
4848
+ pinToGpio = pinToGpio_AIMAX ;
4849
+ physToGpio = physToGpio_AIMAX ;
4850
+ ORANGEPI_PIN_MASK = ORANGEPI_PIN_MASK_AIMAX ;
4851
+ break ;
4781
4852
case PI_MODEL_900 :
4782
4853
pinToGpio = pinToGpio_900 ;
4783
4854
physToGpio = physToGpio_900 ;
@@ -4903,6 +4974,7 @@ int wiringPiSetup (void)
4903
4974
case PI_MODEL_CM5 :
4904
4975
case PI_MODEL_CM5_TABLET :
4905
4976
case PI_MODEL_5_ULTRA :
4977
+ case PI_MODEL_AI_MAX :
4906
4978
4907
4979
/* GPIO Register */
4908
4980
rk3588_soc_info_t .gpio0_base = (uint32_t * )mmap (0 , BLOCK_SIZE , PROT_READ |PROT_WRITE , MAP_SHARED , fd , RK3588_GPIO0_BASE );
@@ -5316,6 +5388,7 @@ unsigned int readR(unsigned int addr)
5316
5388
case PI_MODEL_900 :
5317
5389
case PI_MODEL_CM5 :
5318
5390
case PI_MODEL_CM5_TABLET :
5391
+ case PI_MODEL_AI_MAX :
5319
5392
5320
5393
mmap_base = (addr & (0xfffff000 ));
5321
5394
mmap_seek = (addr - mmap_base );
@@ -5546,6 +5619,7 @@ void writeR(unsigned int val, unsigned int addr)
5546
5619
case PI_MODEL_900 :
5547
5620
case PI_MODEL_CM5 :
5548
5621
case PI_MODEL_CM5_TABLET :
5622
+ case PI_MODEL_AI_MAX :
5549
5623
5550
5624
mmap_base = (addr & (~0xfff ));
5551
5625
mmap_seek = (addr - mmap_base );
@@ -5795,6 +5869,7 @@ int orangepi_get_gpio_mode(int pin)
5795
5869
case PI_MODEL_900 :
5796
5870
case PI_MODEL_CM5 :
5797
5871
case PI_MODEL_CM5_TABLET :
5872
+ case PI_MODEL_AI_MAX :
5798
5873
5799
5874
rk3588_bus_ioc_phyaddr = RK3588_BUS_IOC_BASE + (0x20 * bank ) + ((index >> 2 ) << 2 );
5800
5875
if (bank == 0 ){
@@ -6298,6 +6373,7 @@ void rk3588_set_pwm_reg(int pin, rk3588_soc_info * rk3588_soc_info_ptr)
6298
6373
printf ("You can select wiringPi pin 0/2/5/13 for PWM pin.\n" );
6299
6374
break ;
6300
6375
case PI_MODEL_5_PLUS :
6376
+ case PI_MODEL_AI_MAX :
6301
6377
printf ("You can select wiringPi pin 0/1/2/6/9/10/13/17/20/21/22 for PWM pin.\n" );
6302
6378
break ;
6303
6379
case PI_MODEL_5 :
@@ -6372,6 +6448,7 @@ int orangepi_set_gpio_mode(int pin, int mode)
6372
6448
case PI_MODEL_900 :
6373
6449
case PI_MODEL_CM5 :
6374
6450
case PI_MODEL_CM5_TABLET :
6451
+ case PI_MODEL_AI_MAX :
6375
6452
6376
6453
rk3588_bus_ioc_phyaddr = RK3588_BUS_IOC_BASE + (0x20 * bank ) + ((index >> 2 ) << 2 );
6377
6454
if (bank == 0 ){
@@ -7393,6 +7470,7 @@ int orangepi_digitalWrite(int pin, int value)
7393
7470
case PI_MODEL_900 :
7394
7471
case PI_MODEL_CM5 :
7395
7472
case PI_MODEL_CM5_TABLET :
7473
+ case PI_MODEL_AI_MAX :
7396
7474
7397
7475
if (bank == 0 ){
7398
7476
dr_phyaddr = RK3588_GPIO0_BASE + RK3588_GPIO_SWPORT_DR_L_OFFSET + ((index / 16 ) << 2 );
@@ -7761,6 +7839,7 @@ int orangepi_digitalRead(int pin)
7761
7839
case PI_MODEL_900 :
7762
7840
case PI_MODEL_CM5 :
7763
7841
case PI_MODEL_CM5_TABLET :
7842
+ case PI_MODEL_AI_MAX :
7764
7843
7765
7844
if (bank == 0 )
7766
7845
phyaddr = RK3588_GPIO0_BASE + RK3588_GPIO_EXT_PORT_OFFSET ;
@@ -7895,6 +7974,7 @@ void OrangePi_set_gpio_pullUpDnControl (int pin, int pud)
7895
7974
case PI_MODEL_900 :
7896
7975
case PI_MODEL_CM5 :
7897
7976
case PI_MODEL_CM5_TABLET :
7977
+ case PI_MODEL_AI_MAX :
7898
7978
7899
7979
if (bank == 0 && index < 12 )
7900
7980
phyaddr = RK3588_PMU1_IOC_BASE + RK3588_PMU1_IOC_GPIO0A_P + ((index >> 3 ) << 2 );
0 commit comments