Skip to content

Commit ae0f60c

Browse files
authored
Merge pull request #69 from microbrewer/master
Add support for Rpi0 W.
2 parents 7f4c790 + 9390394 commit ae0f60c

File tree

3 files changed

+54
-27
lines changed

3 files changed

+54
-27
lines changed

cores/piduino/raspberry_pi_revision.c

100755100644
Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
// | 0012 | A+ | 1 | 256 MB | Sony |
6666
// | 0013 | B+ | 1 | 512 MB | Embest |
6767
// | 0014 | compute | 1 | 512 MB | Sony |
68-
// | 0015 | A+ | 1 | 256 MB | Sony |
68+
// | 0015 | A+ | 1 | 512 MB | Sony |
6969
// +----------+---------+---------+--------+-------------+
7070
//
7171
// If the Raspberry Pi has been over-volted (voiding the warranty) the
@@ -96,9 +96,10 @@
9696
// +---+-------+--------------+--------------------------------------------+
9797
// | A | 00-03 | PCB Revision | (the pcb revision number) |
9898
// | B | 04-11 | Model name | A, B, A+, B+, B Pi2, Alpha, Compute Module |
99-
// | | | | unknown, unknown, Zero |
99+
// | | | | unknown, unknown, Zero, Compute Module 3 |
100+
// | | | | unknown, Zero W |
100101
// | C | 12-15 | Processor | BCM2835, BCM2836, BCM2837 |
101-
// | D | 16-19 | Manufacturer | Sony, Egoman, Embest, unknown, Embest |
102+
// | D | 16-19 | Manufacturer | Sony, Egoman, Embest, Sony Japan, Embest |
102103
// | E | 20-22 | Memory size | 256 MB, 512 MB, 1024 MB |
103104
// | F | 23-23 | encoded flag | (if set, revision is a bit field) |
104105
// | G | 24-24 | waranty bit | (if set, warranty void - Pre Pi2) |
@@ -171,23 +172,23 @@ static RASPBERRY_PI_MEMORY_T revisionToMemory[] =
171172
RPI_256MB, // 12
172173
RPI_512MB, // 13
173174
RPI_512MB, // 14
174-
RPI_256MB // 15
175+
RPI_512MB // 15
175176
};
176177

177178
static RASPBERRY_PI_MEMORY_T bitFieldToMemory[] =
178179
{
179-
RPI_256MB,
180-
RPI_512MB,
181-
RPI_1024MB
180+
RPI_256MB, // 0
181+
RPI_512MB, // 1
182+
RPI_1024MB // 2
182183
};
183184

184185
//-------------------------------------------------------------------------
185186

186187
static RASPBERRY_PI_PROCESSOR_T bitFieldToProcessor[] =
187188
{
188-
RPI_BROADCOM_2835,
189-
RPI_BROADCOM_2836,
190-
RPI_BROADCOM_2837
189+
RPI_BROADCOM_2835, // 0
190+
RPI_BROADCOM_2836, // 1
191+
RPI_BROADCOM_2837 // 2
191192
};
192193

193194
//-------------------------------------------------------------------------
@@ -222,16 +223,19 @@ static RASPBERRY_PI_I2C_DEVICE_T revisionToI2CDevice[] =
222223

223224
static RASPBERRY_PI_MODEL_T bitFieldToModel[] =
224225
{
225-
RPI_MODEL_A,
226-
RPI_MODEL_B,
227-
RPI_MODEL_A_PLUS,
228-
RPI_MODEL_B_PLUS,
229-
RPI_MODEL_B_PI_2,
230-
RPI_MODEL_ALPHA,
231-
RPI_COMPUTE_MODULE,
232-
RPI_MODEL_UNKNOWN,
233-
RPI_MODEL_B_PI_3,
234-
RPI_MODEL_ZERO
226+
RPI_MODEL_A, // 0
227+
RPI_MODEL_B, // 1
228+
RPI_MODEL_A_PLUS, // 2
229+
RPI_MODEL_B_PLUS, // 3
230+
RPI_MODEL_B_PI_2, // 4
231+
RPI_MODEL_ALPHA, // 5
232+
RPI_COMPUTE_MODULE, // 6
233+
RPI_MODEL_UNKNOWN, // 7
234+
RPI_MODEL_B_PI_3, // 8
235+
RPI_MODEL_ZERO, // 9
236+
RPI_COMPUTE_MODULE_3, // A
237+
RPI_MODEL_UNKNOWN, // B
238+
RPI_MODEL_ZERO_W // C
235239
};
236240

