Updates to get L2 working on latest iOS codebase

This commit is contained in:
Ross Owen
2012-02-20 15:53:12 +00:00
parent 0726806ec5
commit 82494331b9
7 changed files with 130 additions and 48 deletions

View File

@@ -528,7 +528,7 @@ void audio(chanend c_mix_out, chanend ?c_dig_rx, chanend ?c_config)
#endif #endif
/* Initialise master clock generation */ /* Initialise master clock generation */
ClockingInit(); ClockingInit(c_config);
/* Perform required CODEC/ADC/DAC initialisation */ /* Perform required CODEC/ADC/DAC initialisation */
CodecInit(c_config); CodecInit(c_config);
@@ -550,7 +550,7 @@ void audio(chanend c_mix_out, chanend ?c_dig_rx, chanend ?c_config)
divide = mClk / ( curSamFreq * 64 ); divide = mClk / ( curSamFreq * 64 );
/* Configure clocking for required master clock */ /* Configure clocking for required master clock */
ClockingConfig(mClk); ClockingConfig(mClk, c_config);
if(!firstRun) if(!firstRun)
{ {

View File

@@ -5,10 +5,10 @@
/* Functions that handle master clock generation. These need modifying for an existing design */ /* Functions that handle master clock generation. These need modifying for an existing design */
/* Any initialisation required for master clock generation - run once at start up */ /* Any initialisation required for master clock generation - run once at start up */
void ClockingInit(void); void ClockingInit(chanend ?c);
/* Configuration for a specific master clock frequency - run every sample frequency change */ /* Configuration for a specific master clock frequency - run every sample frequency change */
void ClockingConfig(unsigned mClkFreq); void ClockingConfig(unsigned mClkFreq, chanend ?c);
/** Clock generation and digital audio I/O handling. /** Clock generation and digital audio I/O handling.

View File

@@ -1,4 +1,29 @@
/**
* Module: module_usb_aud_shared
* Version: 2v3_iosrc0
* Build: 5247dfd8ec69594e0670e3b8073efd3c453ad07d
* File: i2c.h
*
* The copyrights, all other intellectual and industrial
* property rights are retained by XMOS and/or its licensors.
* Terms and conditions covering the use of this code can
* be found in the Xmos End User License Agreement.
*
* Copyright XMOS Ltd 2010
*
* In the case where this code is a modification of existing code
* under a separate license, the separate license terms are shown
* below. The modifications to the code are still covered by the
* copyright notice above.
*
**/
// Channel interface
void I2cRegWriteC(int deviceAdrs, int Adrs, int WrData, chanend c);
int I2cRegReadC(int deviceAdrs, int Adrs, chanend c);
// Function interface
void I2cRegWrite(int deviceAdrs, int Adrs, int WrData, port AUD_SCLK, port AUD_SDIN); void I2cRegWrite(int deviceAdrs, int Adrs, int WrData, port AUD_SCLK, port AUD_SDIN);
int I2cRegRead(int deviceAdrs, int Adrs, port AUD_SCLK, port AUD_SDIN); int I2cRegRead(int deviceAdrs, int Adrs, port AUD_SCLK, port AUD_SDIN);

View File

@@ -1,6 +1,47 @@
/**
* Module: module_usb_aud_shared
* Version: 2v3_iosrc0
* Build: c1785ffa61c5d34613093518d78adcebd79ae1cc
* File: i2c.xc
*
* The copyrights, all other intellectual and industrial
* property rights are retained by XMOS and/or its licensors.
* Terms and conditions covering the use of this code can
* be found in the Xmos End User License Agreement.
*
* Copyright XMOS Ltd 2010
*
* In the case where this code is a modification of existing code
* under a separate license, the separate license terms are shown
* below. The modifications to the code are still covered by the
* copyright notice above.
*
**/
#include <xs1.h> #include <xs1.h>
#include <print.h> #include <print.h>
int I2cRegReadC(int device, int addr, chanend c) {
int read;
int retVal;
c <: 0; // isWrite
c <: device;
c <: addr;
c <: 1; // only ever one byte
c :> read;
c :> retVal;
return read;
}
void I2cRegWriteC(int device, int addr, int data, chanend c) {
int retVal;
c <: 1; // isWrite
c <: device;
c <: addr;
c <: 1; // only ever one byte
c <: data;
c :> retVal;
}
int I2cRegRead(int device, int addr, port scl, port sda) int I2cRegRead(int device, int addr, port scl, port sda)
{ {
//int Result; //int Result;

View File

@@ -1,4 +1,4 @@
void PllInit(void); void PllInit(chanend ?c);
void PllMult(unsigned mult); void PllMult(unsigned mult, chanend ?c);

View File

@@ -12,8 +12,8 @@
* \param c_clk_int Optional chanend connected to the clockGen() thread if present * \param c_clk_int Optional chanend connected to the clockGen() thread if present
*/ */
void decouple(chanend c_audio_out, void decouple(chanend c_audio_out,
chanend ?c_led, chanend ?c_midi,
chanend ?c_midi, chanend ?c_clk_int chanend ?c_clk_int
#ifdef IAP #ifdef IAP
, chanend ?c_iap , chanend ?c_iap
#endif #endif

View File

@@ -6,7 +6,7 @@
#include "midiinparse.h" #include "midiinparse.h"
#include "midioutparse.h" #include "midioutparse.h"
#include "queue.h" #include "queue.h"
#include "port32A.h" //#include "port32A.h"
#ifdef IAP #ifdef IAP
#include "iAP.h" #include "iAP.h"
#endif #endif
@@ -64,21 +64,33 @@ extern unsigned authenticating;
// state for auto-selecting dock or USB B // state for auto-selecting dock or USB B
extern unsigned polltime; extern unsigned polltime;
#ifdef IO_EXPANSION
extern port p_i2c_scl; extern port p_i2c_scl;
extern port p_i2c_sda; extern port p_i2c_sda;
#define p_midi_out p_i2c_scl #define p_midi_out p_i2c_scl
#define p_midi_in p_i2c_sda #define p_midi_in p_i2c_sda
#else
//extern out port p_midi_tx;
//extern port p_midi_rx;
#define p_midi_out p_midi_tx
#define p_midi_in p_midi_rx
#endif
//#ifdef IO_EXPANSION
#if 0
extern timer i2ctimer; extern timer i2ctimer;
#define iAPTimer i2ctimer #define iAPTimer i2ctimer
#else
timer iAPTimer;
#endif
void usb_midi(in port ?p_midi_inj, out port ?p_midi_outj, void usb_midi(in port ?p_midi_in, out port ?p_midi_out,
clock ?clk_midi, clock ?clk_midi,
chanend c_midi, chanend c_midi,
unsigned cable_number, unsigned cable_number,
chanend c_iap, chanend ?c_i2c // iOS stuff chanend c_iap, chanend ?c_i2c // iOS stuff
) )
{ {
unsigned symbol = 0x0; // Symbol in progress of being sent out unsigned symbol = 0x0; // Symbol in progress of being sent out
unsigned isTX = 0; // Guard when outputting data unsigned isTX = 0; // Guard when outputting data
unsigned txT; // Timer value used for outputting unsigned txT; // Timer value used for outputting
@@ -125,13 +137,17 @@ chanend c_iap, chanend ?c_i2c // iOS stuff
#ifndef MIDI_LOOPBACK #ifndef MIDI_LOOPBACK
#ifdef IAP #ifdef IAP
#ifdef IO_EXPANSION
port32A_unset(P32A_I2C_NOTMIDI); port32A_unset(P32A_I2C_NOTMIDI);
#endif
#endif #endif
p_midi_out <: 1; // Start with high bit. p_midi_out <: 1; // Start with high bit.
#ifdef IAP #ifdef IAP
#ifdef IO_EXPANSION
port32A_set(P32A_I2C_NOTMIDI); port32A_set(P32A_I2C_NOTMIDI);
#endif #endif
#endif #endif
#endif
#ifdef IAP #ifdef IAP
init_iAP(c_i2c); // uses timer for i2c initialisation pause.. init_iAP(c_i2c); // uses timer for i2c initialisation pause..