Initialize controller if needed for this clock pin.
154 {
155
156 if (ctrl.isInitialized) {
157
158 for (int pin : ctrl.assignedClockPins) {
159 if (pin == clockPin) {
160 return true;
161 }
162 }
163 FL_WARN(
"SpiChannelEngineAdapter: Controller " << ctrl.name <<
" already initialized with different clock pin");
164 return false;
165 }
166
167
168 u8 lanes = ctrl.controller->getLaneCount();
169
170 if (lanes == 1) {
171 SpiHw1::Config config;
172 config.bus_num =
static_cast<fl::u8>(ctrl.controller->getBusId());
173 config.clock_pin = clockPin;
174 config.data_pin = dataPin;
175 config.clock_speed_hz = 20000000;
176 config.max_transfer_sz = 65536;
177
178 if (!ctrl.controller->begin(&config)) {
179 FL_WARN(
"SpiChannelEngineAdapter: Failed to initialize " << ctrl.name);
180 return false;
181 }
182 } else {
183
184 FL_WARN(
"SpiChannelEngineAdapter: Multi-lane init not yet implemented");
185 return false;
186 }
187
188 ctrl.isInitialized = true;
189 ctrl.assignedClockPins.push_back(clockPin);
190
191 FL_DBG(
"SpiChannelEngineAdapter: Initialized " << ctrl.name <<
" with clock pin " << clockPin);
192
193 return true;
194}