Example #1
0
        protected void IT87Enter(ushort registerPort)
        {
            bool createdNew;

            resMutex = new Mutex(initiallyOwned: true, MutexName4MBPnPMode, out createdNew);
            if (!createdNew)
            {
                resMutex.WaitOne(MutexTimeout4MBPnPMode);
            }
            switch (registerPort)
            {
            case 46:
                InvkYcc.gb_outp(registerPort, 135);
                InvkYcc.gb_outp(registerPort, 1);
                InvkYcc.gb_outp(registerPort, 85);
                InvkYcc.gb_outp(registerPort, 85);
                break;

            case 78:
                InvkYcc.gb_outp(registerPort, 135);
                InvkYcc.gb_outp(registerPort, 1);
                InvkYcc.gb_outp(registerPort, 85);
                InvkYcc.gb_outp(registerPort, 170);
                break;
            }
        }
Example #2
0
 protected void IT87Exit(ushort registerPort, ushort valuePort)
 {
     InvkYcc.gb_outp(registerPort, 2);
     InvkYcc.gb_outp(valuePort, 2);
     if (resMutex != null)
     {
         resMutex.ReleaseMutex();
         resMutex = null;
     }
 }
Example #3
0
        private void UpdateAudioLedMode2(LedMode audioLedMode)
        {
            IT87Enter(RegisterPort);
            Select(RegisterPort, ValuePort, 7);
            byte b  = ReadByte(RegisterPort, ValuePort, 251);
            byte b2 = ReadByte(RegisterPort, ValuePort, 202);

            b2 = (byte)(b2 | 0x20);
            WriteByte(RegisterPort, ValuePort, 202, b2);
            byte b4 = InvkYcc.gb_inp((uint)(GpioAddress + 2));
            byte b3 = ReadByte(RegisterPort, ValuePort, 210);
            byte b5 = ReadByte(RegisterPort, ValuePort, 208);

            switch (audioLedMode)
            {
            case LedMode.Off:
                b3 = (byte)(b3 | 0x20);
                WriteByte(RegisterPort, ValuePort, 210, b3);
                b5 = (byte)(b5 & 0xDF);
                b4 = (byte)(b4 & 0xDF);
                b  = (byte)(b & 0x6F);
                break;

            case LedMode.Still:
                b3 = (byte)(b3 | 0x20);
                WriteByte(RegisterPort, ValuePort, 210, b3);
                b5 = (byte)(b5 | 0x20);
                b4 = (byte)(b4 & 0xDF);
                b  = (byte)(b & 0x6F);
                break;

            case LedMode.Breath:
                b3 = (byte)(b3 | 0x20);
                WriteByte(RegisterPort, ValuePort, 210, b3);
                b5 = (byte)(b5 | 0x20);
                b4 = (byte)(b4 & 0xDF);
                b  = (byte)(b | 0x90);
                break;

            case LedMode.Beat:
                b3 = (byte)(b3 | 0x20);
                WriteByte(RegisterPort, ValuePort, 210, b3);
                b5 = (byte)(b5 | 0x20);
                b4 = (byte)(b4 | 0x20);
                b  = (byte)(b & 0x6F);
                break;
            }

            WriteByte(RegisterPort, ValuePort, 208, b5);
            InvkYcc.gb_outp((uint)(GpioAddress + 2), b4);
            WriteByte(RegisterPort, ValuePort, 251, b);
            IT87Exit(RegisterPort, ValuePort);
        }
Example #4
0
        protected bool WriteByte(byte register, byte value)
        {
            InvkYcc.gb_outp(AddressRegister, register);
            InvkYcc.gb_outp(DataRegister, value);

            if (chip == Chip.IT8688)
            {
                return(true);
            }

            return(register == InvkYcc.gb_inp(AddressRegister));
        }
Example #5
0
        public void CtrlGPIO2X(int gp20, int gp21, int gp22)
        {
            IT87Enter(RegisterPort);
            Select(RegisterPort, ValuePort, 7);
            byte b = ReadByte(RegisterPort, ValuePort, 201);

            b = (byte)(b | 7);
            WriteByte(RegisterPort, ValuePort, 201, b);
            IT87Exit(RegisterPort, ValuePort);
            byte b2 = InvkYcc.gb_inp((uint)(GpioAddress + 1));

            b2 = ((gp22 != 1) ? ((byte)(b2 & 0xFB)) : ((byte)(b2 | 4)));
            b2 = ((gp21 != 1) ? ((byte)(b2 & 0xFD)) : ((byte)(b2 | 2)));
            b2 = ((gp20 != 1) ? ((byte)(b2 & 0xFE)) : ((byte)(b2 | 1)));
            InvkYcc.gb_outp((uint)(GpioAddress + 1), b2);
        }
Example #6
0
        protected byte ReadByte(byte register, out bool valid)
        {
            InvkYcc.gb_outp(AddressRegister, register);
            byte result = InvkYcc.gb_inp(DataRegister);

            if (chip == Chip.IT8688)
            {
                valid = true;
            }
            else
            {
                valid = register == InvkYcc.gb_inp(AddressRegister);
            }

            return(result);
        }
        protected void IT87Enter(ushort registerPort)
        {
            switch (registerPort)
            {
            case 46:
                InvkYcc.gb_outp(registerPort, 135);
                InvkYcc.gb_outp(registerPort, 1);
                InvkYcc.gb_outp(registerPort, 85);
                InvkYcc.gb_outp(registerPort, 85);
                break;

            case 78:
                InvkYcc.gb_outp(registerPort, 135);
                InvkYcc.gb_outp(registerPort, 1);
                InvkYcc.gb_outp(registerPort, 85);
                InvkYcc.gb_outp(registerPort, 170);
                break;
            }
        }
Example #8
0
 protected void WriteByte(ushort registerPort, ushort valuePort, byte register, byte value)
 {
     InvkYcc.gb_outp(registerPort, register);
     InvkYcc.gb_outp(valuePort, value);
 }
Example #9
0
 protected byte ReadByte(ushort registerPort, ushort valuePort, byte register)
 {
     InvkYcc.gb_outp(registerPort, register);
     return(InvkYcc.gb_inp(valuePort));
 }
Example #10
0
 protected void Select(ushort registerPort, ushort valuePort, byte logicalDeviceNumber)
 {
     InvkYcc.gb_outp(registerPort, 7);
     InvkYcc.gb_outp(valuePort, logicalDeviceNumber);
 }
 protected void IT87Exit(ushort registerPort, ushort valuePort)
 {
     InvkYcc.gb_outp(registerPort, 2);
     InvkYcc.gb_outp(valuePort, 2);
 }