From: Randy Vinson <rvinson@mvista.com>
To: linuxppc-dev@lists.linuxppc.org
Subject: GT64260 IIC Driver Patch
Date: Wed, 30 Apr 2003 11:08:55 -0700 [thread overview]
Message-ID: <3EB01137.1070502@mvista.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 899 bytes --]
Greetings,
I've encountered a situation in the boot wrapper where the current
2_4_devel GT64260 IIC driver needed some changes. The hardware I'm using
(Force PowerPMC260) has a small SEEPROM with only 256 bytes. The
previous driver always expected 2 bytes of offset whereas my device only
needs 1 byte. I've modified the driver to handle either type of device.
Also, the firmware on the board i"m using leaves the IIC hardware in a
funky state, so I added a reset/initilization sequence to correct for
that. I've tested this patch against the MCG HXEB100 as well as the
hardware I'm using and it works on both platforms. I also had a
duplicate definition problem when I included gt64260_tty.c to access the
GT64260's onboard serial ports so I made the gt64260_in_le32 and
gt64260_out_le32 definitions static to resolve it.
I'd like to get this added if it's OK.
Thanks,
Randy Vinson
[-- Attachment #2: gt64260_iic.patch --]
[-- Type: text/plain, Size: 2632 bytes --]
diff -Nru a/arch/ppc/boot/simple/gt64260_iic.c b/arch/ppc/boot/simple/gt64260_iic.c
--- a/arch/ppc/boot/simple/gt64260_iic.c Tue Apr 29 17:04:36 2003
+++ b/arch/ppc/boot/simple/gt64260_iic.c Tue Apr 29 17:04:36 2003
@@ -22,7 +22,7 @@
static u32 gt64260_base = CONFIG_GT64260_ORIG_REG_BASE;
#endif
-inline unsigned
+static inline unsigned
gt64260_in_le32(volatile unsigned *addr)
{
unsigned ret;
@@ -32,7 +32,7 @@
return ret;
}
-inline void
+static inline void
gt64260_out_le32(volatile unsigned *addr, int val)
{
__asm__ __volatile__("stwbrx %1,0,%2; eieio" : "=m" (*addr) :
@@ -97,7 +97,8 @@
}
int
-gt64260_iic_read(uint devaddr, u8 *buf, uint offset, uint count)
+gt64260_iic_read(uint devaddr, u8 *buf, uint offset, uint offset_size,
+ uint count)
{
int i;
int data;
@@ -105,6 +106,16 @@
int status;
/*
+ * send reset
+ */
+ WRITE_RESET(0);
+ WRITE_ADDR(0);
+ WRITE_EX_ADDR(0);
+ WRITE_BAUD_RATE((4 << 3) | 4);
+ if (iic_control(GT64260_I2C_ENABLE_BIT, GT64260_I2C_STATUS_IDLE) < 0)
+ return -1;
+
+ /*
* send start
*/
control = GT64260_I2C_START_BIT|GT64260_I2C_ENABLE_BIT;
@@ -126,8 +137,10 @@
*/
control = GT64260_I2C_ENABLE_BIT;
status = GT64260_I2C_STATUS_WRITE_ACK;
- if (iic_write_byte(offset >> 8, control, status) < 0)
- return -1;
+ if (offset_size > 1) {
+ if (iic_write_byte(offset >> 8, control, status) < 0)
+ return -1;
+ }
if (iic_write_byte(offset, control, status) < 0)
return -1;
diff -Nru a/arch/ppc/boot/simple/misc-hxeb100.c b/arch/ppc/boot/simple/misc-hxeb100.c
--- a/arch/ppc/boot/simple/misc-hxeb100.c Tue Apr 29 17:04:36 2003
+++ b/arch/ppc/boot/simple/misc-hxeb100.c Tue Apr 29 17:04:36 2003
@@ -24,7 +24,8 @@
static int found_cpu1;
extern void hxeb100_cpu1_wait_for_kernel(void);
-extern int gt64260_iic_read(uint devaddr, u8 *buf, uint offset, uint count);
+extern int gt64260_iic_read(uint devaddr, u8 *buf, uint offset,
+ uint offset_size, uint count);
static bd_t board_info;
@@ -35,12 +36,12 @@
int dev = HXEB100_VPD_IIC_DEV;
bd_t *bi = &board_info;
- gt64260_iic_read(dev, (char *)&moto, 0, sizeof(moto));
+ gt64260_iic_read(dev, (char *)&moto, 0, 2, sizeof(moto));
if (moto == 0x4D4F544F) { /* 'MOTO' */
bi->bi_hxeb = HXEB100_BOARD_INFO_HXEB; /* 'HXEB' */
- gt64260_iic_read(dev, (u8 *)&bi->bi_busfreq, 80, 4);
- gt64260_iic_read(dev, bi->bi_enetaddr[0], 94, 6);
- gt64260_iic_read(dev, bi->bi_enetaddr[1], 103, 6);
+ gt64260_iic_read(dev, (u8 *)&bi->bi_busfreq, 80, 2, 4);
+ gt64260_iic_read(dev, bi->bi_enetaddr[0], 94, 2, 6);
+ gt64260_iic_read(dev, bi->bi_enetaddr[1], 103, 2, 6);
}
}
reply other threads:[~2003-04-30 18:08 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3EB01137.1070502@mvista.com \
--to=rvinson@mvista.com \
--cc=linuxppc-dev@lists.linuxppc.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).