diff options
Diffstat (limited to 'amlhddevice.c')
| -rw-r--r-- | amlhddevice.c | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/amlhddevice.c b/amlhddevice.c new file mode 100644 index 0000000..cbc8a39 --- /dev/null +++ b/amlhddevice.c @@ -0,0 +1,89 @@ +/* + * See the README file for copyright information and how to reach the author. + * + * $Id$ + */ + +#include <vdr/plugin.h> + +#include "amldevice.h" +#include "fbosd.h" +#include "tools.h" + +static const char *VERSION = "0.0.1"; +static const char *DESCRIPTION = trNOOP("HD output device for Amlogic SoC"); + +class cPluginAmlHdDevice : public cPlugin +{ +private: + + class cAmlDevice *m_device; + + static void OnPrimaryDevice(void) + { + new cFbOsdProvider("/dev/fb1"); + } + +public: + cPluginAmlHdDevice(void); + virtual ~cPluginAmlHdDevice(); + + virtual const char *Version(void) { return VERSION; } + virtual const char *Description(void) { return tr(DESCRIPTION); } + virtual const char *CommandLineHelp(void) { return NULL; } + virtual bool ProcessArgs(int argc, char *argv[]) { return true; } + virtual bool Initialize(void); + virtual bool Start(void); + virtual void Stop(void); + virtual void Housekeeping(void) {} + virtual const char *MainMenuEntry(void) { return NULL; } + virtual cOsdObject *MainMenuAction(void) { return NULL; } + virtual cMenuSetupPage *SetupMenu(void) { return NULL; } + virtual bool SetupParse(const char *Name, const char *Value) { return false; } +}; + +cPluginAmlHdDevice::cPluginAmlHdDevice(void) : + m_device(0) +{ +} + +cPluginAmlHdDevice::~cPluginAmlHdDevice() +{ +} + +bool cPluginAmlHdDevice::Initialize(void) +{ + m_device = new cAmlDevice(&OnPrimaryDevice); + + if (m_device) + { + if (m_device->Init()) + return false; + + cSysFs::Write("/sys/class/graphics/fb0/blank", 1); + cSysFs::Write("/sys/class/graphics/fb1/mode", "U:1280x720p-0\n"); + cSysFs::Write("/sys/class/graphics/fb1/blank", 0); + + // 0: vmaster + // 1: amaster + // 2: pcrmaster + cSysFs::Write("/sys/class/tsync/mode", 1); + + cSysFs::Write("/sys/class/tsync/enable", 1); + cSysFs::Write("/sys/class/tsync/pts_pcrscr", "0x0"); + } + return true; +} + +bool cPluginAmlHdDevice::Start(void) +{ + return m_device->Start(); +} + +void cPluginAmlHdDevice::Stop(void) +{ + cSysFs::Write("/sys/class/graphics/fb1/blank", 1); + cSysFs::Write("/sys/class/graphics/fb0/blank", 0); +} + +VDRPLUGINCREATOR(cPluginAmlHdDevice); // Don't touch this! okay. |