237241
static RASPBERRY_PI_MODEL_T revisionToModel[] =
@@ -264,11 +268,11 @@ static RASPBERRY_PI_MODEL_T revisionToModel[] =
264268

265269
static RASPBERRY_PI_MANUFACTURER_T bitFieldToManufacturer[] =
266270
{
267-
RPI_MANUFACTURER_SONY,
268-
RPI_MANUFACTURER_EGOMAN,
269-
RPI_MANUFACTURER_EMBEST,
270-
RPI_MANUFACTURER_UNKNOWN,
271-
RPI_MANUFACTURER_EMBEST
271+
RPI_MANUFACTURER_SONY, // 0
272+
RPI_MANUFACTURER_EGOMAN, // 1
273+
RPI_MANUFACTURER_EMBEST, // 2
274+
RPI_MANUFACTURER_SONY_JAPAN, // 3
275+
RPI_MANUFACTURER_EMBEST // 4
272276
};
273277

274278
static RASPBERRY_PI_MANUFACTURER_T revisionToManufacturer[] =
@@ -560,6 +564,11 @@ getRaspberryPiInformationForRevision(
560564

561565
info->peripheralBase = RPI_BROADCOM_2837_PERIPHERAL_BASE;
562566
break;
567+
568+
default:
569+
570+
info->peripheralBase = RPI_PERIPHERAL_BASE_UNKNOWN;
571+
break;
563572
}
564573
}
565574

@@ -715,6 +724,16 @@ raspberryPiModelToString(
715724
string = "Model B Pi 3";
716725
break;
717726

727+
case RPI_COMPUTE_MODULE_3:
728+
729+
string = "Compute Module 3";
730+
break;
731+
732+
case RPI_MODEL_ZERO_W:
733+
734+
string = "Model Zero W";
735+
break;
736+
718737
default:
719738

720739
break;
@@ -753,6 +772,11 @@ raspberryPiManufacturerToString(
753772
string = "Embest";
754773
break;
755774

775+
case RPI_MANUFACTURER_SONY_JAPAN:
776+
777+
string = "Sony Japan";
778+
break;
779+
756780
default:
757781

758782
break;

cores/piduino/raspberry_pi_revision.h

100755100644
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,9 @@ typedef enum
8282
RPI_MODEL_ALPHA,
8383
RPI_COMPUTE_MODULE,
8484
RPI_MODEL_ZERO,
85-
RPI_MODEL_B_PI_3
85+
RPI_MODEL_B_PI_3,
86+
RPI_COMPUTE_MODULE_3,
87+
RPI_MODEL_ZERO_W
8688
}
8789
RASPBERRY_PI_MODEL_T;
8890

@@ -93,6 +95,7 @@ typedef enum
9395
RPI_MANUFACTURER_EGOMAN,
9496
RPI_MANUFACTURER_QISDA,
9597
RPI_MANUFACTURER_EMBEST,
98+
RPI_MANUFACTURER_SONY_JAPAN,
9699
}
97100
RASPBERRY_PI_MANUFACTURER_T;
98101

cores/piduino/wiring.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ int init(){
178178

179179
uint32_t offset = info.peripheralBase - 0x20000000;
180180

181-
if (info.model == RPI_MODEL_B_PI_3 || info.model == RPI_MODEL_B_PI_2 || info.model == RPI_MODEL_ZERO) {
181+
if (info.model == RPI_MODEL_B_PI_3 || info.model == RPI_MODEL_B_PI_2 || info.model == RPI_MODEL_ZERO || info.model == RPI_MODEL_ZERO_W) {
182182
info.revisionNumber = 0x10;
183183
}
184184
if(info.revisionNumber >= PINMASKS_LEN || !rpi_model_pinmasks[info.revisionNumber]){

0 commit comments

Comments
 (0)