blob: 77c2fe388fefe686f3d079be81911d6f74e52589 [file] [log] [blame]
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Tests control of OMAP Muxes for beaglebone devices."""
import __builtin__
import mox
import os
import unittest
import bbmux_controller
FAKE_MUX_FILE = 'mux_file'
FAKE_MUX_FILE_PATH = '/sys/kernel/debug/omap_mux/mux_file'
FAKE_MUX_FILE_CONTENTS = ('signals: gpmc_a9 | mii2_rxd2 | rgmii2_rd2 | '
'mmc2_dat7 | NA | NA | mcasp0_fsx | gpio1_25')
MUX_MODE = '0x37'
EXPECTED_PIN_NAME_MAP = {'signals:' : 'mux_file',
'gpmc_a9' : 'mux_file',
'mii2_rxd2' : 'mux_file',
'rgmii2_rd2' : 'mux_file',
'mmc2_dat7' : 'mux_file',
'NA' : 'mux_file',
'mcasp0_fsx' : 'mux_file',
'gpio1_25' : 'mux_file'}
EXPECTED_PIN_MODE_MAP = {'signals:' : -1,
'gpmc_a9' : 0,
'mii2_rxd2' : 1,
'rgmii2_rd2' : 2,
'mmc2_dat7' : 3,
'NA' : 5,
'mcasp0_fsx' : 6,
'gpio1_25' : 7}
class TestBBmuxController(mox.MoxTestBase):
def setUp(self):
super(TestBBmuxController, self).setUp()
self.mox.StubOutWithMock(__builtin__, 'open')
def testInitialization(self):
bbmux_controller.os = self.mox.CreateMockAnything()
bbmux_controller.os.path = self.mox.CreateMockAnything()
bbmux_controller.os.listdir(bbmux_controller.MUX_ROOT).AndReturn(
[FAKE_MUX_FILE])
bbmux_controller.os.path.join(bbmux_controller.MUX_ROOT,
FAKE_MUX_FILE).MultipleTimes().AndReturn(
FAKE_MUX_FILE_PATH)
bbmux_controller.os.path.isdir(mox.IgnoreArg()).MultipleTimes().AndReturn(
False)
mux_file = self.mox.CreateMockAnything()
mux_file.__enter__().AndReturn([FAKE_MUX_FILE_CONTENTS])
mux_file.__exit__(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg())
open(FAKE_MUX_FILE_PATH, 'r').AndReturn(mux_file)
self.mox.ReplayAll()
mux_controller = bbmux_controller.BBmuxController()
self.assertEquals(EXPECTED_PIN_NAME_MAP, mux_controller._pin_name_map)
self.assertEquals(EXPECTED_PIN_MODE_MAP, mux_controller._pin_mode_map)
def _writeToMuxFileHelper(self):
mux_file = self.mox.CreateMockAnything()
open(FAKE_MUX_FILE_PATH, 'w').AndReturn(mux_file)
mux_file.__enter__().AndReturn(mux_file)
mux_file.write(MUX_MODE)
mux_file.__exit__(mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg())
def testSetPinMode(self):
"""Test Selecting and setting a pin."""
self._writeToMuxFileHelper()
self.mox.ReplayAll()
# Since testInitialization ran first, BBmuxController should not initialize
# its pin maps as they are class variables.
mux_controller = bbmux_controller.BBmuxController()
mux_controller.set_pin_mode('gpio1_25', 0x3)
def testSetMuxFile(self):
"""Test Selecting and setting a pin."""
self._writeToMuxFileHelper()
self.mox.ReplayAll()
# Since testInitialization ran first, BBmuxController should not initialize
# its pin maps as they are class variables.
mux_controller = bbmux_controller.BBmuxController()
mux_controller.set_muxfile(FAKE_MUX_FILE, 0x3, 0x7)
if __name__ == '__main__':
unittest.main()