<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://elinux.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://elinux.org/api.php?action=feedcontributions&amp;user=Jsujjava&amp;feedformat=atom</id>
		<title>eLinux.org - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://elinux.org/api.php?action=feedcontributions&amp;user=Jsujjava&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://elinux.org/Special:Contributions/Jsujjava"/>
		<updated>2013-05-21T11:31:21Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.21alpha</generator>

	<entry>
		<id>http://elinux.org/DLNA_Open_Source_Projects</id>
		<title>DLNA Open Source Projects</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/DLNA_Open_Source_Projects"/>
				<updated>2011-06-01T21:10:14Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Networking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here is some random information about DLNA open source projects:&lt;br /&gt;
&lt;br /&gt;
== UPnP media servers ==&lt;br /&gt;
Here is a list of UPnP media servers for Windows, Linux, MAC and [[Python_Language|Python]]:&lt;br /&gt;
(some links obtained from http://ps3mods.blogspot.com/2007/05/upnp-media-servers-for-windows-mac.html)&lt;br /&gt;
&lt;br /&gt;
I only list the open source ones.&lt;br /&gt;
&lt;br /&gt;
* [http://www.cybergarage.org/net/cmgate/cc/index.html CyberMediaGate] (C++) - UPnP A/V Media Server, using cyberlink&lt;br /&gt;
* [http://ushare.geexbox.org/ uShare] (Linux) - UPnP A/V and DLNA Media Server, using libupnp&lt;br /&gt;
* [http://www.gnu.org/software/gmediaserver/ GMediaServer] (Linux) - &lt;br /&gt;
* [http://mediatomb.cc/ MediaTomb] (Linux, port to NAS has been reported)&lt;br /&gt;
* [http://www.mythtv.org/wiki/index.php/UPnP#UPnP_in_MythTV MythTV] - MythTV UPnP A/V Media Server support&lt;br /&gt;
* [http://www.cidero.com/radioServer.html Cidero Internet Radio Server] (Java)&lt;br /&gt;
* [http://fuppes.ulrich-voelkel.de/ Fuppes] (Windows, Linux) - FUPPES is a free multiplatform UPnP (TM) A/V Media Server.&lt;br /&gt;
* [http://resnet.uoregon.edu/~gurney_j/jmpc/pymeds.html PyMedS] (Python) - Python UPnP Media Server&lt;br /&gt;
* [http://openpfc.org/ OpenPFC] - Media device engine&lt;br /&gt;
** John Gildred of Pioneer stated: Pioneer published an LGPL implementation of an HD DVR called Digital Library with support for DMS and DMP features. It uses the OpenPFC DTV middleware. It was never put through certification, and it's a bit outdated now.&lt;br /&gt;
&lt;br /&gt;
== UPnP Media Players ==&lt;br /&gt;
&lt;br /&gt;
I only list the open source ones.&lt;br /&gt;
&lt;br /&gt;
* [http://enna.geexbox.org/ Enna] (Linux) - An embedded Media Center with GUPnP-based UPnP A/V Media Browser and Player capabilities&lt;br /&gt;
* [http://xbmc.org/ XBMC] (Linux | Windows | MacOSX) - A multi-platforms Media Center with UPnP A/V plugin&lt;br /&gt;
&lt;br /&gt;
== DLNA media servers ==&lt;br /&gt;
* [http://ushare.geexbox.org/ uShare] (Linux) - Free UPnP and DLNA Media Server for Linux&lt;br /&gt;
* [http://live.gnome.org/Rygel Rygel] - GNOME UPnP/DLNA Media Server&lt;br /&gt;
* [http://sourceforge.net/projects/minidlna/ minidlna] (Linux) DLNA server working whit Sony Bravia 46W4500&lt;br /&gt;
&lt;br /&gt;
== UPnP libraries and middleware ==&lt;br /&gt;
* [http://platinum.sourceforge.net Platinum] - Platinum UPnP SDK&lt;br /&gt;
* [http://upnp.sourceforge.net/ libupnp] - Linux SDK for UPnP Devices&lt;br /&gt;
** Originally donated by Intel, this library serves as the foundation for some other projects&lt;br /&gt;
* [http://pupnp.sourceforge.net/ pupnp] - A Portable Open Source UPnP Development Kit&lt;br /&gt;
** This looks like the successor to libupnp??&lt;br /&gt;
* [http://www.cybergarage.org/net/upnp/java/ Cyberlink for Java] (Java) - Development package for UPnP applications&lt;br /&gt;
* [http://www.cybergarage.org/net/upnp/c/index.html Cyberlink for C] (C) - Development package for C UPnP applications&lt;br /&gt;
* [http://www.cybergarage.org/net/upnp/cc/index.html Cyberlink for C++] (C++) - Development package for C++ UPnP applications&lt;br /&gt;
* [http://search.cpan.org/~skonno/Net-UPnP/ Net::UPnP] (Perl) - Development package for Perl UPnP applications&lt;br /&gt;
* [http://www.cidero.com/ Cidero] - Cidero UPnP Control Point and Bridge Software&lt;br /&gt;
&lt;br /&gt;
== DLNA and UPnP libraries and middleware ==&lt;br /&gt;
* [http://libdlna.geexbox.org/ libdlna] (C) - Reference DLNA open-source implementation for Linux&lt;br /&gt;
* [http://coherence.beebits.net/ coherence] (Python) - DLNA/UPnP framework for existing applications&lt;br /&gt;
** ''Building bridges - coherence, a DLNA/UPnP framework'' talk, by Frank Scholz at ELCE 2008. [http://free-electrons.com/pub/video/2008/elce/elce2008-scholz-coherence.ogv Video] available.&lt;br /&gt;
* [http://gupnp.org GUPnP] (C) - GObject/GLib based UPnP framework&lt;br /&gt;
&lt;br /&gt;
=== Other lists ===&lt;br /&gt;
* There's also a good list of projects at: https://coherence.beebits.net/wiki/Resources&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Category:Move_proposal</id>
		<title>Category:Move proposal</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:Move_proposal"/>
				<updated>2011-05-19T14:57:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Categorize&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/eLinux.org:Site_support</id>
		<title>eLinux.org:Site support</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/eLinux.org:Site_support"/>
				<updated>2011-05-19T14:55:50Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Volunteering to improve the wiki ==&lt;br /&gt;
Below please find links to various pages with information and ideas for content and feature additions&lt;br /&gt;
to the eLinux wiki.&lt;br /&gt;
&lt;br /&gt;
(Various lists have crept up over the years, lets try to gather links to them here:)&lt;br /&gt;
&lt;br /&gt;
Lists of editor tasks:&lt;br /&gt;
* [[Volunteer editor tasks]]&lt;br /&gt;
* [[Embedded wiki issues list]]&lt;br /&gt;
** Specific cleanup tasks&lt;br /&gt;
*** Resolve duplication between [[Embedded Linux Distributions]] and [[Hardware Hacking]] pages (and one other page mentioned by Klaas) -- seems to be resolved by 20100514, (broeggle)&lt;br /&gt;
*** Resolve duplication between [[Embedded Linux Distributions]] and [[Toolchains]] (broeggle)&lt;br /&gt;
&lt;br /&gt;
* Create [[Wanted]] pages&lt;br /&gt;
** See also [[Special:Wantedpages]]&lt;br /&gt;
A lot of wanted pages are just dangling links from the Help pages, for pages that were not&lt;br /&gt;
created when we initially set up the wiki.  I think most of these types of pages can just be&lt;br /&gt;
set to stubs.  Alternatively, we can look at the MediaWiki site and copy the page from their&lt;br /&gt;
site for these dangling help examples.&lt;br /&gt;
&lt;br /&gt;
Another big set of wanted pages are for links between pages that were copied from&lt;br /&gt;
the old CELF public wiki to here.  This was done with some automated tools, which I think&lt;br /&gt;
made some errors in the translation from MoinMoin to MediaWiki. If the &lt;br /&gt;
legacy CELF page exists in this site, the link on the &amp;quot;requesting&amp;quot; page just needs to&lt;br /&gt;
be repaired.  If there is not matching page, then the link should just be removed.&lt;br /&gt;
&lt;br /&gt;
Just for fun, I'm keeping track over time of some metrics:&lt;br /&gt;
=== Wanted page count history ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
||Date||Wanted page count&lt;br /&gt;
|-&lt;br /&gt;
||Dec 12, 2008||233&lt;br /&gt;
|-&lt;br /&gt;
||April 6, 2009||241 (why up?)&lt;br /&gt;
|-&lt;br /&gt;
||April 15, 2010||122&lt;br /&gt;
|-&lt;br /&gt;
||April 12, 2011||50 (but only few really relevant)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Why do these stats occasionally rise?&lt;br /&gt;
On occasion, the Help pages are re-imported to pick up new pages.  This can cause increases in Wanted Pages when the new pages have new page links on them that are not yet present in the new pages set.&lt;br /&gt;
&lt;br /&gt;
* add categories to [[Special:Uncategorizedpages|Uncategorized pages]]&lt;br /&gt;
* de-orphan [[Special:Lonelypages|Orphaned pages]]&lt;br /&gt;
To de-orphan a page, follow the link to the page, and create a link to it from&lt;br /&gt;
an appropriate other page in the wiki. Before doing that, check to make sure that the&lt;br /&gt;
information on the page is not duplicated somewhere else in the wiki (maybe by doing&lt;br /&gt;
a search).  Alternatively, sometimes the information can be copied from the orphan&lt;br /&gt;
to someplace else, and the orphan removed.  If you copy the information to somewhere else,&lt;br /&gt;
just edit the orphan to make it empty, and add the page name to the list here, and an&lt;br /&gt;
administrator will remove the page.&lt;br /&gt;
&lt;br /&gt;
List of empty orphan pages:&lt;br /&gt;
* &amp;lt;put page name here&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Orphan page count history ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
||Date||Orphan page count&lt;br /&gt;
|-&lt;br /&gt;
||Dec 12, 2008||122&lt;br /&gt;
|-&lt;br /&gt;
||April 6, 2009||134 (what the heck?)&lt;br /&gt;
|-&lt;br /&gt;
||Dec 2, 2009||89&lt;br /&gt;
|-&lt;br /&gt;
||Dec 9, 2009||30&lt;br /&gt;
|-&lt;br /&gt;
||April 13, 2011||26&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lists of administrator tasks:&lt;br /&gt;
* [[Embedded wiki to-do list]] - a task list for administrators&lt;br /&gt;
* [[Embedded Wiki wanted features]]&lt;br /&gt;
&lt;br /&gt;
Other lists:&lt;br /&gt;
* [[Elinux issues]] - miscellaneous ideas of things to do&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Wikipedia style templates can be used to flag pages that may require an action. The tranclusion causes a box to appear at the top of the page and causes the page is added to a category for action. These categories can be seen for a list of pages to work on.&lt;br /&gt;
&lt;br /&gt;
Some template/category combinations include:&lt;br /&gt;
* [[Template:NeedsMerge]] - [[:Category:NeedsMerge]]&lt;br /&gt;
* [[Template:Incomplete]] - [[:Category:NeedsMaterial]]&lt;br /&gt;
* [[Template:Move]] - [[:Category:Move proposal]]&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:Templates]]&lt;br /&gt;
&lt;br /&gt;
== Resources for volunteers and wiki administrators ==&lt;br /&gt;
To communicate with other elinux wiki volunteers, editors and administrators, please join &lt;br /&gt;
our&lt;br /&gt;
* [[ELinuxWiki:Mailing List|Mailing list]]&lt;br /&gt;
* [[eLinuxWiki:History|History page]] - has information about how we got here and why.  Also, has links to pages used for previous activities, like contests and promotions.&lt;br /&gt;
&lt;br /&gt;
== Ideas to encourage contributions ==&lt;br /&gt;
&lt;br /&gt;
=== systems to facilitate exiting content review ===&lt;br /&gt;
* create email system that people can subscribe to, to review wiki pages a little at a time&lt;br /&gt;
&lt;br /&gt;
=== systems to facilitate addition of content ===&lt;br /&gt;
* ability to bounce an LKML email to a collector, possibly adding a tag&lt;br /&gt;
** collector would post to wiki, with tag&lt;br /&gt;
* ability to forward and LKML email to a site, which returns you a URL (on e.g. lkml.org) for that message&lt;br /&gt;
** This makes it easier to link to an LKML message or thread.&lt;br /&gt;
* ability to rate LKML messages on a web site &lt;br /&gt;
&lt;br /&gt;
== Donations ==&lt;br /&gt;
We don't really have an official mechanism for donations of money.&lt;br /&gt;
&lt;br /&gt;
We are, however, looking for donations of items we can use for prizes&lt;br /&gt;
for some of our upcoming contests. Embedded Linux-based products, &lt;br /&gt;
or tools or books related to embedded Linux, would be most appreciated.&lt;br /&gt;
&lt;br /&gt;
If you have something like this, or a large donation (greater than $100), please&lt;br /&gt;
contact [[User:TimBird|Tim Bird]] or [[User:wmat|Bill Traynor]].&lt;br /&gt;
&lt;br /&gt;
Tim is available at: tim (dot) bird (at) am (dot) sony (dot) com.&lt;br /&gt;
Bill is available at: wmat (at) naoi (dot) ca.&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Template:Incomplete</id>
		<title>Template:Incomplete</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Template:Incomplete"/>
				<updated>2011-05-19T14:54:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Categorize&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; width=&amp;quot;80%&amp;quot; class=&amp;quot;solid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Imbox_content.png]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; This page is incomplete and may require expansion or cleanup. Please help to improve the article, or discuss the issue on the talk page.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Template Documentation ==&lt;br /&gt;
This template is on pages which need new material added to fill out the article.&lt;br /&gt;
&lt;br /&gt;
Pages which use this template are added to the category [[:Category:NeedsMaterial]].&lt;br /&gt;
&lt;br /&gt;
Add &amp;lt;nowiki&amp;gt;{{Incomplete}}&amp;lt;/nowiki&amp;gt; at the top of the page to include this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
[[Category:NeedsMaterial]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/eLinux.org:Site_support</id>
		<title>eLinux.org:Site support</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/eLinux.org:Site_support"/>
				<updated>2011-05-19T14:52:51Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add section on templates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Volunteering to improve the wiki ==&lt;br /&gt;
Below please find links to various pages with information and ideas for content and feature additions&lt;br /&gt;
to the eLinux wiki.&lt;br /&gt;
&lt;br /&gt;
(Various lists have crept up over the years, lets try to gather links to them here:)&lt;br /&gt;
&lt;br /&gt;
Lists of editor tasks:&lt;br /&gt;
* [[Volunteer editor tasks]]&lt;br /&gt;
* [[Embedded wiki issues list]]&lt;br /&gt;
** Specific cleanup tasks&lt;br /&gt;
*** Resolve duplication between [[Embedded Linux Distributions]] and [[Hardware Hacking]] pages (and one other page mentioned by Klaas) -- seems to be resolved by 20100514, (broeggle)&lt;br /&gt;
*** Resolve duplication between [[Embedded Linux Distributions]] and [[Toolchains]] (broeggle)&lt;br /&gt;
&lt;br /&gt;
* Create [[Wanted]] pages&lt;br /&gt;
** See also [[Special:Wantedpages]]&lt;br /&gt;
A lot of wanted pages are just dangling links from the Help pages, for pages that were not&lt;br /&gt;
created when we initially set up the wiki.  I think most of these types of pages can just be&lt;br /&gt;
set to stubs.  Alternatively, we can look at the MediaWiki site and copy the page from their&lt;br /&gt;
site for these dangling help examples.&lt;br /&gt;
&lt;br /&gt;
Another big set of wanted pages are for links between pages that were copied from&lt;br /&gt;
the old CELF public wiki to here.  This was done with some automated tools, which I think&lt;br /&gt;
made some errors in the translation from MoinMoin to MediaWiki. If the &lt;br /&gt;
legacy CELF page exists in this site, the link on the &amp;quot;requesting&amp;quot; page just needs to&lt;br /&gt;
be repaired.  If there is not matching page, then the link should just be removed.&lt;br /&gt;
&lt;br /&gt;
Just for fun, I'm keeping track over time of some metrics:&lt;br /&gt;
=== Wanted page count history ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
||Date||Wanted page count&lt;br /&gt;
|-&lt;br /&gt;
||Dec 12, 2008||233&lt;br /&gt;
|-&lt;br /&gt;
||April 6, 2009||241 (why up?)&lt;br /&gt;
|-&lt;br /&gt;
||April 15, 2010||122&lt;br /&gt;
|-&lt;br /&gt;
||April 12, 2011||50 (but only few really relevant)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Why do these stats occasionally rise?&lt;br /&gt;
On occasion, the Help pages are re-imported to pick up new pages.  This can cause increases in Wanted Pages when the new pages have new page links on them that are not yet present in the new pages set.&lt;br /&gt;
&lt;br /&gt;
* add categories to [[Special:Uncategorizedpages|Uncategorized pages]]&lt;br /&gt;
* de-orphan [[Special:Lonelypages|Orphaned pages]]&lt;br /&gt;
To de-orphan a page, follow the link to the page, and create a link to it from&lt;br /&gt;
an appropriate other page in the wiki. Before doing that, check to make sure that the&lt;br /&gt;
information on the page is not duplicated somewhere else in the wiki (maybe by doing&lt;br /&gt;
a search).  Alternatively, sometimes the information can be copied from the orphan&lt;br /&gt;
to someplace else, and the orphan removed.  If you copy the information to somewhere else,&lt;br /&gt;
just edit the orphan to make it empty, and add the page name to the list here, and an&lt;br /&gt;
administrator will remove the page.&lt;br /&gt;
&lt;br /&gt;
List of empty orphan pages:&lt;br /&gt;
* &amp;lt;put page name here&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Orphan page count history ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
||Date||Orphan page count&lt;br /&gt;
|-&lt;br /&gt;
||Dec 12, 2008||122&lt;br /&gt;
|-&lt;br /&gt;
||April 6, 2009||134 (what the heck?)&lt;br /&gt;
|-&lt;br /&gt;
||Dec 2, 2009||89&lt;br /&gt;
|-&lt;br /&gt;
||Dec 9, 2009||30&lt;br /&gt;
|-&lt;br /&gt;
||April 13, 2011||26&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lists of administrator tasks:&lt;br /&gt;
* [[Embedded wiki to-do list]] - a task list for administrators&lt;br /&gt;
* [[Embedded Wiki wanted features]]&lt;br /&gt;
&lt;br /&gt;
Other lists:&lt;br /&gt;
* [[Elinux issues]] - miscellaneous ideas of things to do&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Wikipedia style templates can be used to flag pages may require an action. The tranclusion causes a box to appear at the top of the page and causes the page is added to a category for action. These categories can be seen for a list of pages to work on.&lt;br /&gt;
&lt;br /&gt;
Some template/category combinations include:&lt;br /&gt;
* [[Template:NeedsMerge]] - [[:Category:NeedsMerge]]&lt;br /&gt;
* [[Template:Incomplete]] - [[:Category:NeedsMaterial]]&lt;br /&gt;
* [[Template:Move]] - [[:Category:Move proposal]]&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:Templates]]&lt;br /&gt;
&lt;br /&gt;
== Resources for volunteers and wiki administrators ==&lt;br /&gt;
To communicate with other elinux wiki volunteers, editors and administrators, please join &lt;br /&gt;
our&lt;br /&gt;
* [[ELinuxWiki:Mailing List|Mailing list]]&lt;br /&gt;
* [[eLinuxWiki:History|History page]] - has information about how we got here and why.  Also, has links to pages used for previous activities, like contests and promotions.&lt;br /&gt;
&lt;br /&gt;
== Ideas to encourage contributions ==&lt;br /&gt;
&lt;br /&gt;
=== systems to facilitate exiting content review ===&lt;br /&gt;
* create email system that people can subscribe to, to review wiki pages a little at a time&lt;br /&gt;
&lt;br /&gt;
=== systems to facilitate addition of content ===&lt;br /&gt;
* ability to bounce an LKML email to a collector, possibly adding a tag&lt;br /&gt;
** collector would post to wiki, with tag&lt;br /&gt;
* ability to forward and LKML email to a site, which returns you a URL (on e.g. lkml.org) for that message&lt;br /&gt;
** This makes it easier to link to an LKML message or thread.&lt;br /&gt;
* ability to rate LKML messages on a web site &lt;br /&gt;
&lt;br /&gt;
== Donations ==&lt;br /&gt;
We don't really have an official mechanism for donations of money.&lt;br /&gt;
&lt;br /&gt;
We are, however, looking for donations of items we can use for prizes&lt;br /&gt;
for some of our upcoming contests. Embedded Linux-based products, &lt;br /&gt;
or tools or books related to embedded Linux, would be most appreciated.&lt;br /&gt;
&lt;br /&gt;
If you have something like this, or a large donation (greater than $100), please&lt;br /&gt;
contact [[User:TimBird|Tim Bird]] or [[User:wmat|Bill Traynor]].&lt;br /&gt;
&lt;br /&gt;
Tim is available at: tim (dot) bird (at) am (dot) sony (dot) com.&lt;br /&gt;
Bill is available at: wmat (at) naoi (dot) ca.&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Category:NeedsMerge</id>
		<title>Category:NeedsMerge</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:NeedsMerge"/>
				<updated>2011-05-19T14:48:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add to :Category:Community&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category denotes pages which are thought to require a merge. Don't add pages directly, use [[Template:NeedsMerge]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Category:NeedsMerge</id>
		<title>Category:NeedsMerge</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:NeedsMerge"/>
				<updated>2011-05-19T14:46:13Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This category denotes pages which are thought to require a merge. Don't add pages directly, use [[Template:NeedsMerge]].&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Template:NeedsMerge</id>
		<title>Template:NeedsMerge</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Template:NeedsMerge"/>
				<updated>2011-05-19T14:44:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add reference to :Category:NeedsMerge&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;div align=&amp;quot;left&amp;quot; style=&amp;quot;border: 1px solid silver; width: 80%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; class=&amp;quot;solid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Merge-arrows.png]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; This page is may need to be merged with other page(s) including [[{{{1}}}]]. Please help to merge the articles, or discuss the issue on the talk page.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Template Documentation ==&lt;br /&gt;
This template is used on pages which need to be merged with other pages. The first argument is the suggested page to be merged with.&lt;br /&gt;
&lt;br /&gt;
Pages which use this template are added to the category [[:Category:NeedsMerge]].&lt;br /&gt;
&lt;br /&gt;
Add &amp;lt;nowiki&amp;gt;{{NeedsMerge|SomeOtherPage}}&amp;lt;/nowiki&amp;gt; at the top of the page to include this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
[[Category:NeedsMerge]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Template:NeedsMerge</id>
		<title>Template:NeedsMerge</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Template:NeedsMerge"/>
				<updated>2011-05-18T18:04:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to a fancy box&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;div align=&amp;quot;left&amp;quot; style=&amp;quot;border: 1px solid silver; width: 80%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; class=&amp;quot;solid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Merge-arrows.png]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; This page is may need to be merged with other page(s) including [[{{{1}}}]]. Please help to merge the articles, or discuss the issue on the talk page.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Template Documentation ==&lt;br /&gt;
This template is used on pages which need to be merged with other pages. The first argument is the suggested page to be merged with.&lt;br /&gt;
&lt;br /&gt;
Add &amp;lt;nowiki&amp;gt;{{NeedsMerge|SomeOtherPage}}&amp;lt;/nowiki&amp;gt; at the top of the page to include this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
[[Category:NeedsMerge]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Template:Delete</id>
		<title>Template:Delete</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Template:Delete"/>
				<updated>2011-05-18T15:28:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to a fancy box&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;div align=&amp;quot;left&amp;quot; style=&amp;quot;border: 1px solid silver; width: 80%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; width=&amp;quot;100%&amp;quot; class=&amp;quot;solid&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
[[Image:Edit-clear.png]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This page may be a candidate for &amp;lt;b&amp;gt;speedy deletion&amp;lt;/b&amp;gt;. Please discuss the issue on the talk page, or delete if you are an administrator.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Template Documentation ==&lt;br /&gt;
This template is on pages which should be deleted.&lt;br /&gt;
&lt;br /&gt;
Add &amp;lt;nowiki&amp;gt;{{Delete}}&amp;lt;/nowiki&amp;gt; at the top of the page to include this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{{category|[[Category:Candidates for speedy deletion]]}}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:Templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/eLinux.org:Site_support</id>
		<title>eLinux.org:Site support</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/eLinux.org:Site_support"/>
				<updated>2011-05-18T13:18:18Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Community&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Volunteering to improve the wiki ==&lt;br /&gt;
Below please find links to various pages with information and ideas for content and feature additions&lt;br /&gt;
to the eLinux wiki.&lt;br /&gt;
&lt;br /&gt;
(Various lists have crept up over the years, lets try to gather links to them here:)&lt;br /&gt;
&lt;br /&gt;
Lists of editor tasks:&lt;br /&gt;
* [[Volunteer editor tasks]]&lt;br /&gt;
* [[Embedded wiki issues list]]&lt;br /&gt;
** Specific cleanup tasks&lt;br /&gt;
*** Resolve duplication between [[Embedded Linux Distributions]] and [[Hardware Hacking]] pages (and one other page mentioned by Klaas) -- seems to be resolved by 20100514, (broeggle)&lt;br /&gt;
*** Resolve duplication between [[Embedded Linux Distributions]] and [[Toolchains]] (broeggle)&lt;br /&gt;
&lt;br /&gt;
* Create [[Wanted]] pages&lt;br /&gt;
** See also [[Special:Wantedpages]]&lt;br /&gt;
A lot of wanted pages are just dangling links from the Help pages, for pages that were not&lt;br /&gt;
created when we initially set up the wiki.  I think most of these types of pages can just be&lt;br /&gt;
set to stubs.  Alternatively, we can look at the MediaWiki site and copy the page from their&lt;br /&gt;
site for these dangling help examples.&lt;br /&gt;
&lt;br /&gt;
Another big set of wanted pages are for links between pages that were copied from&lt;br /&gt;
the old CELF public wiki to here.  This was done with some automated tools, which I think&lt;br /&gt;
made some errors in the translation from MoinMoin to MediaWiki. If the &lt;br /&gt;
legacy CELF page exists in this site, the link on the &amp;quot;requesting&amp;quot; page just needs to&lt;br /&gt;
be repaired.  If there is not matching page, then the link should just be removed.&lt;br /&gt;
&lt;br /&gt;
Just for fun, I'm keeping track over time of some metrics:&lt;br /&gt;
=== Wanted page count history ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
||Date||Wanted page count&lt;br /&gt;
|-&lt;br /&gt;
||Dec 12, 2008||233&lt;br /&gt;
|-&lt;br /&gt;
||April 6, 2009||241 (why up?)&lt;br /&gt;
|-&lt;br /&gt;
||April 15, 2010||122&lt;br /&gt;
|-&lt;br /&gt;
||April 12, 2011||50 (but only few really relevant)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Why do these stats occasionally rise?&lt;br /&gt;
On occasion, the Help pages are re-imported to pick up new pages.  This can cause increases in Wanted Pages when the new pages have new page links on them that are not yet present in the new pages set.&lt;br /&gt;
&lt;br /&gt;
* add categories to [[Special:Uncategorizedpages|Uncategorized pages]]&lt;br /&gt;
* de-orphan [[Special:Lonelypages|Orphaned pages]]&lt;br /&gt;
To de-orphan a page, follow the link to the page, and create a link to it from&lt;br /&gt;
an appropriate other page in the wiki. Before doing that, check to make sure that the&lt;br /&gt;
information on the page is not duplicated somewhere else in the wiki (maybe by doing&lt;br /&gt;
a search).  Alternatively, sometimes the information can be copied from the orphan&lt;br /&gt;
to someplace else, and the orphan removed.  If you copy the information to somewhere else,&lt;br /&gt;
just edit the orphan to make it empty, and add the page name to the list here, and an&lt;br /&gt;
administrator will remove the page.&lt;br /&gt;
&lt;br /&gt;
List of empty orphan pages:&lt;br /&gt;
* &amp;lt;put page name here&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Orphan page count history ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
||Date||Orphan page count&lt;br /&gt;
|-&lt;br /&gt;
||Dec 12, 2008||122&lt;br /&gt;
|-&lt;br /&gt;
||April 6, 2009||134 (what the heck?)&lt;br /&gt;
|-&lt;br /&gt;
||Dec 2, 2009||89&lt;br /&gt;
|-&lt;br /&gt;
||Dec 9, 2009||30&lt;br /&gt;
|-&lt;br /&gt;
||April 13, 2011||26&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Lists of administrator tasks:&lt;br /&gt;
* [[Embedded wiki to-do list]] - a task list for administrators&lt;br /&gt;
* [[Embedded Wiki wanted features]]&lt;br /&gt;
&lt;br /&gt;
Other lists:&lt;br /&gt;
* [[Elinux issues]] - miscellaneous ideas of things to do&lt;br /&gt;
&lt;br /&gt;
== Resources for volunteers and wiki administrators ==&lt;br /&gt;
To communicate with other elinux wiki volunteers, editors and administrators, please join &lt;br /&gt;
our&lt;br /&gt;
* [[ELinuxWiki:Mailing List|Mailing list]]&lt;br /&gt;
* [[eLinuxWiki:History|History page]] - has information about how we got here and why.  Also, has links to pages used for previous activities, like contests and promotions.&lt;br /&gt;
&lt;br /&gt;
== Ideas to encourage contributions ==&lt;br /&gt;
&lt;br /&gt;
=== systems to facilitate exiting content review ===&lt;br /&gt;
* create email system that people can subscribe to, to review wiki pages a little at a time&lt;br /&gt;
&lt;br /&gt;
=== systems to facilitate addition of content ===&lt;br /&gt;
* ability to bounce an LKML email to a collector, possibly adding a tag&lt;br /&gt;
** collector would post to wiki, with tag&lt;br /&gt;
* ability to forward and LKML email to a site, which returns you a URL (on e.g. lkml.org) for that message&lt;br /&gt;
** This makes it easier to link to an LKML message or thread.&lt;br /&gt;
* ability to rate LKML messages on a web site &lt;br /&gt;
&lt;br /&gt;
== Donations ==&lt;br /&gt;
We don't really have an official mechanism for donations of money.&lt;br /&gt;
&lt;br /&gt;
We are, however, looking for donations of items we can use for prizes&lt;br /&gt;
for some of our upcoming contests. Embedded Linux-based products, &lt;br /&gt;
or tools or books related to embedded Linux, would be most appreciated.&lt;br /&gt;
&lt;br /&gt;
If you have something like this, or a large donation (greater than $100), please&lt;br /&gt;
contact [[User:TimBird|Tim Bird]] or [[User:wmat|Bill Traynor]].&lt;br /&gt;
&lt;br /&gt;
Tim is available at: tim (dot) bird (at) am (dot) sony (dot) com.&lt;br /&gt;
Bill is available at: wmat (at) naoi (dot) ca.&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Category:Disable_Console</id>
		<title>Category:Disable Console</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:Disable_Console"/>
				<updated>2011-05-16T17:52:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Undo revision 48049 by Jsujjava (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{delete}}&lt;br /&gt;
[[Category:Categories]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Category:Disable_Console</id>
		<title>Category:Disable Console</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Category:Disable_Console"/>
				<updated>2011-05-16T17:50:55Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Delete content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Kgdb</id>
		<title>Kgdb</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Kgdb"/>
				<updated>2011-05-15T20:52:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Development Tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It is fascinating to think that you have control over running Linux Kernel. You can stop, can single-step, can resume and even can put break-points on running Kernel. In fact, you can debug the kernel as easily as you debug any application.&lt;br /&gt;
&lt;br /&gt;
== How to setup kgdb == &lt;br /&gt;
&lt;br /&gt;
The steps mentioned here are with reference to 2.6.26 Kernel. The main reason is KGDB code is merged into Linux tree from 2.6.26-RC5 kernel.&lt;br /&gt;
(As a side note, for kernel &amp;lt; 2.6.26-RC5, you have to get kgdb patch from [ http://kgdb.linsyssoft.com/kernel.htm] and apply them to kernel)&lt;br /&gt;
&lt;br /&gt;
== Hardware Requirements ==&lt;br /&gt;
      &lt;br /&gt;
Two x86 machines are required for using KGDB. One of the machines runs a kernel to be debugged called &amp;quot;TEST MACHINE&amp;quot;. The other machine runs gdb &amp;quot;DEVELOPMENT MACHINE&amp;quot;.&lt;br /&gt;
A serial line is required between the development and the test machine. And so obviously, machines need one serial port each. Basically, you will be sending &amp;quot;Debugging Commands&amp;quot; from &amp;quot;DEVELOPMENT MACHINE&amp;quot; to &amp;quot;TEST MACHINE&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Preparing Kernel to be Debugged ==&lt;br /&gt;
&lt;br /&gt;
1. Download the source of kernel (for e.g., 2.6.26.2)from kernel.org&lt;br /&gt;
&lt;br /&gt;
2. Recompile the Kernel on &amp;quot;DEVELOPMENT MACHINE&amp;quot;.&lt;br /&gt;
Go to Kernel Hacking and Enable the following options:&lt;br /&gt;
 -*- Magic SysRq key&lt;br /&gt;
 [*] Compile the kernel with debug info  &lt;br /&gt;
 [*] KGDB: kernel debugging with remote gdb  ---&amp;gt;&lt;br /&gt;
And in n KGDB:&lt;br /&gt;
 --- KGDB: kernel debugging with remote gdb      &lt;br /&gt;
 &amp;lt;*&amp;gt;   KGDB: use kgdb over the serial console&lt;br /&gt;
 [ ]   KGDB: internal test suite             &lt;br /&gt;
3. Build kernel and modules&lt;br /&gt;
     make -j 12 &amp;amp;&amp;amp; make modules &amp;amp;&amp;amp; make modules_install&lt;br /&gt;
&lt;br /&gt;
4. Transfer the vmlinux and system.map and initrd.img files on &amp;quot;TEST MACHINE&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
5. Now, edit the GRUB entry for that kernel on &amp;quot;TEST MACHINE&amp;quot;. Add kernel options/kernel parameters like kgddbwait and kgdboc=ttyS0,115200&lt;br /&gt;
    For e.g., kernel /vmlinux ro root=LABEL=/ rhgb quiet crashkernel=128M@16M kgddbwait kgdboc=ttyS0,115200&lt;br /&gt;
kgdbwait -- &amp;gt; This will make Kernel to wait on boot time and will expect someone to connect to it and give further commands&lt;br /&gt;
kgdboc --&amp;gt; This is a KGDB I/O driver and we are supplying two arguments. ttyS0 will tell that communication will happen on Serial Port 0 and 115200 is the baudrate.&lt;br /&gt;
&lt;br /&gt;
6. Now boot the Kernel with those kernel parameters.&lt;br /&gt;
&lt;br /&gt;
7. On dev machine, start GDB session.&lt;br /&gt;
    [dev@einfochips]gdb vmlinux&lt;br /&gt;
The argument vmlinux file is the file that is created with Debug symbols.&lt;br /&gt;
It will be of much larger size and more than likely to be in the directory where you gave &amp;quot;make&amp;quot; command..&lt;br /&gt;
&lt;br /&gt;
8. Assuming that on &amp;quot;DEVELOPMENT MACHINE&amp;quot; you have set serial interface baudrate as 115200. Connect to the &amp;quot;TEST MACHINE&amp;quot; with target command.&lt;br /&gt;
    (gdb)target remote /dev/ttyS0&lt;br /&gt;
&lt;br /&gt;
9. This will stop your Kernel booting on &amp;quot;TEST MACHINE&amp;quot; and will give control to your &amp;quot;DEVELOPMENT MACHINE&amp;quot;. Now, you can do Single-stepping or put breakpoints and etc.&lt;br /&gt;
&lt;br /&gt;
10. Once your Kernel is running on &amp;quot;TEST MACHINE&amp;quot; and you want control over your running kernel from &amp;quot;DEVELOPMENT MACHINE&amp;quot;,&lt;br /&gt;
You have to send MANUALLY on TEST machine SysRq command. So, on &amp;quot;TEST MACHINE&amp;quot; press SysRq + g &lt;br /&gt;
    (i.e., press &amp;quot;ALT&amp;quot; key then Press &amp;quot;PrintScreen&amp;quot; Key and then Press &amp;quot;g&amp;quot; key)&lt;br /&gt;
&lt;br /&gt;
== There are several possible problems that you may face ==&lt;br /&gt;
1. Your Kerenel is booted and SysRq+g is not working.&lt;br /&gt;
    [r00t@einfochips] echo 1 &amp;gt; /proc/sys/kernel/sysrq&lt;br /&gt;
This will enable sending SysRq commands.&lt;br /&gt;
&lt;br /&gt;
2. You may find some time that while stopping execution through SysRq key on &amp;quot;TEST MACHINE&amp;quot;, it stops but then it is not able to communicate over serial cable with &amp;quot;DEVELOPMENT MACHINE&amp;quot;. The reason can be, your KGDB I/O driver is not passed arguments properly and you may need to reconfigure the driver by following way,&lt;br /&gt;
    [root@einfochips]echo &amp;quot;ttyS0,115200&amp;quot; &amp;gt; /sys/modules/&amp;lt;module name&amp;gt;/parameters&lt;br /&gt;
&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Embedded_wiki_issues_list</id>
		<title>Embedded wiki issues list</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Embedded_wiki_issues_list"/>
				<updated>2011-05-14T23:53:11Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Elinux issues]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Elinux_issues</id>
		<title>Elinux issues</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Elinux_issues"/>
				<updated>2011-05-14T23:53:05Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Merge from Embedded wiki issues list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedsMerge|Volunteer_editor_tasks}}&lt;br /&gt;
This is the eLinux issues page.  This is a raw list of items that need to be worked on for this wiki, based on feedback from various sources.&lt;br /&gt;
&lt;br /&gt;
Here is a list of issues to fix on the eLinux wiki:&lt;br /&gt;
&lt;br /&gt;
== missing pages (top list) ==&lt;br /&gt;
* missing Project:Copyrights from link in statement on edit form&lt;br /&gt;
&lt;br /&gt;
== content fixes ==&lt;br /&gt;
Have [[Category:Needs Update]], but maybe need simple list of items to fix (maybe this page is it)&lt;br /&gt;
** something someone can fix with 10 minutes or less time&lt;br /&gt;
*** one possible suggestion, global page review - review a page, take it off the list&lt;br /&gt;
&lt;br /&gt;
=== events page ===&lt;br /&gt;
*events page is out of date&lt;br /&gt;
** recent events:&lt;br /&gt;
*** kernel summit&lt;br /&gt;
*** LinuxConf EU&lt;br /&gt;
*** O'reilley thing?&lt;br /&gt;
*** Ubuntu have something?&lt;br /&gt;
*** The PPC conference http://www.power.org/devcon/07/schedule/&lt;br /&gt;
** can possibly cherry-pick from&lt;br /&gt;
*** the LWN events/calendar page&lt;br /&gt;
*** linuxdevice events page&lt;br /&gt;
&lt;br /&gt;
* Would be nice if &amp;quot;recent changes&amp;quot; was a human edited weekly pick of important page updates.&lt;br /&gt;
&lt;br /&gt;
== content building ==&lt;br /&gt;
* need to create a list of authored content&lt;br /&gt;
* need a template for professional papers&lt;br /&gt;
* need recent periodical content&lt;br /&gt;
* monthly feature is empty&lt;br /&gt;
* Do we want pages listing all kind of products (like here: [[Products]]). There are way too many products to list, so such a list is unwieldy and hardly to maintain.&lt;br /&gt;
** The same might hold for chips &amp;amp; vendors and maybe even for distributions.&lt;br /&gt;
* Although contributions are under GPL it would be nice if there was some form of attribution. http://www.nslu2-linux.org/ does that (imho) nicely (but they use PMwiki).&lt;br /&gt;
* http://www.elinux.org/Special:Wantedcategories seems to suggest that there are some categories that are never made and actually only have one or two pages. Guess this should be resolved as well.&lt;br /&gt;
&lt;br /&gt;
== site management ==&lt;br /&gt;
* admins needs ssh access to eLinux.org site&lt;br /&gt;
* Tim doesn't have sysop privileges on the site&lt;br /&gt;
* Organisational issues have their own page at [[Embedded wiki to-do list]]&lt;br /&gt;
&lt;br /&gt;
== Uncategorized issues ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Embedded_wiki_issues_list</id>
		<title>Embedded wiki issues list</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Embedded_wiki_issues_list"/>
				<updated>2011-05-14T23:46:58Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Merge with [Elinux issues]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedsMerge|Elinux_issues}}&lt;br /&gt;
&lt;br /&gt;
This page contains issues relating to the content of the wiki.&lt;br /&gt;
Organisational issues have their own page at [[Embedded wiki to-do list]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Embedded_wiki_issues_list</id>
		<title>Embedded wiki issues list</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Embedded_wiki_issues_list"/>
				<updated>2011-05-14T23:37:28Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Remove duplicated material&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedsMerge|Elinux_issues}}&lt;br /&gt;
&lt;br /&gt;
This page contains issues relating to the content of the wiki.&lt;br /&gt;
Organisational issues have their own page at [[Embedded wiki to-do list]]&lt;br /&gt;
&lt;br /&gt;
* Do we want pages listing all kind of products (like here: [[Products]]). There are way too many products to list, so such a list is unwieldy and hardly to maintain.&lt;br /&gt;
* The same might hold for chips &amp;amp; vendors and maybe even for distributions.&lt;br /&gt;
* Although contributions are under GPL it would be nice if there was some form of attribution. http://www.nslu2-linux.org/ does that (imho) nicely (but they use PMwiki).&lt;br /&gt;
* http://www.elinux.org/Special:Wantedcategories seems to suggest that there are some categories that are never made and actually only have one or two pages. Guess this should be resolved as well.&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Elinux_issues</id>
		<title>Elinux issues</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Elinux_issues"/>
				<updated>2011-05-14T23:28:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Removed obsolete items&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NeedsMerge|Volunteer_editor_tasks}}&lt;br /&gt;
This is the eLinux issues page.  This is a raw list of items that need to be worked on for this wiki, based on feedback from various sources.&lt;br /&gt;
&lt;br /&gt;
Here is a list of issues to fix on the eLinux wiki:&lt;br /&gt;
&lt;br /&gt;
== missing pages (top list) ==&lt;br /&gt;
* missing Project:Copyrights from link in statement on edit form&lt;br /&gt;
&lt;br /&gt;
== content fixes ==&lt;br /&gt;
Have [[Category:Needs Update]], but maybe need simple list of items to fix (maybe this page is it)&lt;br /&gt;
** something someone can fix with 10 minutes or less time&lt;br /&gt;
*** one possible suggestion, global page review - review a page, take it off the list&lt;br /&gt;
&lt;br /&gt;
=== events page ===&lt;br /&gt;
*events page is out of date&lt;br /&gt;
** recent events:&lt;br /&gt;
*** kernel summit&lt;br /&gt;
*** LinuxConf EU&lt;br /&gt;
*** O'reilley thing?&lt;br /&gt;
*** Ubuntu have something?&lt;br /&gt;
*** The PPC conference http://www.power.org/devcon/07/schedule/&lt;br /&gt;
** can possibly cherry-pick from&lt;br /&gt;
*** the LWN events/calendar page&lt;br /&gt;
*** linuxdevice events page&lt;br /&gt;
&lt;br /&gt;
* Would be nice if &amp;quot;recent changes&amp;quot; was a human edited weekly pick of important page updates.&lt;br /&gt;
&lt;br /&gt;
== content building ==&lt;br /&gt;
* need to create a list of authored content&lt;br /&gt;
* need a template for professional papers&lt;br /&gt;
* need recent periodical content&lt;br /&gt;
* monthly feature is empty&lt;br /&gt;
&lt;br /&gt;
== site management ==&lt;br /&gt;
* admins needs ssh access to eLinux.org site&lt;br /&gt;
* Tim doesn't have sysop privileges on the site&lt;br /&gt;
&lt;br /&gt;
== Uncategorized issues ==&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Uart2_Configuration</id>
		<title>Hammer Uart2 Configuration</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Uart2_Configuration"/>
				<updated>2011-05-14T16:48:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The default configuration for the GPH6 and GPH7 pins on the s3c2410 are as GPIO inputs. To configure these pins for usage as a second uart add the following commented section to the arch/arm/mach-s3c2410/mach-tct_hammer.c in the linux source tree, future versions of the Hammer kernel source will include this entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static void __init tct_hammer_init(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPF0, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1);&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPC12, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPC12, 1);&lt;br /&gt;
&lt;br /&gt;
/* uncomment these to enable the second serial port */&lt;br /&gt;
/*&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH6, S3C2410_GPH6_TXD2);&lt;br /&gt;
	s3c2410_gpio_pullup(S3C2410_GPH6, 1);&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_RXD2);&lt;br /&gt;
	s3c2410_gpio_pullup(S3C2410_GPH7, 1);&lt;br /&gt;
*/&lt;br /&gt;
#ifdef CONFIG_FB_S3C2410&lt;br /&gt;
	s3c24xx_fb_set_platdata(&amp;amp;tct_hammer_lcd_info);&lt;br /&gt;
#endif&lt;br /&gt;
	platform_add_devices(tct_hammer_devices, ARRAY_SIZE(tct_hammer_devices));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after recompiling the kernel and loading it onto the Hammer, the port will be accessable via /dev/ttySAC2.&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LED_Userspace_App</id>
		<title>Hammer LED Userspace App</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LED_Userspace_App"/>
				<updated>2011-05-14T16:48:30Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an example program that uses the /dev/mem device node to access the physical memory registers directly([[media:ledblink.c|source]])&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
to compile the source use your toolchain command line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#arm-linux-uclibc-gcc -o ledblink ledblink.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then transfer the ledblink binary to the hammer file system. make sure that the permissions on the file are set to executable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#chmod 755 ledblink&lt;br /&gt;
#./ledblink&lt;br /&gt;
&lt;br /&gt;
Usage:  ./ledblink { seconds }&lt;br /&gt;
        seconds : number of seconds to blink&lt;br /&gt;
&lt;br /&gt;
#./ledblink 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this will cause the onboard LED to blink for 20 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * ledblink.c: Simple program to blink a led on GPIO F0&lt;br /&gt;
 *&lt;br /&gt;
 *	Copyright (c) 2008 TinCanTools&lt;br /&gt;
 *	David Anders &amp;lt;danders@amltd.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 * it under the terms of the GNU General Public License as published by&lt;br /&gt;
 * the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 * (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This program is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 * GNU General Public License for more details.&lt;br /&gt;
 * &lt;br /&gt;
 * You should have received a copy of the GNU General Public License&lt;br /&gt;
 * along with this program; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/mman.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
#define MAP_SIZE 4096UL		/* the size of one page of virtual memory */&lt;br /&gt;
#define MAP_MASK (MAP_SIZE - 1)	/* mask used for the one page of virtual memory */&lt;br /&gt;
&lt;br /&gt;
#define GPIOF_CON	0x56000050 /* physical address of the GPIO F control register */&lt;br /&gt;
#define GPIOF_DAT	0x56000054 /* physical address of the GPIO F data register */&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
    int fd,count;&lt;br /&gt;
    void *map_base, *virt_addr; &lt;br /&gt;
    unsigned long read_result, writeval;&lt;br /&gt;
&lt;br /&gt;
    if(argc &amp;lt; 2) {&lt;br /&gt;
	fprintf(stderr, &amp;quot;\nUsage:\t%s { seconds }\n&amp;quot;&lt;br /&gt;
	    &amp;quot;\tseconds : number of seconds to blink\n\n&amp;quot;,&lt;br /&gt;
	    argv[0]);&lt;br /&gt;
	exit(1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    count = strtoul(argv[1], 0, 0);&lt;br /&gt;
&lt;br /&gt;
    /* open the memory device file descriptor */&lt;br /&gt;
    if((fd = open(&amp;quot;/dev/mem&amp;quot;, O_RDWR | O_SYNC)) == -1)&lt;br /&gt;
	return -1;&lt;br /&gt;
    &lt;br /&gt;
    /* Map one page */&lt;br /&gt;
    map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, GPIOF_CON &amp;amp; ~MAP_MASK);&lt;br /&gt;
    if(map_base == (void *) -1)&lt;br /&gt;
	return -1;&lt;br /&gt;
    &lt;br /&gt;
    /* set the virtual memory address to the GPIO F control register */&lt;br /&gt;
    virt_addr = map_base + (GPIOF_CON &amp;amp; MAP_MASK);&lt;br /&gt;
&lt;br /&gt;
    /* read the current value for GPIO F control register */&lt;br /&gt;
    read_result = *((unsigned long *) virt_addr);&lt;br /&gt;
&lt;br /&gt;
    writeval = read_result;&lt;br /&gt;
    writeval &amp;amp;= ~0x03;		/* mask off the first two bits */&lt;br /&gt;
    writeval |= 0x01;		/* set gpio f0 to output with value of 0x01 */ &lt;br /&gt;
&lt;br /&gt;
    /* write the modified value to GPIO F0 control register to set GPIO F0 to output */&lt;br /&gt;
    *((unsigned long *) virt_addr) = writeval;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* change virtual memory address to GPIO F data register */&lt;br /&gt;
    virt_addr = map_base + (GPIOF_DAT &amp;amp; MAP_MASK);&lt;br /&gt;
&lt;br /&gt;
    for ( count ; count &amp;gt; 0 ; count--) { &lt;br /&gt;
&lt;br /&gt;
	/* read the current value for GPIO F data register */&lt;br /&gt;
	read_result = *((unsigned long *) virt_addr);&lt;br /&gt;
	writeval = read_result;&lt;br /&gt;
    &lt;br /&gt;
	if ( (read_result&amp;amp;(1&amp;lt;&amp;lt;0)) )&lt;br /&gt;
	    writeval &amp;amp;= ~(1&amp;lt;&amp;lt;0);	/* set GPIO F0 to a value of 0(low-on) */&lt;br /&gt;
	else&lt;br /&gt;
	    writeval |= (1&amp;lt;&amp;lt;0);		/* set GPIO F0 to a value of 1(high-off) */ &lt;br /&gt;
&lt;br /&gt;
	/* write the modified value to the GPIO F0 data register */&lt;br /&gt;
	*((unsigned long *) virt_addr) = writeval;&lt;br /&gt;
	sleep(1);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* read the current value for GPIO F control register */&lt;br /&gt;
    read_result = *((unsigned long *) virt_addr);&lt;br /&gt;
&lt;br /&gt;
    /* make sure the LED is off when leaving the program */&lt;br /&gt;
    writeval = read_result;&lt;br /&gt;
    writeval |= (1&amp;lt;&amp;lt;0);		/* set GPIO F0 to a value of 1(high-off) */ &lt;br /&gt;
&lt;br /&gt;
    /* write the modified value to the GPIO F0 data register */&lt;br /&gt;
    *((unsigned long *) virt_addr) = writeval;&lt;br /&gt;
&lt;br /&gt;
    /* unmap the virtual memory before exiting the program */&lt;br /&gt;
    if(munmap(map_base, MAP_SIZE) == -1)&lt;br /&gt;
	return -1;&lt;br /&gt;
	    &lt;br /&gt;
    close(fd);&lt;br /&gt;
    return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LED_Driver_Module</id>
		<title>Hammer LED Driver Module</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LED_Driver_Module"/>
				<updated>2011-05-14T16:48:15Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;this is an example kernel module that will blink the onboard LED connected to GPIO F0 ([[media:ledblink.tar.gz|source]])&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#tar zxvf ledblink.tar.gz&lt;br /&gt;
#cd ledblink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
NOTE: If trying to make against kernel 2.6.29 change #include of arch/arm/regs-gpio to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;mach/regs-gpio.h&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#make KERNEL_SRC=/home/foo/bar/hammer/linux-2.6.22&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: for more information about the contents and function of the &amp;lt;br&amp;gt;&lt;br /&gt;
included Makefile please see the [http://tldp.org/LDP/lkmpg/2.6/html/ The Linux Kernel Module Programming Guide]&lt;br /&gt;
&lt;br /&gt;
this will generate the ledblink.ko file which can be transfer to your hammer and loaded using the insmod command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#insmod ledblink.ko&lt;br /&gt;
LED Blink Module Loaded&lt;br /&gt;
Dec 31 17:10:05 Hammer user.info kernel: LED Blink Module Loaded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove the module use the rmmod command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#rmmod ledblink.ko&lt;br /&gt;
LED Blink Module Unloaded&lt;br /&gt;
Dec 31 17:10:20 Hammer user.info kernel: LED Blink Module Unloaded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Source Code==&lt;br /&gt;
NOTE: this source makes reference to the HZ kernel value and also to &amp;quot;jiffies&amp;quot;,&amp;lt;br&amp;gt;&lt;br /&gt;
for more information on these see the [[Kernel_Timer_Systems]] documentation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &lt;br /&gt;
 *  ledblink.c - basic led blinking kernel module&lt;br /&gt;
 *&lt;br /&gt;
 *	Copyright (c) 2008 TinCanTools&lt;br /&gt;
 *	David Anders &amp;lt;danders@amltd.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 * it under the terms of the GNU General Public License as published by&lt;br /&gt;
 * the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 * (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This program is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 * GNU General Public License for more details.&lt;br /&gt;
 * &lt;br /&gt;
 * You should have received a copy of the GNU General Public License&lt;br /&gt;
 * along with this program; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;linux/module.h&amp;gt;	/* Needed by all modules */&lt;br /&gt;
#include &amp;lt;linux/kernel.h&amp;gt;	/* Needed for KERN_INFO */&lt;br /&gt;
#include &amp;lt;linux/timer.h&amp;gt;	/* Needed for kernel timer */&lt;br /&gt;
#include &amp;lt;asm/arch/regs-gpio.h&amp;gt;	/* Needed for GPIO defines */&lt;br /&gt;
#include &amp;lt;asm/io.h&amp;gt;		/* Needed for s3c2410 functions */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static int blinkinterval = HZ / 2;&lt;br /&gt;
static struct timer_list blink_timer;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void led_blink(unsigned long dummy)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    /* the LED is active(on) when low(0) */&lt;br /&gt;
    &lt;br /&gt;
    if (s3c2410_gpio_getpin(S3C2410_GPF0) == 0)	/* check the current value of GPIO F0 */&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1);	/* turn LED off */&lt;br /&gt;
&lt;br /&gt;
    else &lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 0);	/* turn LED on */&lt;br /&gt;
&lt;br /&gt;
    mod_timer (&amp;amp;blink_timer, jiffies + blinkinterval); /* restart the timer */&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int init_module(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPF0, S3C2410_GPIO_OUTPUT);	/* set the GPIO line F0 to an output */&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1); /* make sure the LED starts in the off setting */&lt;br /&gt;
&lt;br /&gt;
	printk(KERN_INFO &amp;quot;LED Blink Module Loaded\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	init_timer (&amp;amp;blink_timer);&lt;br /&gt;
	blink_timer.function = led_blink;&lt;br /&gt;
	mod_timer (&amp;amp;blink_timer, jiffies + blinkinterval);&lt;br /&gt;
&lt;br /&gt;
	/* &lt;br /&gt;
	 * A non 0 return means init_module failed; module can't be loaded. &lt;br /&gt;
	 */&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void cleanup_module(void)&lt;br /&gt;
{&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1);	/* make sure the LED is off when exiting */&lt;br /&gt;
&lt;br /&gt;
	del_timer_sync(&amp;amp;blink_timer);		/* sync and delete the timer before exiting */&lt;br /&gt;
	printk(KERN_INFO &amp;quot;LED Blink Module Unloaded\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
MODULE_LICENSE(&amp;quot;GPL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LED_Driver</id>
		<title>Hammer LED Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LED_Driver"/>
				<updated>2011-05-14T16:48:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Software==&lt;br /&gt;
LED's connected to GPIO's can be accessed in several ways:&lt;br /&gt;
&lt;br /&gt;
* [[Hammer LED Class Driver]]&lt;br /&gt;
* [[Hammer LED Driver Module]]&lt;br /&gt;
* [[Hammer LED Userspace App]]&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
the most common way of operating a LED via a gpio is to use an active low configuration:&lt;br /&gt;
&lt;br /&gt;
[[Image:led-example.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LED_Class_Driver</id>
		<title>Hammer LED Class Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LED_Class_Driver"/>
				<updated>2011-05-14T16:47:48Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UserSpace Access ==&lt;br /&gt;
&lt;br /&gt;
the LED onboard the hammer as well as the LED on the carrier board can be accessed from userspace via the sysfs interface. example interfaces are in /sys/devices/platform/s3c24xx_led.0/leds:led0/ and /sys/devices/platform/s3c24xx_led.1/leds:led1/. both directories include a file entry &amp;quot;brightness&amp;quot;. to turn a LED on, echo a non zero value to the brightness file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/devices/platform/s3c24xx_led.0/leds:led0/brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to turn a LED off, echo a zero to the the brightness file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/s3c24xx_led.0/leds:led0/brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you can also check the current status of the LED by using cat on the brightness file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/devices/platform/s3c24xx_led.0/leds:led0/brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding New LEDS ==&lt;br /&gt;
&lt;br /&gt;
a new LED connected via a GPIO can be defined in the linux-2.6.xx/arch/arm/mach-s3c2410/mach-tct_hammer.c file. each LED will need to include some platform data and a platform device definition. Make sure the platform data and the platform device are above the platform declaration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static struct s3c24xx_led_platdata tct_hammer_pdata_led0 = {&lt;br /&gt;
	.gpio		= S3C2410_GPF0,&lt;br /&gt;
	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,&lt;br /&gt;
	.name		= &amp;quot;led0&amp;quot;,&lt;br /&gt;
	.def_trigger	= &amp;quot;timer&amp;quot;,&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
static struct platform_device tct_hammer_led0 = {&lt;br /&gt;
	.name		= &amp;quot;s3c24xx_led&amp;quot;,&lt;br /&gt;
	.id		= 0,&lt;br /&gt;
	.dev		= {&lt;br /&gt;
		.platform_data = &amp;amp;tct_hammer_pdata_led0,&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also include: '&amp;amp;tct_hammer_led0' in the platform declaration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 static struct platform_device *tct_hammer_devices[] __initdata = {&lt;br /&gt;
	&amp;amp;tct_hammer_led0,&lt;br /&gt;
	&amp;amp;s3c_device_adc,&lt;br /&gt;
	&amp;amp;s3c_device_wdt,&lt;br /&gt;
	&amp;amp;s3c_device_i2c0,&lt;br /&gt;
	&amp;amp;s3c_device_usb,&lt;br /&gt;
	&amp;amp;s3c_device_rtc,&lt;br /&gt;
	&amp;amp;s3c_device_usbgadget,&lt;br /&gt;
	&amp;amp;s3c_device_sdi,&lt;br /&gt;
 #ifdef CONFIG_MTD_PARTITIONS&lt;br /&gt;
	&amp;amp;tct_hammer_device_nor,&lt;br /&gt;
 #endif&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can reflash the Kernel.&lt;br /&gt;
&lt;br /&gt;
this uses the standard LEDS class in the main kernel tree. for additional information see the linux-2.6.xx/Documentation/leds-class.txt file.&lt;br /&gt;
&lt;br /&gt;
== Nail Board LED's ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static struct s3c24xx_led_platdata tct_hammer_pdata_led1 = {&lt;br /&gt;
	.gpio		= S3C2410_GPH0,&lt;br /&gt;
	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,&lt;br /&gt;
	.name		= &amp;quot;led1&amp;quot;,&lt;br /&gt;
	.def_trigger	= &amp;quot;timer&amp;quot;,&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
static struct s3c24xx_led_platdata tct_hammer_pdata_led2 = {&lt;br /&gt;
	.gpio		= S3C2410_GPH1,&lt;br /&gt;
	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,&lt;br /&gt;
	.name		= &amp;quot;led2&amp;quot;,&lt;br /&gt;
	.def_trigger	= &amp;quot;timer&amp;quot;,&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static struct platform_device tct_hammer_led1 = {&lt;br /&gt;
	.name		= &amp;quot;s3c24xx_led&amp;quot;,&lt;br /&gt;
	.id		= 1,&lt;br /&gt;
	.dev		= {&lt;br /&gt;
		.platform_data = &amp;amp;tct_hammer_pdata_led1,&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
static struct platform_device tct_hammer_led2 = {&lt;br /&gt;
	.name		= &amp;quot;s3c24xx_led&amp;quot;,&lt;br /&gt;
	.id		= 2,&lt;br /&gt;
	.dev		= {&lt;br /&gt;
		.platform_data = &amp;amp;tct_hammer_pdata_led2,&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you will also need to add some gpio setup in the machine init function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static void __init tct_hammer_init(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPF0, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1);&lt;br /&gt;
&lt;br /&gt;
/* add these lines to setup the leds on the nail board */&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH0, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPH0, 1);&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH1, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPH1, 1);&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPC12, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPC12, 1);&lt;br /&gt;
&lt;br /&gt;
/*uncomment these these to enable the second serial port */&lt;br /&gt;
/*&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH6, S3C2410_GPH6_TXD0);&lt;br /&gt;
	s3c2410_gpio_pullup(S3C2410_GPH6, 1);&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_RXD0);&lt;br /&gt;
	s3c2410_gpio_pullup(S3C2410_GPH7, 1);&lt;br /&gt;
*/&lt;br /&gt;
#ifdef CONFIG_FB_S3C2410&lt;br /&gt;
	s3c24xx_fb_set_platdata(&amp;amp;tct_hammer_lcd_info);&lt;br /&gt;
#endif&lt;br /&gt;
	platform_add_devices(tct_hammer_devices, ARRAY_SIZE(tct_hammer_devices));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in addition you will need to add the leds to the device list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static struct platform_device *tct_hammer_devices[] __initdata = {&lt;br /&gt;
#ifdef CONFIG_FB_S3C2410&lt;br /&gt;
	&amp;amp;s3c_device_lcd,&lt;br /&gt;
#endif&lt;br /&gt;
	&amp;amp;s3c_device_adc,&lt;br /&gt;
	&amp;amp;s3c_device_wdt,&lt;br /&gt;
	&amp;amp;s3c_device_i2c,&lt;br /&gt;
	&amp;amp;s3c_device_usb,&lt;br /&gt;
 	&amp;amp;s3c_device_rtc,&lt;br /&gt;
	&amp;amp;s3c_device_usbgadget,&lt;br /&gt;
        &amp;amp;s3c_device_sdi,&lt;br /&gt;
	&amp;amp;tct_hammer_led0,&lt;br /&gt;
/* add these two entries for the new LEDs */&lt;br /&gt;
	&amp;amp;tct_hammer_led1,&lt;br /&gt;
	&amp;amp;tct_hammer_led2,&lt;br /&gt;
	&amp;amp;tct_hammer_beeper,&lt;br /&gt;
	&amp;amp;tct_hammer_buttons,&lt;br /&gt;
#ifdef CONFIG_MTD_PARTITIONS&lt;br /&gt;
	&amp;amp;tct_hammer_device_nor,&lt;br /&gt;
#endif&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LCD_8bit_Color_STN</id>
		<title>Hammer LCD 8bit Color STN</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LCD_8bit_Color_STN"/>
				<updated>2011-05-14T16:47:26Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a &amp;quot;HowTo&amp;quot; for the Panasonic EDMGRB8KJF ([[media:edmgrb8jf.pdf|Datasheet]]) available from [http://store.earthlcd.com/EDMGRB8KJF?sc=7&amp;amp;category=256 EarthLCD] to be used with the [[Hammer_Board|Hammer]] development module from [[TinCanTools]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' This screen is an 8-bit STN screen, however in order to use it on the S3C2410A Hammer 12-bit STN must be used. The last 4 bits are simply masked off. If you have intentions of using this screen for frameworks such as Qt4 or others please first verify that they have 12-bit color support.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
{|border=&amp;quot;3&amp;quot;&lt;br /&gt;
|+Matching Pinouts&lt;br /&gt;
!Pin Number||Hammer||Note||LCD||Pin Number&lt;br /&gt;
|-&lt;br /&gt;
|16||style=&amp;quot;background:#FFFF40&amp;quot; |VM||style=&amp;quot;background:#80FF80&amp;quot; |Display On/Off||style=&amp;quot;background:#2099FF&amp;quot; |DISPON||16&lt;br /&gt;
|-&lt;br /&gt;
|17||style=&amp;quot;background:#FFFF40&amp;quot; |VFRAME||style=&amp;quot;background:#80FF80&amp;quot; |LCD Vertical sync||style=&amp;quot;background:#2099FF&amp;quot; |FRM||20&lt;br /&gt;
|-&lt;br /&gt;
|18||style=&amp;quot;background:#FFFF40&amp;quot; |VLINE||style=&amp;quot;background:#80FF80&amp;quot; |LCD Horizontal sync||style=&amp;quot;background:#2099FF&amp;quot; |LOAD||14&lt;br /&gt;
|-&lt;br /&gt;
|19||style=&amp;quot;background:#FFFF40&amp;quot; |VCLK||style=&amp;quot;background:#80FF80&amp;quot; |LCD pixel clock||style=&amp;quot;background:#2099FF&amp;quot; |CP||12&lt;br /&gt;
|-&lt;br /&gt;
|21||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD0||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 0||style=&amp;quot;background:#2099FF&amp;quot; |Data0||9&lt;br /&gt;
|-&lt;br /&gt;
|22||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD1||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 1||style=&amp;quot;background:#2099FF&amp;quot; |Data1||8&lt;br /&gt;
|-&lt;br /&gt;
|23||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD2||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 2||style=&amp;quot;background:#2099FF&amp;quot; |Data2||7&lt;br /&gt;
|-&lt;br /&gt;
|24||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD3||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 3||style=&amp;quot;background:#2099FF&amp;quot; |Data3||6&lt;br /&gt;
|-&lt;br /&gt;
|25||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD4||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 4||style=&amp;quot;background:#2099FF&amp;quot; |Data4||4&lt;br /&gt;
|-&lt;br /&gt;
|26||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD5||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 5||style=&amp;quot;background:#2099FF&amp;quot; |Data5||3&lt;br /&gt;
|-&lt;br /&gt;
|27||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD6||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 6||style=&amp;quot;background:#2099FF&amp;quot; |Data6||2&lt;br /&gt;
|-&lt;br /&gt;
|28||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD7||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 7||style=&amp;quot;background:#2099FF&amp;quot; |Data7||1&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |+3.3V||style=&amp;quot;background:#2099FF&amp;quot; |VDD||10&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |+3.3V||style=&amp;quot;background:#2099FF&amp;quot; |VDD||11&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |+3.3V||style=&amp;quot;background:#2099FF&amp;quot; |VDD||13&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Ground||style=&amp;quot;background:#2099FF&amp;quot; |VSS||5&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Ground||style=&amp;quot;background:#2099FF&amp;quot; |VSS||15&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Ground||style=&amp;quot;background:#2099FF&amp;quot; |VSS||17&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Ground||style=&amp;quot;background:#2099FF&amp;quot; |VSS||19&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Contrast +1.95V (+-0.8V)||style=&amp;quot;background:#2099FF&amp;quot; |VCON||18&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' VCON should be variable control to adjust contrast and the VDD should have separate power control, i.e. via a gpio&lt;br /&gt;
NOTE: 3.3V from the Hammer dev kit is not enough power and a seperate regulator will be required to power the device. Please make sure you also tie together the ground pins from the external regulator and the dev board.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' This display also requires a backlight inverter (see datasheet for requirements)&lt;br /&gt;
==Pictures==&lt;br /&gt;
[[File:tincantools-login.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
We have a login prompt!&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:mixer-display.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Picture of LCD Display running a mixer console Ncurses GUI&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel 2.6.29.6 Build Notes==&lt;br /&gt;
In order to get this screen to work framebuffer support has to be built into your kernel.&lt;br /&gt;
  cd hammer/source/linux-2.6.29.6&lt;br /&gt;
  export ARCH=arm&lt;br /&gt;
  export CROSS_COMPILE=arm-linux-uclibc-&lt;br /&gt;
  make menuconfig &lt;br /&gt;
&lt;br /&gt;
  Device Drivers -&amp;gt;  Graphics Support -&amp;gt; Support for frame buffer devices&lt;br /&gt;
  Inside this sub menu add:&lt;br /&gt;
  [*] Enable Video Mode Handling Helpers&lt;br /&gt;
  &amp;lt;*&amp;gt; S3C2410 LCD framebuffer support&lt;br /&gt;
&lt;br /&gt;
  Under Device Drivers -&amp;gt; Graphics Support -&amp;gt; Console display driver support ADD&lt;br /&gt;
  Framebuffer Console Support&lt;br /&gt;
'''NOTE''': It is also a good idea to go ahead and add the boot logo.&lt;br /&gt;
&lt;br /&gt;
==Adding LCD to Machine File==&lt;br /&gt;
The next step is to add the display settings to your mach-tct_hammer.c file in ./arch/arm/s3c2410&lt;br /&gt;
If you have questions about this file please see the linux documentation ( I will try to make a patch for this at a later date)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open up your mach-tct_hammer.c file as mentioned above and verify the following include headers exist&lt;br /&gt;
  #include &amp;lt;asm/mach-types.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;mach/regs-lcd.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;mach/fb.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;mach/regs-gpio.h&amp;gt;&lt;br /&gt;
If they do not exist please add them.&lt;br /&gt;
&lt;br /&gt;
Next add this in the upper section of the file&lt;br /&gt;
&lt;br /&gt;
  /* LCD/VGA controller */&lt;br /&gt;
  #ifdef CONFIG_FB_S3C2410&lt;br /&gt;
  static struct s3c2410fb_display __initdata tct_hammer_lcd_info = {&lt;br /&gt;
  	.width		= 640,&lt;br /&gt;
  	.height		= 480,&lt;br /&gt;
  &lt;br /&gt;
  	.type		= S3C2410_LCDCON1_STN8,&lt;br /&gt;
  &lt;br /&gt;
  	.pixclock	= 120000, &lt;br /&gt;
  	.xres		= 640,&lt;br /&gt;
  	.yres		= 480,&lt;br /&gt;
  	.bpp		= 12,&lt;br /&gt;
  	.hsync_len	= 48,&lt;br /&gt;
  &lt;br /&gt;
  	.left_margin   = 4 &amp;lt;&amp;lt; (4 + 3),&lt;br /&gt;
    	.right_margin  = 8 &amp;lt;&amp;lt; 3,&lt;br /&gt;
  	.upper_margin	= 10,&lt;br /&gt;
  	.lower_margin	= 10,&lt;br /&gt;
  &lt;br /&gt;
  	.lcdcon5	= 2&lt;br /&gt;
  };&lt;br /&gt;
  /* LCD/VGA controller */&lt;br /&gt;
  &lt;br /&gt;
  static struct s3c2410fb_mach_info __initdata tct_hammer_fb_info = {&lt;br /&gt;
  &lt;br /&gt;
  	.displays = &amp;amp;tct_hammer_lcd_info,&lt;br /&gt;
  	.num_displays = 1,&lt;br /&gt;
  	.default_display = 0,&lt;br /&gt;
  &lt;br /&gt;
  	.gpccon =	0xaaaaa9aa,&lt;br /&gt;
  	.gpccon_mask =	0xffffffff,&lt;br /&gt;
  	.gpcup =	0x0000ffff,&lt;br /&gt;
  	.gpcup_mask =	0xffffffff,&lt;br /&gt;
  &lt;br /&gt;
 	.gpdcon =	0x00000000,&lt;br /&gt;
  	.gpdcon_mask =	0xffffffff,&lt;br /&gt;
  	.gpdup =	0x00000000,&lt;br /&gt;
  	.gpdup_mask =	0xffffffff,&lt;br /&gt;
  	.lpcsel     = ((0xCE6) &amp;amp; ~7) | 1&amp;lt;&amp;lt;4,&lt;br /&gt;
  };&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
These definitions are what notify the s3c2410fb driver how to configure itself in order to talk to the LCD display properly. We still have to tell the kernel to initialize these as well as configure the GPIO pins to run as the VD pins.&lt;br /&gt;
&lt;br /&gt;
In the *tct_hammer_devices[] definition add&lt;br /&gt;
  #ifdef CONFIG_FB_S3C2410&lt;br /&gt;
  	&amp;amp;s3c_device_lcd,&lt;br /&gt;
  #endif&lt;br /&gt;
Finally in the tct_hammer_init function add the following lines to the top of the function:&lt;br /&gt;
  #ifdef CONFIG_FB_S3C2410&lt;br /&gt;
      // disable LCD_DISPON.&lt;br /&gt;
    s3c2410_gpio_setpin(S3C2410_GPC4, 0);&lt;br /&gt;
    s3c2410_gpio_cfgpin(S3C2410_GPC4, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
  &lt;br /&gt;
      // connect any frame buffer.&lt;br /&gt;
    s3c24xx_fb_set_platdata(&amp;amp;tct_hammer_fb_info);&lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
NOTE: TODO - Add information for modifying the s3c2410fb.c file as a setting needs changed to swap colors&lt;br /&gt;
&lt;br /&gt;
Now build your kernel and install it on the device. The last thing you may have to do is configure your getty file in your rootfs to put a console on tty0 (this will include adding tty0 to your securetty list on some occasions)&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LCD_4bit_Grey_Scale_STN</id>
		<title>Hammer LCD 4bit Grey Scale STN</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LCD_4bit_Grey_Scale_STN"/>
				<updated>2011-05-14T16:44:43Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hammer supprts an LCD interface which can be configured to drive various kinds of displays.&lt;br /&gt;
The following is how I wired up a 16 shade greyscale, 4 bit single scan, 320 x 240 LCD panel.&lt;br /&gt;
&lt;br /&gt;
I used a Sharp LM32K10 display panel. &lt;br /&gt;
&lt;br /&gt;
*[http://www.esskabel.de/Datenblaetter/LCD-Specs/Sharp/LM/LM32K10.pdf LM32K10 Datasheet]&lt;br /&gt;
&lt;br /&gt;
[[Image:hammerlcd.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:driver.jpg]]&lt;br /&gt;
&lt;br /&gt;
The above schematic uses a 74AC244&lt;br /&gt;
&lt;br /&gt;
The driver interface can be done with either:&lt;br /&gt;
*[[media:74ac244.pdf|74AC244]]&lt;br /&gt;
*[[media:74ac245.pdf |74AC245]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The source of V- is left to the user, this panel requires about 7-10ma at -18-19VDC.&lt;br /&gt;
&lt;br /&gt;
I used an   *[http://www.datasheetarchive.com/NMA0515S-datasheet.html NMA0515S] with the V+ connection grounded, so its output is ~-30VDC at up to 33ma.&lt;br /&gt;
&lt;br /&gt;
The following circuit drops the -33V to -18V for use by the LCD panel.&lt;br /&gt;
&lt;br /&gt;
The transistor I used is a 2N3906 but any PNP device that can handle 100ma collector current will do.&lt;br /&gt;
[[Image:v-bias.jpg]]&lt;br /&gt;
&lt;br /&gt;
The Hammer signon message displayed on the LM32K10 LCD panel.&lt;br /&gt;
&lt;br /&gt;
[[Image:LM32K10.jpg]]&lt;br /&gt;
&lt;br /&gt;
LCD's that can be used with the Hammer using the same interface:&lt;br /&gt;
&lt;br /&gt;
*[http://www.esskabel.de/Datenblaetter/LCD-Specs/Sharp/LM/LM32010P.pdf LM32010P]&lt;br /&gt;
*[http://www.esskabel.de/Datenblaetter/LCD-Specs/Sharp/LM/LM32K101.PDF LM32K101]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other LCD panels with built in controllers that could be used with the Hammer(These panels have an on-board controller and do not use the S3C2410's lcd controller):&lt;br /&gt;
&lt;br /&gt;
*[http://www.allelectronics.com/cgi-bin/item/LCD-101/365/256_X_128_LCD_PANEL_.html  Hyundai # HG25504 256x128]&lt;br /&gt;
*[http://www.allelectronics.com/cgi-bin/item/LCD-115/365/240_X_64_LCD_DISPLAY_.html  Seiko #F2426 240x64]&lt;br /&gt;
*[http://www.bgmicro.com/index.asp?PageAction=VIEWPROD&amp;amp;ProdID=10816 AZ displays AGM1264F 128x64]&lt;br /&gt;
*[http://www.sparkfun.com/commerce/product_info.php?products_id=8568 XIAMEN OCULAR OPTICS GDM12864H 128x64]&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_I2C_Driver</id>
		<title>Hammer I2C Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_I2C_Driver"/>
				<updated>2011-05-14T16:44:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Start by entering the kernel config with the &amp;quot;make menuconfig&amp;quot; command, then choose the &amp;quot;Device Drivers&amp;quot; section&lt;br /&gt;
[[image:kernel1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use the up/down arrow keys to move to the &amp;quot;I2C Support&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use the up/down arrow keys to move to the &amp;quot;I2C Device Interface&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use the up/down arrow keys to move to the &amp;quot;I2C Hardware Bus support&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use the up/down arrow keys to move to the &amp;quot;S3C2410 I2C Driver&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel5.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tab to the &amp;quot;Exit&amp;quot; option and move back one screen&amp;lt;br&amp;gt;then use the up/down arrow keys to move to the &amp;quot;Miscellaneous I2C Chip Support&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel6.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
there are a number of supported base drivers to select&lt;br /&gt;
[[image:kernel7.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
i2c-* device files, usually found in the /dev directory on your system.  They make it possible to have user-space programs use the I2C bus.  Information on how to do this is contained in the file Documentation/i2c/dev-interface in the linux source tree.&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_How_to_use_LCD</id>
		<title>Hammer How to use LCD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_How_to_use_LCD"/>
				<updated>2011-05-14T16:43:03Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Hammer LCD 4bit Grey Scale STN| 4-Bit Greyscale STN HowTo Page]]&lt;br /&gt;
*[[Hammer LCD 8bit Color STN| 8-Bit Color STN HowTo Page]]&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_How_to_USB_FTDI</id>
		<title>Hammer How to USB FTDI</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_How_to_USB_FTDI"/>
				<updated>2011-05-14T16:42:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows how to configure the FTDI serial adapter for use with the hammer.&lt;br /&gt;
&lt;br /&gt;
==Configure the FTDI driver into the kernel==&lt;br /&gt;
 cd linux-2.6.22&lt;br /&gt;
 make menuconfig&lt;br /&gt;
 Enable the FTDI Serial Converter Driver&lt;br /&gt;
    Device Drivers ---&amp;gt;&lt;br /&gt;
       USB Support ---&amp;gt;&lt;br /&gt;
          USB Serial Converter Support ---&amp;gt;&lt;br /&gt;
    &amp;lt;M&amp;gt; USB FTDI Single Port Serial Driver (EXPERIMENTAL)&lt;br /&gt;
 Exit, saving your changes&lt;br /&gt;
 make&lt;br /&gt;
 make modules_install INSTALL_MOD_PATH=../buildroot/project_build_arm_nofpu/Hammer/root/&lt;br /&gt;
&lt;br /&gt;
This will compile the various kernel modules required and install them in the appropriate location in the root filesystem.&lt;br /&gt;
&lt;br /&gt;
==Make sure that /dev/ttyUSB0 gets created==&lt;br /&gt;
Since the /dev entries are staticlaly defined, we need to ensure that /dev/ttyUSB0 gets created. Edit the&lt;br /&gt;
buildroot/target/device/Samsung/Hammer/device_table.txt file. Copy the /dev/ttyS line to create a /dev/ttyUSB line. You need to change the name (ttyS to ttyUSB), the major (4 to 188), and the minor (64 to 0).&lt;br /&gt;
 /dev/ttyS   c   666 0   0   4   64  0   1   4&lt;br /&gt;
 /dev/ttyUSB c   666 0   0   188  0  0   1   4&lt;br /&gt;
&lt;br /&gt;
==Make sure that the ftdi_sio.ko module gets loaded at boot time==&lt;br /&gt;
Edit the buildroot/project_build_arm_nofpu/Hammer/root/etc/inittab file and add a new entry after the rcS entry:&lt;br /&gt;
 ::sysinit:/etc/init.d/rcS&lt;br /&gt;
 ::sysinit:/sbin/modprobe ftdi_sio&lt;br /&gt;
&lt;br /&gt;
==Recreate your rootfs image==&lt;br /&gt;
 cd buildroot&lt;br /&gt;
 rm binaries/Hammer/rootfs.arm_nofpu.ext2&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
==Compile a simple serial test program==&lt;br /&gt;
Compile [http://www.davehylands.com/hammer/sertest.c sertest.c] using the command line:&lt;br /&gt;
 arm-linux-gcc -lpthreads -o sertest sertest.c&lt;br /&gt;
&lt;br /&gt;
Transfer the sertest program to the hammer (I put it in /mnt/flash). You can use the rx command:&lt;br /&gt;
 rx /mnt/flash/sertest&lt;br /&gt;
 chmod +x /mnt/flash/sertest&lt;br /&gt;
and send the sertest program using X-Modem with your serial program. You can run sertest using the following command line:&lt;br /&gt;
 /mnt/flash/sertest -p /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
If you connect Tx to Rx on the FT232RL module, then you should see what you type.&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Ethernet</id>
		<title>Hammer Ethernet</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Ethernet"/>
				<updated>2011-05-14T16:42:25Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ethernet can be added to a Hammer Board using the following options:&lt;br /&gt;
&lt;br /&gt;
* [[Enc28j60]] - SPI Interface [[Hammer_How_to_Enc28j60|HowTo for Hammer]]&lt;br /&gt;
* WIZ810MJ - SPI Interface [http://wiznet.co.kr/pro_iin_wiz810mj.htm Product Page]&lt;br /&gt;
* USB Ethernet - [[Hammer_How_to_USB_Ethernet|HowTo for Hammer]]&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Buzzer_Driver</id>
		<title>Hammer Buzzer Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Buzzer_Driver"/>
				<updated>2011-05-14T16:42:08Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UserSpace Access ==&lt;br /&gt;
&lt;br /&gt;
the buzzer on the carrier board can be accessed from userspace via the sysfs interface. example interfaces are in the directory marked /sys/devices/platform/tct_hammer-beeper.0/input:input1. the directory include a file entry &amp;quot;beep&amp;quot; and &amp;quot;duration&amp;quot;. to generate a beep echo a non zero value to the beep file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 4096 &amp;gt; /sys/devices/platform/tct_hammer-beeper.0/input\:input1/beep&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a tone will be generated for the length set in the duration file. to see what the current value is do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/devices/platform/tct_hammer-beeper.0/input\:input1/duration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the duration is measured in .01 seconds, i.e. a value of 100 is 1 second. if the value of duration is set for zero, the tone will be generated continuously until a zero value is echo'd to the beep entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/tct_hammer-beeper.0/input\:input1/duration&lt;br /&gt;
echo 4096 &amp;gt; /sys/devices/platform/tct_hammer-beeper.0/input\:input1/beep&lt;br /&gt;
(tone generated)&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/tct_hammer-beeper.0/input\:input1/beep&lt;br /&gt;
(tone stops)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Button_Driver</id>
		<title>Hammer Button Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Button_Driver"/>
				<updated>2011-05-14T16:41:54Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UserSpace Access ==&lt;br /&gt;
&lt;br /&gt;
the carrier board push button can be accessed via the sysfs interface as well as a shell script functionality. the sysfs entry for the push button can be found in the directory mark /sys/devices/platform/gpio-keys.0 . the driver also looks for a shell script in /sbin called pb0.sh. this shell script can be used to start user land applications. here is the provided example shell script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ $1 = &amp;quot;down&amp;quot; ] ; then&lt;br /&gt;
    if [ -x /mnt/flash/scripts/pb0.down ] ; then&lt;br /&gt;
        /mnt/flash/scripts/pb0.down&lt;br /&gt;
    else&lt;br /&gt;
        current=`cat /sys/class/leds/led1/brightness`&lt;br /&gt;
        if [ &amp;quot;${current}&amp;quot; = 0 ] ; then &lt;br /&gt;
            echo 1 &amp;gt; /sys/class/leds/led1/brightness&lt;br /&gt;
        else&lt;br /&gt;
            echo 0 &amp;gt; /sys/class/leds/led1/brightness&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
else&lt;br /&gt;
    if [ -x /mnt/flash/scripts/pb0.up ] ; then&lt;br /&gt;
        /mnt/flash/scripts/pb0.up&lt;br /&gt;
    fi&lt;br /&gt;
fi# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding New PushButtons ==&lt;br /&gt;
&lt;br /&gt;
the gpio buttons are defined in the linux-2.6.xx/arch/arm/mach-s3c2410/mach-tct_hammer.c file. each button requires that the gpio be defined, a name, and key scan code associated with it. in addition standard platform data and platform device have to be defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static struct gpio_keys_button gpio_keys_buttons[] = {&lt;br /&gt;
    [0] = {&lt;br /&gt;
            .code	    = 0x26,&lt;br /&gt;
            .gpio           = S3C2410_GPG3,&lt;br /&gt;
            .active_low     = 0,&lt;br /&gt;
            .desc           = &amp;quot;PB0&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
static struct gpio_keys_platform_data gpio_keys_data = {&lt;br /&gt;
	    .buttons   = gpio_keys_buttons,&lt;br /&gt;
    	    .nbuttons   = ARRAY_SIZE(gpio_keys_buttons),&lt;br /&gt;
};&lt;br /&gt;
											&lt;br /&gt;
static struct platform_device tct_hammer_buttons = {&lt;br /&gt;
	.name		= &amp;quot;gpio-keys&amp;quot;,&lt;br /&gt;
	.id		= 0,&lt;br /&gt;
	.dev		= {&lt;br /&gt;
		.platform_data = &amp;amp;gpio_keys_data,&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PushButton Hardware ==&lt;br /&gt;
&lt;br /&gt;
[[Image:pb-example.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Board_Example_Kernel_Drivers</id>
		<title>Hammer Board Example Kernel Drivers</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Board_Example_Kernel_Drivers"/>
				<updated>2011-05-14T16:41:35Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[Hammer_LED_Driver|LEDS]]&lt;br /&gt;
* [[Hammer_Buzzer_Driver|Buzzer]]&lt;br /&gt;
* [[Hammer_Button_Driver|PushButton]]&lt;br /&gt;
* [[Hammer_I2C_Driver|I2C]]&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Board_Application_Notes</id>
		<title>Hammer Board Application Notes</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Board_Application_Notes"/>
				<updated>2011-05-14T16:41:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is where I would go looking for information on how to make use of the SIO, interrupt, and parallel I/O pins.  For example, the pins must be configured for their function.  How is that done?  Obviously by writing a bit to an I/O port, but how is that done?&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Bluetooth</id>
		<title>Hammer Bluetooth</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Bluetooth"/>
				<updated>2011-05-14T16:40:56Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Change to Category TCT-Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BlueTooth can be used with the following options:&lt;br /&gt;
&lt;br /&gt;
* UART BlueTooth - [http://www.sparkfun.com/commerce/categories.php?cPath=16_115 BlueTooth Uart Modules]&lt;br /&gt;
* USB BlueTooth - [http://www.qbik.ch/usb/devices/search_res.php?pattern=bluetooth Support Bluetooth Page]&lt;br /&gt;
&lt;br /&gt;
Dongles that work:&lt;br /&gt;
&lt;br /&gt;
* http://www.geeks.com/details.asp?invtid=ADPBTHPN&amp;amp;cat=NET&lt;br /&gt;
&lt;br /&gt;
Dongles that don't work:&lt;br /&gt;
&lt;br /&gt;
* http://www.geeks.com/details.asp?invtid=BLK-USBCYBERBLUE-BT&amp;amp;cpc=SCH&lt;br /&gt;
* http://www.geeks.com/details.asp?invtid=UBT3KH&amp;amp;cpc=SCH&lt;br /&gt;
&lt;br /&gt;
This may change as linux-bluetooth evolves.&lt;br /&gt;
&lt;br /&gt;
Most dongles based on CSR (Cambridge Silicon Radio) chipset work.&lt;br /&gt;
&lt;br /&gt;
Dongles based on Broadcom bcm203x chipsets require firmware to be loaded by the driver.&lt;br /&gt;
&lt;br /&gt;
Dongles based on Broadcom chipsets may work (someday).&lt;br /&gt;
&lt;br /&gt;
[[Category:TCT-Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Innovator_Instructions</id>
		<title>Innovator Instructions</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Innovator_Instructions"/>
				<updated>2011-05-13T17:55:12Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add to Category Hardware Hacking&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes how to load Linux on the Innovator development board.&lt;br /&gt;
Unfortunately, this is not an easy process, since the pre-installed firmware&lt;br /&gt;
(iBoot from PSI) does not support reflashing the device with Linux.&lt;br /&gt;
You need to install another piece of firmware (rrload) and use that&lt;br /&gt;
to write the bootloader to flash, and to load Linux or write Linux&lt;br /&gt;
to flash.&lt;br /&gt;
&lt;br /&gt;
Table Of Contents:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a description of the steps necessary to bootstrap my TI Innovator board.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how I ([[User:Tim_Bird|Tim Bird]]) did it:&lt;br /&gt;
&lt;br /&gt;
== Hardware Used ==&lt;br /&gt;
 - Abatron BDI2000&lt;br /&gt;
 - TI OMAP Deluxe Innovator development kit&lt;br /&gt;
 - Linux host system (running [[Red Hat]] 7.3)&lt;br /&gt;
&lt;br /&gt;
== Software and Configuration Files Used ==&lt;br /&gt;
 - Abatron&lt;br /&gt;
   - Abatron firmware image for ARM&lt;br /&gt;
   - Abatron setup program&lt;br /&gt;
   - innov925.cfg&lt;br /&gt;
   - reg925t.def&lt;br /&gt;
 - rrload&lt;br /&gt;
   - setup&lt;br /&gt;
   - rrload.com1&lt;br /&gt;
 - toolchains&lt;br /&gt;
   - Arm toolchains from Sony&lt;br /&gt;
 - kernel&lt;br /&gt;
   - celinux-031030.tar.bz2&lt;br /&gt;
 - root filesystem&lt;br /&gt;
   - [not documented yet]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Terms ==&lt;br /&gt;
BOB = Break-Out-Board&lt;br /&gt;
&lt;br /&gt;
== General Outline For Bootstrapping using Abatron JTAG and rrload ==&lt;br /&gt;
=== configure abatron ===&lt;br /&gt;
   - install abatron firmware&lt;br /&gt;
   - set network address for abatron&lt;br /&gt;
=== prepare target hardware and connections ===&lt;br /&gt;
   - disassemble innovator, and install separate boards in break-out-board&lt;br /&gt;
     - see instructions for Innovator Quick Start on PSI disk&lt;br /&gt;
   - connections:&lt;br /&gt;
     - host machine ethernet to hub (I configured as 192.168.1.1)&lt;br /&gt;
     - abatron ethernet to hub (I configured as 192.168.1.2)&lt;br /&gt;
     - BOB ethernet to hub (I configured as 192.168.1.3)&lt;br /&gt;
     - Abatron jtag to multi-ICE connector on BOB&lt;br /&gt;
       - use the 14-pin to 20-pin connector, labelled &amp;quot;BDI side&amp;quot; on one end and &amp;quot;ARM/[[XScale]]&amp;quot; on the other end&lt;br /&gt;
       - attach this cable with &amp;quot;BDI side&amp;quot; in &amp;quot;Target A&amp;quot; on the Abatron and with &amp;quot;ARM/[[XScale]]&amp;quot; on J13&lt;br /&gt;
       on the BOB&lt;br /&gt;
       - set JP1 and JP2 on the BOB with jumpers on pins 1-2.  This means put the jumpers on the&lt;br /&gt;
       RIGHT side on each set of pins.&lt;br /&gt;
     - connect dual serial cable between BOB and host machine&lt;br /&gt;
       - connect DB9 connector to interface module serial port&lt;br /&gt;
       - connect end of serial cable labeled COM1 to a null-modem (crossover cable)&lt;br /&gt;
       - connect other end of null-modem cable to first serial port (ttyS0) on the linux host machine&lt;br /&gt;
=== prepare host software ===&lt;br /&gt;
   - download and place files in /tftpboot&lt;br /&gt;
     - innov925.cfg&lt;br /&gt;
     - reg925t.def&lt;br /&gt;
     - setup&lt;br /&gt;
     - rrload.com1&lt;br /&gt;
   - make sure tftpd is ready to run&lt;br /&gt;
   - make sure minicom is configured to access /dev/ttyS0, at 115K N81&lt;br /&gt;
   - in one window, run minicom to be listening to the serial output from the Innovator board&lt;br /&gt;
   - in another window, be ready to run telnet to control the abatron&lt;br /&gt;
     - you may want to add &amp;quot;192.168.1.2    abatron&amp;quot; to your /etc/hosts file&lt;br /&gt;
=== install rrload in user flash 0 ===&lt;br /&gt;
   - make sure jumpers are set on BOB for access to user flash 0&lt;br /&gt;
   - power up abatron by plugging in power cable at back&lt;br /&gt;
   - start abatron by telnetting into it&lt;br /&gt;
     - [hostpc]% telnet abatron&lt;br /&gt;
   - start Innovator by flipping switch on interface module&lt;br /&gt;
   - load and run setup&lt;br /&gt;
     - [abatron prompt]&amp;gt;load setup&lt;br /&gt;
     - [abatron prompt]&amp;gt;g&lt;br /&gt;
   - load and run rrload.com1&lt;br /&gt;
     - [abatron prompt]&amp;gt;load rrload.com1&lt;br /&gt;
     - [abatron prompt]&amp;gt;g&lt;br /&gt;
   - the rrload menu should appear in minicom&lt;br /&gt;
   - save rrload to flash&lt;br /&gt;
     - [rrload menu] E (for Erase component)&lt;br /&gt;
     - [rrload menu] 1 (to erase the flash memory where the bootloader resides)&lt;br /&gt;
     - [rrload menu] 0 (to return to the Main menu)&lt;br /&gt;
     - [rrload menu] 2 (to store component to flash)&lt;br /&gt;
     - [rrload menu] 1 (to store the bootloader)&lt;br /&gt;
     - [rrload menu] 0 (to return to the Main menu)&lt;br /&gt;
   - set configuration for rrload&lt;br /&gt;
     - [need more detail]&lt;br /&gt;
   - save configuration (bootloader params) to flash&lt;br /&gt;
     - [rrload menu] E (for Erase component)&lt;br /&gt;
     - [rrload menu] 2 (to erase the flash memory where the bootloader params resides)&lt;br /&gt;
     - [rrload menu] 0 (to return to the Main menu)&lt;br /&gt;
     - [rrload menu] 2 (to store component to flash)&lt;br /&gt;
     - [rrload menu] 2 (to store the bootloader params)&lt;br /&gt;
     - [rrload menu] 0 (to return to the Main menu)&lt;br /&gt;
&lt;br /&gt;
=== use rrload to boot the kernel and root filesystem ===&lt;br /&gt;
[ need more detail]&lt;br /&gt;
==== build the kernel ====&lt;br /&gt;
Here are some commands I used to build the kernel:&lt;br /&gt;
 - cd celinux-031030/&lt;br /&gt;
 - &amp;lt;code&amp;gt;export PATH=$PATH:/usr/local/armv4tl-celf-linux/bin&amp;lt;/code&amp;gt;&lt;br /&gt;
 - cp arch/arm/def-configs/innovator .config&lt;br /&gt;
 - make ARCH=arm CROSS_COMPILE=armv4tl-celf-linux- oldconfig&lt;br /&gt;
 - make ARCH=arm CROSS_COMPILE=armv4tl-celf-linux- dep&lt;br /&gt;
 - make ARCH=arm CROSS_COMPILE=armv4tl-celf-linux- zImage&lt;br /&gt;
==== prepare kernel for download ====&lt;br /&gt;
 - /home/tbird/innovator/rrload/mkimage --LAddr 10c08000 --EAddr 10C08000 arch/arm/boot/compressed/vmlinux vmlinux.rr&lt;br /&gt;
 - cp vmlinux.rr /tftpboot/&lt;br /&gt;
==== download kernel to board ====&lt;br /&gt;
 - minicom (set to /dev/ttyS0)&lt;br /&gt;
 - turn on development board, you should see the rrload menu&lt;br /&gt;
 - choose option 3 (view/edit params) on the rrload menu&lt;br /&gt;
   - choose option 3 (I/O load format)&lt;br /&gt;
   - set value to &amp;quot;rrbin&amp;quot;&lt;br /&gt;
 - choose option 4 (I/O load port)&lt;br /&gt;
   - set value to &amp;quot;ser&amp;quot;&lt;br /&gt;
 - choose option 0 (back to main menu)&lt;br /&gt;
 - choose option 1 (load from I/O port)&lt;br /&gt;
   - choose option 1 (load kernel)&lt;br /&gt;
&lt;br /&gt;
On the host, as root copy the file to the serial port:&lt;br /&gt;
 - cat /tftpboot/vmlinux.rr &amp;gt;/dev/ttyS0&lt;br /&gt;
&lt;br /&gt;
On the client, wait for download to complete.  Dots will appear&lt;br /&gt;
as the kernel is downloaded.&lt;br /&gt;
 - choose option o (back to main menu)&lt;br /&gt;
&lt;br /&gt;
==== download rootfs to board ====&lt;br /&gt;
[need more detail here]&lt;br /&gt;
&lt;br /&gt;
==== boot the kernel ====&lt;br /&gt;
 - choose option 4 (boot kernel)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Important Notes ==&lt;br /&gt;
 - I couldn't find documentation on JP1 and JP2.  After trial-and-error, it was determined by&lt;br /&gt;
 Takao Shinohara (of Sony) that pin 1 is on the RIGHT of these jumpers.&lt;br /&gt;
&lt;br /&gt;
== Files ==&lt;br /&gt;
Here is a list of lots of relevant (or maybe not relevant) files:&lt;br /&gt;
&lt;br /&gt;
Here are some files I used for bootstrapping:&lt;br /&gt;
 - [[Media:innov925.cfg]]&lt;br /&gt;
 - [[Media:reg925t.def]]&lt;br /&gt;
 - Media:setup - could not upload file.  Please see [http://tree.celinuxforum.org/CelfPubWiki/InnovatorInstructions?action=AttachFile&amp;amp;do=get&amp;amp;target=setup old wiki download]&lt;br /&gt;
 - [[Media:rrload.com1]]&lt;br /&gt;
&lt;br /&gt;
This is a file I got from TI describing how to build Linux for the Innovator and&lt;br /&gt;
bootstrap using a JTAG device and Code Composer Studio, from Windows:&lt;br /&gt;
 - [[Media:Building_Linux_For_Innovator.pdf]]&lt;br /&gt;
 - http://focus.ti.com/lit/an/swpa011/swpa011.pdf - above pdf on ti site&lt;br /&gt;
 - http://focus.ti.com/lit/ug/spru667/spru667.pdf - Innovator Development Kit Manual&lt;br /&gt;
 - http://focus.ti.com/docs/toolsw/folders/print/innovatorevmv1.html - product info&lt;br /&gt;
 - [http://focus.ti.com/omap/docs/omapgenpage.tsp?navigationId=9305&amp;amp;templateId=5663&amp;amp;path=templatedata/cm/omaptools/data/innovator_kits innovator specs]&lt;br /&gt;
&lt;br /&gt;
== Other support sites ==&lt;br /&gt;
 - see http://muru.com/linux/omap/ for an unnofficial web site supporting Linux on Innovator&lt;br /&gt;
 - see Linux for TI OMAP mail archives at: http://linux.omap.com/pipermail/linux-omap-open-source/&lt;br /&gt;
 - to subscribe: http://linux.omap.com/mailman/listinfo/linux-omap-open-source&lt;br /&gt;
 - TI page with lots of downloads and links to other resources is here:&lt;br /&gt;
 http://focus.ti.com/docs/general/splashdsp.jhtml?&amp;amp;path=templatedata/cm/splashdsp/data/linux_com_portal&lt;br /&gt;
 - The following page has a link to the 2.6 [[BitKeeper]] tree for TI OMAP:&lt;br /&gt;
 http://focus.ti.com/docs/general/splashdsp.jhtml?&amp;amp;path=templatedata/cm/splashdsp/data/linux_com_resources&lt;br /&gt;
[[Category:Hardware Hacking]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Memory_Debuggers</id>
		<title>Memory Debuggers</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Memory_Debuggers"/>
				<updated>2011-05-13T17:52:49Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Development Tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Several tools exist for finding memory leaks or for reporting individual memory allocations&lt;br /&gt;
of a program.  These tools help analyze memory usage patterns, detect unbalanced allocations and frees, report buffer over- and under-runs, etc.&lt;br /&gt;
&lt;br /&gt;
=== mtrace ===&lt;br /&gt;
mtrace is a builtin part of glibc which allows detection of memory leaks caused by unbalanced malloc/free calls.  To use it, the program is modified to call mtrace() and muntrace() to start and stop tracing of allocations.  A log file is created, which can then be scanned by the 'mtrace' Perl script.  The 'mtrace' program lists only unbalanced allocations.  If source is available it can&lt;br /&gt;
show the source line where the problem occurred. mtrace can be used on both C and C++ programs.&lt;br /&gt;
&lt;br /&gt;
See the [http://wikipedia.org/wiki/Mtrace mtrace wikipedia article] for more information.&lt;br /&gt;
&lt;br /&gt;
=== memwatch ===&lt;br /&gt;
memwatch is a program that not only detects malloc and free errors but also reads and writes beyond the allocated space (buffer over and under-runs).  To use it, you modify the source to include&lt;br /&gt;
the memwatch code, which provides replacements for malloc and free.&lt;br /&gt;
  &lt;br /&gt;
Some things that memwatch does not catch are writing to an address that has been freed and reading data from outside the allocated memory.&lt;br /&gt;
&lt;br /&gt;
=== mpatrol ===&lt;br /&gt;
mpatrol appears to be like memwatch.&lt;br /&gt;
&lt;br /&gt;
See http://mpatrol.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== dmalloc ===&lt;br /&gt;
&amp;quot;The debug memory allocation or dmalloc library has been designed as a drop in replacement for the system's malloc, realloc, calloc, free and other memory management routines while providing powerful debugging facilities configurable at runtime. These facilities include such things as memory-leak tracking, fence-post write detection, file/line number reporting, and general logging of statistics.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This library can be used without modifying the existing program, and uses environment variables&lt;br /&gt;
to control it's operation and set of issues to log.&lt;br /&gt;
&lt;br /&gt;
It's home page is at: http://dmalloc.com/&lt;br /&gt;
&lt;br /&gt;
See Cal Erickson's article (link below, page 2) for information about using this system.&lt;br /&gt;
&lt;br /&gt;
=== dbgmem ===&lt;br /&gt;
dbgmem looks like another dynamic library replacement tool, similar to dmalloc (but possibly having less features)&lt;br /&gt;
&lt;br /&gt;
See http://dbgmem.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
=== valgrind ===&lt;br /&gt;
valgrind does dynamic source code modification to instrument the program, and provides a number&lt;br /&gt;
of memory problem detection tools and profiling tools.  Unfortunately, as of July 2010 it is&lt;br /&gt;
only available for x86 and ppc64 architecture platforms.&lt;br /&gt;
&lt;br /&gt;
See [[Valgrind]]&lt;br /&gt;
&lt;br /&gt;
=== Electric Fence ===&lt;br /&gt;
See [[Electric Fence]]&lt;br /&gt;
&lt;br /&gt;
== Tutorials or Overviews ==&lt;br /&gt;
* [http://www.linuxjournal.com/article/6059 Memory Leak Detection in Embedded Systems] by Cal Erickson, Linux Journal, September 2002&lt;br /&gt;
** This article mentions mtrace, memwatch and dmalloc&lt;br /&gt;
&lt;br /&gt;
[[Category:Development Tools]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Uart2_Configuration</id>
		<title>Hammer Uart2 Configuration</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Uart2_Configuration"/>
				<updated>2011-05-13T17:52:00Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The default configuration for the GPH6 and GPH7 pins on the s3c2410 are as GPIO inputs. To configure these pins for usage as a second uart add the following commented section to the arch/arm/mach-s3c2410/mach-tct_hammer.c in the linux source tree, future versions of the Hammer kernel source will include this entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static void __init tct_hammer_init(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPF0, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1);&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPC12, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPC12, 1);&lt;br /&gt;
&lt;br /&gt;
/* uncomment these to enable the second serial port */&lt;br /&gt;
/*&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH6, S3C2410_GPH6_TXD2);&lt;br /&gt;
	s3c2410_gpio_pullup(S3C2410_GPH6, 1);&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_RXD2);&lt;br /&gt;
	s3c2410_gpio_pullup(S3C2410_GPH7, 1);&lt;br /&gt;
*/&lt;br /&gt;
#ifdef CONFIG_FB_S3C2410&lt;br /&gt;
	s3c24xx_fb_set_platdata(&amp;amp;tct_hammer_lcd_info);&lt;br /&gt;
#endif&lt;br /&gt;
	platform_add_devices(tct_hammer_devices, ARRAY_SIZE(tct_hammer_devices));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
after recompiling the kernel and loading it onto the Hammer, the port will be accessable via /dev/ttySAC2.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LED_Userspace_App</id>
		<title>Hammer LED Userspace App</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LED_Userspace_App"/>
				<updated>2011-05-13T17:51:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an example program that uses the /dev/mem device node to access the physical memory registers directly([[media:ledblink.c|source]])&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
to compile the source use your toolchain command line&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#arm-linux-uclibc-gcc -o ledblink ledblink.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then transfer the ledblink binary to the hammer file system. make sure that the permissions on the file are set to executable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#chmod 755 ledblink&lt;br /&gt;
#./ledblink&lt;br /&gt;
&lt;br /&gt;
Usage:  ./ledblink { seconds }&lt;br /&gt;
        seconds : number of seconds to blink&lt;br /&gt;
&lt;br /&gt;
#./ledblink 20&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
this will cause the onboard LED to blink for 20 seconds&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Source==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * ledblink.c: Simple program to blink a led on GPIO F0&lt;br /&gt;
 *&lt;br /&gt;
 *	Copyright (c) 2008 TinCanTools&lt;br /&gt;
 *	David Anders &amp;lt;danders@amltd.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 * it under the terms of the GNU General Public License as published by&lt;br /&gt;
 * the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 * (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This program is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 * GNU General Public License for more details.&lt;br /&gt;
 * &lt;br /&gt;
 * You should have received a copy of the GNU General Public License&lt;br /&gt;
 * along with this program; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/mman.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
#define MAP_SIZE 4096UL		/* the size of one page of virtual memory */&lt;br /&gt;
#define MAP_MASK (MAP_SIZE - 1)	/* mask used for the one page of virtual memory */&lt;br /&gt;
&lt;br /&gt;
#define GPIOF_CON	0x56000050 /* physical address of the GPIO F control register */&lt;br /&gt;
#define GPIOF_DAT	0x56000054 /* physical address of the GPIO F data register */&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv) {&lt;br /&gt;
    int fd,count;&lt;br /&gt;
    void *map_base, *virt_addr; &lt;br /&gt;
    unsigned long read_result, writeval;&lt;br /&gt;
&lt;br /&gt;
    if(argc &amp;lt; 2) {&lt;br /&gt;
	fprintf(stderr, &amp;quot;\nUsage:\t%s { seconds }\n&amp;quot;&lt;br /&gt;
	    &amp;quot;\tseconds : number of seconds to blink\n\n&amp;quot;,&lt;br /&gt;
	    argv[0]);&lt;br /&gt;
	exit(1);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    count = strtoul(argv[1], 0, 0);&lt;br /&gt;
&lt;br /&gt;
    /* open the memory device file descriptor */&lt;br /&gt;
    if((fd = open(&amp;quot;/dev/mem&amp;quot;, O_RDWR | O_SYNC)) == -1)&lt;br /&gt;
	return -1;&lt;br /&gt;
    &lt;br /&gt;
    /* Map one page */&lt;br /&gt;
    map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, GPIOF_CON &amp;amp; ~MAP_MASK);&lt;br /&gt;
    if(map_base == (void *) -1)&lt;br /&gt;
	return -1;&lt;br /&gt;
    &lt;br /&gt;
    /* set the virtual memory address to the GPIO F control register */&lt;br /&gt;
    virt_addr = map_base + (GPIOF_CON &amp;amp; MAP_MASK);&lt;br /&gt;
&lt;br /&gt;
    /* read the current value for GPIO F control register */&lt;br /&gt;
    read_result = *((unsigned long *) virt_addr);&lt;br /&gt;
&lt;br /&gt;
    writeval = read_result;&lt;br /&gt;
    writeval &amp;amp;= ~0x03;		/* mask off the first two bits */&lt;br /&gt;
    writeval |= 0x01;		/* set gpio f0 to output with value of 0x01 */ &lt;br /&gt;
&lt;br /&gt;
    /* write the modified value to GPIO F0 control register to set GPIO F0 to output */&lt;br /&gt;
    *((unsigned long *) virt_addr) = writeval;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* change virtual memory address to GPIO F data register */&lt;br /&gt;
    virt_addr = map_base + (GPIOF_DAT &amp;amp; MAP_MASK);&lt;br /&gt;
&lt;br /&gt;
    for ( count ; count &amp;gt; 0 ; count--) { &lt;br /&gt;
&lt;br /&gt;
	/* read the current value for GPIO F data register */&lt;br /&gt;
	read_result = *((unsigned long *) virt_addr);&lt;br /&gt;
	writeval = read_result;&lt;br /&gt;
    &lt;br /&gt;
	if ( (read_result&amp;amp;(1&amp;lt;&amp;lt;0)) )&lt;br /&gt;
	    writeval &amp;amp;= ~(1&amp;lt;&amp;lt;0);	/* set GPIO F0 to a value of 0(low-on) */&lt;br /&gt;
	else&lt;br /&gt;
	    writeval |= (1&amp;lt;&amp;lt;0);		/* set GPIO F0 to a value of 1(high-off) */ &lt;br /&gt;
&lt;br /&gt;
	/* write the modified value to the GPIO F0 data register */&lt;br /&gt;
	*((unsigned long *) virt_addr) = writeval;&lt;br /&gt;
	sleep(1);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* read the current value for GPIO F control register */&lt;br /&gt;
    read_result = *((unsigned long *) virt_addr);&lt;br /&gt;
&lt;br /&gt;
    /* make sure the LED is off when leaving the program */&lt;br /&gt;
    writeval = read_result;&lt;br /&gt;
    writeval |= (1&amp;lt;&amp;lt;0);		/* set GPIO F0 to a value of 1(high-off) */ &lt;br /&gt;
&lt;br /&gt;
    /* write the modified value to the GPIO F0 data register */&lt;br /&gt;
    *((unsigned long *) virt_addr) = writeval;&lt;br /&gt;
&lt;br /&gt;
    /* unmap the virtual memory before exiting the program */&lt;br /&gt;
    if(munmap(map_base, MAP_SIZE) == -1)&lt;br /&gt;
	return -1;&lt;br /&gt;
	    &lt;br /&gt;
    close(fd);&lt;br /&gt;
    return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LED_Driver_Module</id>
		<title>Hammer LED Driver Module</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LED_Driver_Module"/>
				<updated>2011-05-13T17:51:17Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;this is an example kernel module that will blink the onboard LED connected to GPIO F0 ([[media:ledblink.tar.gz|source]])&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#tar zxvf ledblink.tar.gz&lt;br /&gt;
#cd ledblink&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
NOTE: If trying to make against kernel 2.6.29 change #include of arch/arm/regs-gpio to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;mach/regs-gpio.h&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#make KERNEL_SRC=/home/foo/bar/hammer/linux-2.6.22&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: for more information about the contents and function of the &amp;lt;br&amp;gt;&lt;br /&gt;
included Makefile please see the [http://tldp.org/LDP/lkmpg/2.6/html/ The Linux Kernel Module Programming Guide]&lt;br /&gt;
&lt;br /&gt;
this will generate the ledblink.ko file which can be transfer to your hammer and loaded using the insmod command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#insmod ledblink.ko&lt;br /&gt;
LED Blink Module Loaded&lt;br /&gt;
Dec 31 17:10:05 Hammer user.info kernel: LED Blink Module Loaded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove the module use the rmmod command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#rmmod ledblink.ko&lt;br /&gt;
LED Blink Module Unloaded&lt;br /&gt;
Dec 31 17:10:20 Hammer user.info kernel: LED Blink Module Unloaded&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Source Code==&lt;br /&gt;
NOTE: this source makes reference to the HZ kernel value and also to &amp;quot;jiffies&amp;quot;,&amp;lt;br&amp;gt;&lt;br /&gt;
for more information on these see the [[Kernel_Timer_Systems]] documentation&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*  &lt;br /&gt;
 *  ledblink.c - basic led blinking kernel module&lt;br /&gt;
 *&lt;br /&gt;
 *	Copyright (c) 2008 TinCanTools&lt;br /&gt;
 *	David Anders &amp;lt;danders@amltd.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 * This program is free software; you can redistribute it and/or modify&lt;br /&gt;
 * it under the terms of the GNU General Public License as published by&lt;br /&gt;
 * the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
 * (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 * This program is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 * GNU General Public License for more details.&lt;br /&gt;
 * &lt;br /&gt;
 * You should have received a copy of the GNU General Public License&lt;br /&gt;
 * along with this program; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;linux/module.h&amp;gt;	/* Needed by all modules */&lt;br /&gt;
#include &amp;lt;linux/kernel.h&amp;gt;	/* Needed for KERN_INFO */&lt;br /&gt;
#include &amp;lt;linux/timer.h&amp;gt;	/* Needed for kernel timer */&lt;br /&gt;
#include &amp;lt;asm/arch/regs-gpio.h&amp;gt;	/* Needed for GPIO defines */&lt;br /&gt;
#include &amp;lt;asm/io.h&amp;gt;		/* Needed for s3c2410 functions */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static int blinkinterval = HZ / 2;&lt;br /&gt;
static struct timer_list blink_timer;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void led_blink(unsigned long dummy)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    /* the LED is active(on) when low(0) */&lt;br /&gt;
    &lt;br /&gt;
    if (s3c2410_gpio_getpin(S3C2410_GPF0) == 0)	/* check the current value of GPIO F0 */&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1);	/* turn LED off */&lt;br /&gt;
&lt;br /&gt;
    else &lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 0);	/* turn LED on */&lt;br /&gt;
&lt;br /&gt;
    mod_timer (&amp;amp;blink_timer, jiffies + blinkinterval); /* restart the timer */&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int init_module(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPF0, S3C2410_GPIO_OUTPUT);	/* set the GPIO line F0 to an output */&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1); /* make sure the LED starts in the off setting */&lt;br /&gt;
&lt;br /&gt;
	printk(KERN_INFO &amp;quot;LED Blink Module Loaded\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	init_timer (&amp;amp;blink_timer);&lt;br /&gt;
	blink_timer.function = led_blink;&lt;br /&gt;
	mod_timer (&amp;amp;blink_timer, jiffies + blinkinterval);&lt;br /&gt;
&lt;br /&gt;
	/* &lt;br /&gt;
	 * A non 0 return means init_module failed; module can't be loaded. &lt;br /&gt;
	 */&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void cleanup_module(void)&lt;br /&gt;
{&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1);	/* make sure the LED is off when exiting */&lt;br /&gt;
&lt;br /&gt;
	del_timer_sync(&amp;amp;blink_timer);		/* sync and delete the timer before exiting */&lt;br /&gt;
	printk(KERN_INFO &amp;quot;LED Blink Module Unloaded\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
MODULE_LICENSE(&amp;quot;GPL&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LED_Driver</id>
		<title>Hammer LED Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LED_Driver"/>
				<updated>2011-05-13T17:50:47Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Software==&lt;br /&gt;
LED's connected to GPIO's can be accessed in several ways:&lt;br /&gt;
&lt;br /&gt;
* [[Hammer LED Class Driver]]&lt;br /&gt;
* [[Hammer LED Driver Module]]&lt;br /&gt;
* [[Hammer LED Userspace App]]&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
the most common way of operating a LED via a gpio is to use an active low configuration:&lt;br /&gt;
&lt;br /&gt;
[[Image:led-example.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LED_Class_Driver</id>
		<title>Hammer LED Class Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LED_Class_Driver"/>
				<updated>2011-05-13T17:50:27Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UserSpace Access ==&lt;br /&gt;
&lt;br /&gt;
the LED onboard the hammer as well as the LED on the carrier board can be accessed from userspace via the sysfs interface. example interfaces are in /sys/devices/platform/s3c24xx_led.0/leds:led0/ and /sys/devices/platform/s3c24xx_led.1/leds:led1/. both directories include a file entry &amp;quot;brightness&amp;quot;. to turn a LED on, echo a non zero value to the brightness file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 1 &amp;gt; /sys/devices/platform/s3c24xx_led.0/leds:led0/brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to turn a LED off, echo a zero to the the brightness file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/s3c24xx_led.0/leds:led0/brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you can also check the current status of the LED by using cat on the brightness file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/devices/platform/s3c24xx_led.0/leds:led0/brightness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding New LEDS ==&lt;br /&gt;
&lt;br /&gt;
a new LED connected via a GPIO can be defined in the linux-2.6.xx/arch/arm/mach-s3c2410/mach-tct_hammer.c file. each LED will need to include some platform data and a platform device definition. Make sure the platform data and the platform device are above the platform declaration:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static struct s3c24xx_led_platdata tct_hammer_pdata_led0 = {&lt;br /&gt;
	.gpio		= S3C2410_GPF0,&lt;br /&gt;
	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,&lt;br /&gt;
	.name		= &amp;quot;led0&amp;quot;,&lt;br /&gt;
	.def_trigger	= &amp;quot;timer&amp;quot;,&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
static struct platform_device tct_hammer_led0 = {&lt;br /&gt;
	.name		= &amp;quot;s3c24xx_led&amp;quot;,&lt;br /&gt;
	.id		= 0,&lt;br /&gt;
	.dev		= {&lt;br /&gt;
		.platform_data = &amp;amp;tct_hammer_pdata_led0,&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also include: '&amp;amp;tct_hammer_led0' in the platform declaration&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 static struct platform_device *tct_hammer_devices[] __initdata = {&lt;br /&gt;
	&amp;amp;tct_hammer_led0,&lt;br /&gt;
	&amp;amp;s3c_device_adc,&lt;br /&gt;
	&amp;amp;s3c_device_wdt,&lt;br /&gt;
	&amp;amp;s3c_device_i2c0,&lt;br /&gt;
	&amp;amp;s3c_device_usb,&lt;br /&gt;
	&amp;amp;s3c_device_rtc,&lt;br /&gt;
	&amp;amp;s3c_device_usbgadget,&lt;br /&gt;
	&amp;amp;s3c_device_sdi,&lt;br /&gt;
 #ifdef CONFIG_MTD_PARTITIONS&lt;br /&gt;
	&amp;amp;tct_hammer_device_nor,&lt;br /&gt;
 #endif&lt;br /&gt;
 };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can reflash the Kernel.&lt;br /&gt;
&lt;br /&gt;
this uses the standard LEDS class in the main kernel tree. for additional information see the linux-2.6.xx/Documentation/leds-class.txt file.&lt;br /&gt;
&lt;br /&gt;
== Nail Board LED's ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static struct s3c24xx_led_platdata tct_hammer_pdata_led1 = {&lt;br /&gt;
	.gpio		= S3C2410_GPH0,&lt;br /&gt;
	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,&lt;br /&gt;
	.name		= &amp;quot;led1&amp;quot;,&lt;br /&gt;
	.def_trigger	= &amp;quot;timer&amp;quot;,&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
static struct s3c24xx_led_platdata tct_hammer_pdata_led2 = {&lt;br /&gt;
	.gpio		= S3C2410_GPH1,&lt;br /&gt;
	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,&lt;br /&gt;
	.name		= &amp;quot;led2&amp;quot;,&lt;br /&gt;
	.def_trigger	= &amp;quot;timer&amp;quot;,&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static struct platform_device tct_hammer_led1 = {&lt;br /&gt;
	.name		= &amp;quot;s3c24xx_led&amp;quot;,&lt;br /&gt;
	.id		= 1,&lt;br /&gt;
	.dev		= {&lt;br /&gt;
		.platform_data = &amp;amp;tct_hammer_pdata_led1,&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
static struct platform_device tct_hammer_led2 = {&lt;br /&gt;
	.name		= &amp;quot;s3c24xx_led&amp;quot;,&lt;br /&gt;
	.id		= 2,&lt;br /&gt;
	.dev		= {&lt;br /&gt;
		.platform_data = &amp;amp;tct_hammer_pdata_led2,&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
you will also need to add some gpio setup in the machine init function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static void __init tct_hammer_init(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPF0, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPF0, 1);&lt;br /&gt;
&lt;br /&gt;
/* add these lines to setup the leds on the nail board */&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH0, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPH0, 1);&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH1, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPH1, 1);&lt;br /&gt;
&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPC12, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
	s3c2410_gpio_setpin(S3C2410_GPC12, 1);&lt;br /&gt;
&lt;br /&gt;
/*uncomment these these to enable the second serial port */&lt;br /&gt;
/*&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH6, S3C2410_GPH6_TXD0);&lt;br /&gt;
	s3c2410_gpio_pullup(S3C2410_GPH6, 1);&lt;br /&gt;
	s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_RXD0);&lt;br /&gt;
	s3c2410_gpio_pullup(S3C2410_GPH7, 1);&lt;br /&gt;
*/&lt;br /&gt;
#ifdef CONFIG_FB_S3C2410&lt;br /&gt;
	s3c24xx_fb_set_platdata(&amp;amp;tct_hammer_lcd_info);&lt;br /&gt;
#endif&lt;br /&gt;
	platform_add_devices(tct_hammer_devices, ARRAY_SIZE(tct_hammer_devices));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in addition you will need to add the leds to the device list:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static struct platform_device *tct_hammer_devices[] __initdata = {&lt;br /&gt;
#ifdef CONFIG_FB_S3C2410&lt;br /&gt;
	&amp;amp;s3c_device_lcd,&lt;br /&gt;
#endif&lt;br /&gt;
	&amp;amp;s3c_device_adc,&lt;br /&gt;
	&amp;amp;s3c_device_wdt,&lt;br /&gt;
	&amp;amp;s3c_device_i2c,&lt;br /&gt;
	&amp;amp;s3c_device_usb,&lt;br /&gt;
 	&amp;amp;s3c_device_rtc,&lt;br /&gt;
	&amp;amp;s3c_device_usbgadget,&lt;br /&gt;
        &amp;amp;s3c_device_sdi,&lt;br /&gt;
	&amp;amp;tct_hammer_led0,&lt;br /&gt;
/* add these two entries for the new LEDs */&lt;br /&gt;
	&amp;amp;tct_hammer_led1,&lt;br /&gt;
	&amp;amp;tct_hammer_led2,&lt;br /&gt;
	&amp;amp;tct_hammer_beeper,&lt;br /&gt;
	&amp;amp;tct_hammer_buttons,&lt;br /&gt;
#ifdef CONFIG_MTD_PARTITIONS&lt;br /&gt;
	&amp;amp;tct_hammer_device_nor,&lt;br /&gt;
#endif&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LCD_8bit_Color_STN</id>
		<title>Hammer LCD 8bit Color STN</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LCD_8bit_Color_STN"/>
				<updated>2011-05-13T17:50:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a &amp;quot;HowTo&amp;quot; for the Panasonic EDMGRB8KJF ([[media:edmgrb8jf.pdf|Datasheet]]) available from [http://store.earthlcd.com/EDMGRB8KJF?sc=7&amp;amp;category=256 EarthLCD] to be used with the [[Hammer_Board|Hammer]] development module from [[TinCanTools]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' This screen is an 8-bit STN screen, however in order to use it on the S3C2410A Hammer 12-bit STN must be used. The last 4 bits are simply masked off. If you have intentions of using this screen for frameworks such as Qt4 or others please first verify that they have 12-bit color support.&lt;br /&gt;
&lt;br /&gt;
==Hardware==&lt;br /&gt;
{|border=&amp;quot;3&amp;quot;&lt;br /&gt;
|+Matching Pinouts&lt;br /&gt;
!Pin Number||Hammer||Note||LCD||Pin Number&lt;br /&gt;
|-&lt;br /&gt;
|16||style=&amp;quot;background:#FFFF40&amp;quot; |VM||style=&amp;quot;background:#80FF80&amp;quot; |Display On/Off||style=&amp;quot;background:#2099FF&amp;quot; |DISPON||16&lt;br /&gt;
|-&lt;br /&gt;
|17||style=&amp;quot;background:#FFFF40&amp;quot; |VFRAME||style=&amp;quot;background:#80FF80&amp;quot; |LCD Vertical sync||style=&amp;quot;background:#2099FF&amp;quot; |FRM||20&lt;br /&gt;
|-&lt;br /&gt;
|18||style=&amp;quot;background:#FFFF40&amp;quot; |VLINE||style=&amp;quot;background:#80FF80&amp;quot; |LCD Horizontal sync||style=&amp;quot;background:#2099FF&amp;quot; |LOAD||14&lt;br /&gt;
|-&lt;br /&gt;
|19||style=&amp;quot;background:#FFFF40&amp;quot; |VCLK||style=&amp;quot;background:#80FF80&amp;quot; |LCD pixel clock||style=&amp;quot;background:#2099FF&amp;quot; |CP||12&lt;br /&gt;
|-&lt;br /&gt;
|21||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD0||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 0||style=&amp;quot;background:#2099FF&amp;quot; |Data0||9&lt;br /&gt;
|-&lt;br /&gt;
|22||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD1||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 1||style=&amp;quot;background:#2099FF&amp;quot; |Data1||8&lt;br /&gt;
|-&lt;br /&gt;
|23||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD2||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 2||style=&amp;quot;background:#2099FF&amp;quot; |Data2||7&lt;br /&gt;
|-&lt;br /&gt;
|24||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD3||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 3||style=&amp;quot;background:#2099FF&amp;quot; |Data3||6&lt;br /&gt;
|-&lt;br /&gt;
|25||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD4||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 4||style=&amp;quot;background:#2099FF&amp;quot; |Data4||4&lt;br /&gt;
|-&lt;br /&gt;
|26||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD5||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 5||style=&amp;quot;background:#2099FF&amp;quot; |Data5||3&lt;br /&gt;
|-&lt;br /&gt;
|27||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD6||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 6||style=&amp;quot;background:#2099FF&amp;quot; |Data6||2&lt;br /&gt;
|-&lt;br /&gt;
|28||style=&amp;quot;background:#FFFF40&amp;quot; |LCD_VD7||style=&amp;quot;background:#80FF80&amp;quot; |LCD data bit 7||style=&amp;quot;background:#2099FF&amp;quot; |Data7||1&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |+3.3V||style=&amp;quot;background:#2099FF&amp;quot; |VDD||10&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |+3.3V||style=&amp;quot;background:#2099FF&amp;quot; |VDD||11&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |+3.3V||style=&amp;quot;background:#2099FF&amp;quot; |VDD||13&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Ground||style=&amp;quot;background:#2099FF&amp;quot; |VSS||5&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Ground||style=&amp;quot;background:#2099FF&amp;quot; |VSS||15&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Ground||style=&amp;quot;background:#2099FF&amp;quot; |VSS||17&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Ground||style=&amp;quot;background:#2099FF&amp;quot; |VSS||19&lt;br /&gt;
|-&lt;br /&gt;
|| || ||style=&amp;quot;background:#80FF80&amp;quot; |Contrast +1.95V (+-0.8V)||style=&amp;quot;background:#2099FF&amp;quot; |VCON||18&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' VCON should be variable control to adjust contrast and the VDD should have separate power control, i.e. via a gpio&lt;br /&gt;
NOTE: 3.3V from the Hammer dev kit is not enough power and a seperate regulator will be required to power the device. Please make sure you also tie together the ground pins from the external regulator and the dev board.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' This display also requires a backlight inverter (see datasheet for requirements)&lt;br /&gt;
==Pictures==&lt;br /&gt;
[[File:tincantools-login.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
We have a login prompt!&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:mixer-display.jpg]]&amp;lt;br/&amp;gt;&lt;br /&gt;
Picture of LCD Display running a mixer console Ncurses GUI&lt;br /&gt;
&lt;br /&gt;
==Linux Kernel 2.6.29.6 Build Notes==&lt;br /&gt;
In order to get this screen to work framebuffer support has to be built into your kernel.&lt;br /&gt;
  cd hammer/source/linux-2.6.29.6&lt;br /&gt;
  export ARCH=arm&lt;br /&gt;
  export CROSS_COMPILE=arm-linux-uclibc-&lt;br /&gt;
  make menuconfig &lt;br /&gt;
&lt;br /&gt;
  Device Drivers -&amp;gt;  Graphics Support -&amp;gt; Support for frame buffer devices&lt;br /&gt;
  Inside this sub menu add:&lt;br /&gt;
  [*] Enable Video Mode Handling Helpers&lt;br /&gt;
  &amp;lt;*&amp;gt; S3C2410 LCD framebuffer support&lt;br /&gt;
&lt;br /&gt;
  Under Device Drivers -&amp;gt; Graphics Support -&amp;gt; Console display driver support ADD&lt;br /&gt;
  Framebuffer Console Support&lt;br /&gt;
'''NOTE''': It is also a good idea to go ahead and add the boot logo.&lt;br /&gt;
&lt;br /&gt;
==Adding LCD to Machine File==&lt;br /&gt;
The next step is to add the display settings to your mach-tct_hammer.c file in ./arch/arm/s3c2410&lt;br /&gt;
If you have questions about this file please see the linux documentation ( I will try to make a patch for this at a later date)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Open up your mach-tct_hammer.c file as mentioned above and verify the following include headers exist&lt;br /&gt;
  #include &amp;lt;asm/mach-types.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;mach/regs-lcd.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;mach/fb.h&amp;gt;&lt;br /&gt;
  #include &amp;lt;mach/regs-gpio.h&amp;gt;&lt;br /&gt;
If they do not exist please add them.&lt;br /&gt;
&lt;br /&gt;
Next add this in the upper section of the file&lt;br /&gt;
&lt;br /&gt;
  /* LCD/VGA controller */&lt;br /&gt;
  #ifdef CONFIG_FB_S3C2410&lt;br /&gt;
  static struct s3c2410fb_display __initdata tct_hammer_lcd_info = {&lt;br /&gt;
  	.width		= 640,&lt;br /&gt;
  	.height		= 480,&lt;br /&gt;
  &lt;br /&gt;
  	.type		= S3C2410_LCDCON1_STN8,&lt;br /&gt;
  &lt;br /&gt;
  	.pixclock	= 120000, &lt;br /&gt;
  	.xres		= 640,&lt;br /&gt;
  	.yres		= 480,&lt;br /&gt;
  	.bpp		= 12,&lt;br /&gt;
  	.hsync_len	= 48,&lt;br /&gt;
  &lt;br /&gt;
  	.left_margin   = 4 &amp;lt;&amp;lt; (4 + 3),&lt;br /&gt;
    	.right_margin  = 8 &amp;lt;&amp;lt; 3,&lt;br /&gt;
  	.upper_margin	= 10,&lt;br /&gt;
  	.lower_margin	= 10,&lt;br /&gt;
  &lt;br /&gt;
  	.lcdcon5	= 2&lt;br /&gt;
  };&lt;br /&gt;
  /* LCD/VGA controller */&lt;br /&gt;
  &lt;br /&gt;
  static struct s3c2410fb_mach_info __initdata tct_hammer_fb_info = {&lt;br /&gt;
  &lt;br /&gt;
  	.displays = &amp;amp;tct_hammer_lcd_info,&lt;br /&gt;
  	.num_displays = 1,&lt;br /&gt;
  	.default_display = 0,&lt;br /&gt;
  &lt;br /&gt;
  	.gpccon =	0xaaaaa9aa,&lt;br /&gt;
  	.gpccon_mask =	0xffffffff,&lt;br /&gt;
  	.gpcup =	0x0000ffff,&lt;br /&gt;
  	.gpcup_mask =	0xffffffff,&lt;br /&gt;
  &lt;br /&gt;
 	.gpdcon =	0x00000000,&lt;br /&gt;
  	.gpdcon_mask =	0xffffffff,&lt;br /&gt;
  	.gpdup =	0x00000000,&lt;br /&gt;
  	.gpdup_mask =	0xffffffff,&lt;br /&gt;
  	.lpcsel     = ((0xCE6) &amp;amp; ~7) | 1&amp;lt;&amp;lt;4,&lt;br /&gt;
  };&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
These definitions are what notify the s3c2410fb driver how to configure itself in order to talk to the LCD display properly. We still have to tell the kernel to initialize these as well as configure the GPIO pins to run as the VD pins.&lt;br /&gt;
&lt;br /&gt;
In the *tct_hammer_devices[] definition add&lt;br /&gt;
  #ifdef CONFIG_FB_S3C2410&lt;br /&gt;
  	&amp;amp;s3c_device_lcd,&lt;br /&gt;
  #endif&lt;br /&gt;
Finally in the tct_hammer_init function add the following lines to the top of the function:&lt;br /&gt;
  #ifdef CONFIG_FB_S3C2410&lt;br /&gt;
      // disable LCD_DISPON.&lt;br /&gt;
    s3c2410_gpio_setpin(S3C2410_GPC4, 0);&lt;br /&gt;
    s3c2410_gpio_cfgpin(S3C2410_GPC4, S3C2410_GPIO_OUTPUT);&lt;br /&gt;
  &lt;br /&gt;
      // connect any frame buffer.&lt;br /&gt;
    s3c24xx_fb_set_platdata(&amp;amp;tct_hammer_fb_info);&lt;br /&gt;
  #endif&lt;br /&gt;
&lt;br /&gt;
NOTE: TODO - Add information for modifying the s3c2410fb.c file as a setting needs changed to swap colors&lt;br /&gt;
&lt;br /&gt;
Now build your kernel and install it on the device. The last thing you may have to do is configure your getty file in your rootfs to put a console on tty0 (this will include adding tty0 to your securetty list on some occasions)&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_LCD_4bit_Grey_Scale_STN</id>
		<title>Hammer LCD 4bit Grey Scale STN</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_LCD_4bit_Grey_Scale_STN"/>
				<updated>2011-05-13T17:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Hammer supprts an LCD interface which can be configured to drive various kinds of displays.&lt;br /&gt;
The following is how I wired up a 16 shade greyscale, 4 bit single scan, 320 x 240 LCD panel.&lt;br /&gt;
&lt;br /&gt;
I used a Sharp LM32K10 display panel. &lt;br /&gt;
&lt;br /&gt;
*[http://www.esskabel.de/Datenblaetter/LCD-Specs/Sharp/LM/LM32K10.pdf LM32K10 Datasheet]&lt;br /&gt;
&lt;br /&gt;
[[Image:hammerlcd.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:driver.jpg]]&lt;br /&gt;
&lt;br /&gt;
The above schematic uses a 74AC244&lt;br /&gt;
&lt;br /&gt;
The driver interface can be done with either:&lt;br /&gt;
*[[media:74ac244.pdf|74AC244]]&lt;br /&gt;
*[[media:74ac245.pdf |74AC245]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The source of V- is left to the user, this panel requires about 7-10ma at -18-19VDC.&lt;br /&gt;
&lt;br /&gt;
I used an   *[http://www.datasheetarchive.com/NMA0515S-datasheet.html NMA0515S] with the V+ connection grounded, so its output is ~-30VDC at up to 33ma.&lt;br /&gt;
&lt;br /&gt;
The following circuit drops the -33V to -18V for use by the LCD panel.&lt;br /&gt;
&lt;br /&gt;
The transistor I used is a 2N3906 but any PNP device that can handle 100ma collector current will do.&lt;br /&gt;
[[Image:v-bias.jpg]]&lt;br /&gt;
&lt;br /&gt;
The Hammer signon message displayed on the LM32K10 LCD panel.&lt;br /&gt;
&lt;br /&gt;
[[Image:LM32K10.jpg]]&lt;br /&gt;
&lt;br /&gt;
LCD's that can be used with the Hammer using the same interface:&lt;br /&gt;
&lt;br /&gt;
*[http://www.esskabel.de/Datenblaetter/LCD-Specs/Sharp/LM/LM32010P.pdf LM32010P]&lt;br /&gt;
*[http://www.esskabel.de/Datenblaetter/LCD-Specs/Sharp/LM/LM32K101.PDF LM32K101]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Other LCD panels with built in controllers that could be used with the Hammer(These panels have an on-board controller and do not use the S3C2410's lcd controller):&lt;br /&gt;
&lt;br /&gt;
*[http://www.allelectronics.com/cgi-bin/item/LCD-101/365/256_X_128_LCD_PANEL_.html  Hyundai # HG25504 256x128]&lt;br /&gt;
*[http://www.allelectronics.com/cgi-bin/item/LCD-115/365/240_X_64_LCD_DISPLAY_.html  Seiko #F2426 240x64]&lt;br /&gt;
*[http://www.bgmicro.com/index.asp?PageAction=VIEWPROD&amp;amp;ProdID=10816 AZ displays AGM1264F 128x64]&lt;br /&gt;
*[http://www.sparkfun.com/commerce/product_info.php?products_id=8568 XIAMEN OCULAR OPTICS GDM12864H 128x64]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_I2C_Driver</id>
		<title>Hammer I2C Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_I2C_Driver"/>
				<updated>2011-05-13T17:48:19Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Start by entering the kernel config with the &amp;quot;make menuconfig&amp;quot; command, then choose the &amp;quot;Device Drivers&amp;quot; section&lt;br /&gt;
[[image:kernel1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use the up/down arrow keys to move to the &amp;quot;I2C Support&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use the up/down arrow keys to move to the &amp;quot;I2C Device Interface&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use the up/down arrow keys to move to the &amp;quot;I2C Hardware Bus support&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel4.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
use the up/down arrow keys to move to the &amp;quot;S3C2410 I2C Driver&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel5.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tab to the &amp;quot;Exit&amp;quot; option and move back one screen&amp;lt;br&amp;gt;then use the up/down arrow keys to move to the &amp;quot;Miscellaneous I2C Chip Support&amp;quot; Section and use the space bar to select&lt;br /&gt;
[[image:kernel6.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
there are a number of supported base drivers to select&lt;br /&gt;
[[image:kernel7.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
i2c-* device files, usually found in the /dev directory on your system.  They make it possible to have user-space programs use the I2C bus.  Information on how to do this is contained in the file Documentation/i2c/dev-interface in the linux source tree.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_How_to_use_LCD</id>
		<title>Hammer How to use LCD</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_How_to_use_LCD"/>
				<updated>2011-05-13T15:34:01Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[Hammer LCD 4bit Grey Scale STN| 4-Bit Greyscale STN HowTo Page]]&lt;br /&gt;
*[[Hammer LCD 8bit Color STN| 8-Bit Color STN HowTo Page]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_How_to_USB_FTDI</id>
		<title>Hammer How to USB FTDI</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_How_to_USB_FTDI"/>
				<updated>2011-05-13T14:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows how to configure the FTDI serial adapter for use with the hammer.&lt;br /&gt;
&lt;br /&gt;
==Configure the FTDI driver into the kernel==&lt;br /&gt;
 cd linux-2.6.22&lt;br /&gt;
 make menuconfig&lt;br /&gt;
 Enable the FTDI Serial Converter Driver&lt;br /&gt;
    Device Drivers ---&amp;gt;&lt;br /&gt;
       USB Support ---&amp;gt;&lt;br /&gt;
          USB Serial Converter Support ---&amp;gt;&lt;br /&gt;
    &amp;lt;M&amp;gt; USB FTDI Single Port Serial Driver (EXPERIMENTAL)&lt;br /&gt;
 Exit, saving your changes&lt;br /&gt;
 make&lt;br /&gt;
 make modules_install INSTALL_MOD_PATH=../buildroot/project_build_arm_nofpu/Hammer/root/&lt;br /&gt;
&lt;br /&gt;
This will compile the various kernel modules required and install them in the appropriate location in the root filesystem.&lt;br /&gt;
&lt;br /&gt;
==Make sure that /dev/ttyUSB0 gets created==&lt;br /&gt;
Since the /dev entries are staticlaly defined, we need to ensure that /dev/ttyUSB0 gets created. Edit the&lt;br /&gt;
buildroot/target/device/Samsung/Hammer/device_table.txt file. Copy the /dev/ttyS line to create a /dev/ttyUSB line. You need to change the name (ttyS to ttyUSB), the major (4 to 188), and the minor (64 to 0).&lt;br /&gt;
 /dev/ttyS   c   666 0   0   4   64  0   1   4&lt;br /&gt;
 /dev/ttyUSB c   666 0   0   188  0  0   1   4&lt;br /&gt;
&lt;br /&gt;
==Make sure that the ftdi_sio.ko module gets loaded at boot time==&lt;br /&gt;
Edit the buildroot/project_build_arm_nofpu/Hammer/root/etc/inittab file and add a new entry after the rcS entry:&lt;br /&gt;
 ::sysinit:/etc/init.d/rcS&lt;br /&gt;
 ::sysinit:/sbin/modprobe ftdi_sio&lt;br /&gt;
&lt;br /&gt;
==Recreate your rootfs image==&lt;br /&gt;
 cd buildroot&lt;br /&gt;
 rm binaries/Hammer/rootfs.arm_nofpu.ext2&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
==Compile a simple serial test program==&lt;br /&gt;
Compile [http://www.davehylands.com/hammer/sertest.c sertest.c] using the command line:&lt;br /&gt;
 arm-linux-gcc -lpthreads -o sertest sertest.c&lt;br /&gt;
&lt;br /&gt;
Transfer the sertest program to the hammer (I put it in /mnt/flash). You can use the rx command:&lt;br /&gt;
 rx /mnt/flash/sertest&lt;br /&gt;
 chmod +x /mnt/flash/sertest&lt;br /&gt;
and send the sertest program using X-Modem with your serial program. You can run sertest using the following command line:&lt;br /&gt;
 /mnt/flash/sertest -p /dev/ttyUSB0&lt;br /&gt;
&lt;br /&gt;
If you connect Tx to Rx on the FT232RL module, then you should see what you type.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Ethernet</id>
		<title>Hammer Ethernet</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Ethernet"/>
				<updated>2011-05-13T13:14:22Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ethernet can be added to a Hammer Board using the following options:&lt;br /&gt;
&lt;br /&gt;
* [[Enc28j60]] - SPI Interface [[Hammer_How_to_Enc28j60|HowTo for Hammer]]&lt;br /&gt;
* WIZ810MJ - SPI Interface [http://wiznet.co.kr/pro_iin_wiz810mj.htm Product Page]&lt;br /&gt;
* USB Ethernet - [[Hammer_How_to_USB_Ethernet|HowTo for Hammer]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Buzzer_Driver</id>
		<title>Hammer Buzzer Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Buzzer_Driver"/>
				<updated>2011-05-13T13:13:37Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UserSpace Access ==&lt;br /&gt;
&lt;br /&gt;
the buzzer on the carrier board can be accessed from userspace via the sysfs interface. example interfaces are in the directory marked /sys/devices/platform/tct_hammer-beeper.0/input:input1. the directory include a file entry &amp;quot;beep&amp;quot; and &amp;quot;duration&amp;quot;. to generate a beep echo a non zero value to the beep file entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 4096 &amp;gt; /sys/devices/platform/tct_hammer-beeper.0/input\:input1/beep&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
a tone will be generated for the length set in the duration file. to see what the current value is do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /sys/devices/platform/tct_hammer-beeper.0/input\:input1/duration&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
the duration is measured in .01 seconds, i.e. a value of 100 is 1 second. if the value of duration is set for zero, the tone will be generated continuously until a zero value is echo'd to the beep entry:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/tct_hammer-beeper.0/input\:input1/duration&lt;br /&gt;
echo 4096 &amp;gt; /sys/devices/platform/tct_hammer-beeper.0/input\:input1/beep&lt;br /&gt;
(tone generated)&lt;br /&gt;
echo 0 &amp;gt; /sys/devices/platform/tct_hammer-beeper.0/input\:input1/beep&lt;br /&gt;
(tone stops)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Hammer_Button_Driver</id>
		<title>Hammer Button Driver</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Hammer_Button_Driver"/>
				<updated>2011-05-13T13:12:41Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Hammer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== UserSpace Access ==&lt;br /&gt;
&lt;br /&gt;
the carrier board push button can be accessed via the sysfs interface as well as a shell script functionality. the sysfs entry for the push button can be found in the directory mark /sys/devices/platform/gpio-keys.0 . the driver also looks for a shell script in /sbin called pb0.sh. this shell script can be used to start user land applications. here is the provided example shell script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ $1 = &amp;quot;down&amp;quot; ] ; then&lt;br /&gt;
    if [ -x /mnt/flash/scripts/pb0.down ] ; then&lt;br /&gt;
        /mnt/flash/scripts/pb0.down&lt;br /&gt;
    else&lt;br /&gt;
        current=`cat /sys/class/leds/led1/brightness`&lt;br /&gt;
        if [ &amp;quot;${current}&amp;quot; = 0 ] ; then &lt;br /&gt;
            echo 1 &amp;gt; /sys/class/leds/led1/brightness&lt;br /&gt;
        else&lt;br /&gt;
            echo 0 &amp;gt; /sys/class/leds/led1/brightness&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
else&lt;br /&gt;
    if [ -x /mnt/flash/scripts/pb0.up ] ; then&lt;br /&gt;
        /mnt/flash/scripts/pb0.up&lt;br /&gt;
    fi&lt;br /&gt;
fi# &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding New PushButtons ==&lt;br /&gt;
&lt;br /&gt;
the gpio buttons are defined in the linux-2.6.xx/arch/arm/mach-s3c2410/mach-tct_hammer.c file. each button requires that the gpio be defined, a name, and key scan code associated with it. in addition standard platform data and platform device have to be defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static struct gpio_keys_button gpio_keys_buttons[] = {&lt;br /&gt;
    [0] = {&lt;br /&gt;
            .code	    = 0x26,&lt;br /&gt;
            .gpio           = S3C2410_GPG3,&lt;br /&gt;
            .active_low     = 0,&lt;br /&gt;
            .desc           = &amp;quot;PB0&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
static struct gpio_keys_platform_data gpio_keys_data = {&lt;br /&gt;
	    .buttons   = gpio_keys_buttons,&lt;br /&gt;
    	    .nbuttons   = ARRAY_SIZE(gpio_keys_buttons),&lt;br /&gt;
};&lt;br /&gt;
											&lt;br /&gt;
static struct platform_device tct_hammer_buttons = {&lt;br /&gt;
	.name		= &amp;quot;gpio-keys&amp;quot;,&lt;br /&gt;
	.id		= 0,&lt;br /&gt;
	.dev		= {&lt;br /&gt;
		.platform_data = &amp;amp;gpio_keys_data,&lt;br /&gt;
	},&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PushButton Hardware ==&lt;br /&gt;
&lt;br /&gt;
[[Image:pb-example.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hammer]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	<entry>
		<id>http://elinux.org/Android_Events</id>
		<title>Android Events</title>
		<link rel="alternate" type="text/html" href="http://elinux.org/Android_Events"/>
				<updated>2011-05-13T13:11:39Z</updated>
		
		<summary type="html">&lt;p&gt;Jsujjava: Add Category Events&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The only events I know of (as of Jan 2010) with Android content are:&lt;br /&gt;
&lt;br /&gt;
== Google Events ==&lt;br /&gt;
* Google I/O - see the [http://en.wikipedia.org/wiki/Google_I/O Google I/O wikipedia entry]&lt;br /&gt;
** Google I/O for 2011 was in on May 10,11 in San Francisco&lt;br /&gt;
*** See [[Tims GoogleIO 2011 Notes]]&lt;br /&gt;
* [http://www.google.com/events/developerday Google Developer Days]&lt;br /&gt;
** Regional events with Google developers&lt;br /&gt;
&lt;br /&gt;
== Linux events ==&lt;br /&gt;
* http://events.linuxfoundation.org/events/embedded-linux-conference/ Embedded Linux Conference&lt;br /&gt;
** See http://embeddedlinuxconference.com for an overview of multiple years&lt;br /&gt;
*** There were android talks especially at ELC Europe 2009 and 2010&lt;br /&gt;
*** See Matt Porter's talk and Nina Wilner's talk at [[ELC Europe 2009 Presentations]] &lt;br /&gt;
*** See Tim Bird's talk and the Android tutorial at [[ELC Europe 2010 Presentations]]&lt;br /&gt;
&lt;br /&gt;
* Some CELF Japan Jamborees have technical content related to Android&lt;br /&gt;
** The following had Android presentations: [[Japan Technical Jamboree 31]], [[Japan Technical Jamboree 34]]&lt;br /&gt;
&lt;br /&gt;
== Android Builders Summit ==&lt;br /&gt;
This is a new event (in 2011) for Android systems developers. This includes developers who are porting&lt;br /&gt;
Android to new hardware, working on the Android kernel or low-level infrastructure, or otherwise working&lt;br /&gt;
on Android itself (not on Android application development).&lt;br /&gt;
&lt;br /&gt;
* [http://events.linuxfoundation.org/events/android-builders-summit/ ABS home page]&lt;br /&gt;
** [http://events.linuxfoundation.org/events/android-builders-summit/slides Presentation slides]&lt;br /&gt;
&lt;br /&gt;
== Regional events ==&lt;br /&gt;
* [http://www.droidcon.co.uk/ Droidcon London 2010] - October 28,29, 2010, London&lt;br /&gt;
* [http://droidcon.be/ Droidcon Belgium] - next one = January 21, 2011, Brussels&lt;br /&gt;
* [http://www.android-group.jp/abc2011w/ Android Bazaar and Conference - Jan 9, 2011, Tokyo)&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
* [http://www.andevcon.com/ Android Developer's Conference] - March 7-9, 2011&lt;br /&gt;
** This seems to be the first full-blown Android developer event, covering mostly application development, but also some system talks&lt;br /&gt;
&lt;br /&gt;
== Other Conferences ==&lt;br /&gt;
* [http://www.gdconf.com/ Game Developer's conference] is starting to see Android participation&lt;br /&gt;
** See http://android-developers.blogspot.com/2010/01/android-at-2010-game-developers.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;br /&gt;
[[Category:Events]]&lt;/div&gt;</summary>
		<author><name>Jsujjava</name></author>	</entry>

	</feed>