KR20140113662A - Hid i2c 데이터 버스를 위한 호스트 측 구현 기법 - Google Patents

Hid i2c 데이터 버스를 위한 호스트 측 구현 기법 Download PDF

Info

Publication number
KR20140113662A
KR20140113662A KR1020147018341A KR20147018341A KR20140113662A KR 20140113662 A KR20140113662 A KR 20140113662A KR 1020147018341 A KR1020147018341 A KR 1020147018341A KR 20147018341 A KR20147018341 A KR 20147018341A KR 20140113662 A KR20140113662 A KR 20140113662A
Authority
KR
South Korea
Prior art keywords
hid
driver
computing system
data
interrupt
Prior art date
Application number
KR1020147018341A
Other languages
English (en)
Other versions
KR102024959B1 (ko
Inventor
퍼도쉬 케이 베사니아
아빈드 알 아이야르
디 다
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140113662A publication Critical patent/KR20140113662A/ko
Application granted granted Critical
Publication of KR102024959B1 publication Critical patent/KR102024959B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

HID I2C 데이터 버스를 위한 호스트 측 구현 기법의 실시예에서, 컴퓨팅 시스템은 컴퓨팅 시스템이 HID 오버 I2C를 통해 주변 장치와 인터페이스하게 하는 장치 소프트웨어(예를 들면, 내장된 장치를 위한 것)를 구현하는 휴먼 인터페이스 장치(HID) 소프트웨어 스택을 포함한다. HID I2C 드라이버는 HID 소프트웨어 스택이 주변 장치와 인터페이스하게 하며, 각각의 주변 장치는 I2C 데이터 버스를 통해 컴퓨팅 시스템에서 데이터를 통신하는 장치에 대한 HID I2C 인터페이스를 포함한다. HID I2C 드라이버는 호환형(compatible)이고, 장치의 I2C 컨트롤러 드라이버 및 GPIO 컨트롤러 드라이버와 인터페이스하고, 여기서, I2C 컨트롤러 드라이버와 GPIO 컨트롤러 드라이버는 각각 서로 다른 I2C 컨트롤러 하드웨어를 지원하기 위한 상이한 구현 구성을 포함할 수 있다.

Description

HID I2C 데이터 버스를 위한 호스트 측 구현 기법{HOST SIDE IMPLEMENTATION FOR HID I2C DATA BUS}
휴대 전화, 미디어 플레이어 및 태블릿 컴퓨터와 같은 소비자 장치는 일반적으로 I2C 2선 인터페이스 버스(inter integrated circuit two wire interface bus)와 같은 심플 주변장치 버스(SPB: simple peripheral bus) 및/또는 직렬 주변장치 인터페이스(SPI: serial peripheral interface) 버스를 통해 내부적으로 연결되는 장치를 위한 플랫폼을 가능하게 한다. 그러나, SPB는 내부, 외부 및/또는 내장 장치(예를 들면, 터치 스크린 디스플레이, 키보드, 마우스 입력 장치, 센서, 가속도계 및 장치의 다른 휴먼 인터페이스 장치(HID: human interface device) 클래스)를 동작시키기 위한 정의된 표준을 갖지 않는다. 이러한 장치의 제작자는 장치를 위한 독점 드라이버(proprietary driver)를 제공하는데 이는 일반적으로 이러한 클래스 장치로 하여금 심플 주변장치 버스를 통해 통신하게 하기 위한 표준 프로토콜이 존재하지 않기 때문이다. 소비자 시스템은 복수의 상이한 제2 제작자 및 하드웨어 벤더에서 제공된 내부적으로 연결된 장치를 포함할 수 있는데, 대응하는 드라이버는 시스템 통합 문제를 일으키고, 시스템 품질 결함 및 안정성 우려를 나타내며, 통일된 시스템 드라이버 업데이트 및 드라이버 검증을 수행하기 위한 기능을 제한할 수 있는 서로 다른 인터페이스를 가진다. 소비자 시스템은 복수의 서로 다른 독점 벤더 드라이버를 포함할 수 있고, 이들 중 많은 것은 일반적으로 시스템 온 칩(SoC) I2C 칩 드라이버를 이용하여 로고(logo) 및 검증을 통과해야 하는 커널 드라이버일 것이다.
본 요약은 HID I2C 데이터 버스를 위한 호스트 측 구현 기법의 실시예에 대한 간략화된 개념을 소개하며, 이러한 개념은 이하의 상세한 설명에 추가로 기술되고, 도면에 도시된다. 본 요약은 청구된 발명의 대상의 핵심 특징을 설명하려는 것이 아니며 청구된 발명의 대상의 범주를 결정하거나 제한하는 데 사용하려는 것도 아니다.
HID I2C 데이터 버스를 위한 호스트 측 구현 기법의 실시예가 설명된다. 실시예에서, 컴퓨팅 시스템은 컴퓨팅 시스템이 HID 오버 I2C(HID over I2C)를 통해 주변 장치와 인터페이스하게 하는 장치 소프트웨어(예를 들면, 내장된 장치를 위한 것)를 구현하는 휴먼 인터페이스 장치(HID) 소프트웨어 스택을 포함한다. HID I2C 드라이버는 HID 소프트웨어 스택이 주변 장치와 인터페이스하게 하며, 주변 장치 각각은 I2C 데이터 버스를 통해 컴퓨팅 시스템에서 데이터를 통신하는 장치에 대한 HID I2C 인터페이스를 포함한다. HID I2C 드라이버는 호환형(compatible)이고, I2C 컨트롤러 드라이버 및 선택적으로 장치의 GPIO 컨트롤러 드라이버와 인터페이스하며, 여기서, I2C 컨트롤러 드라이버와 GPIO 컨트롤러 드라이버는 각각 서로 다른 I2C 컨트롤러 하드웨어를 지원하기 위한 상이한 실시 구성을 포함할 수 있다.
다른 실시예에서, HID I2C 드라이버는 컴퓨팅 시스템의 운영 체제에서의 성능 및 전력 최적화를 위해 사용자 모드 트랜잭션(user mode transaction)으로 커널 모드를 감소시킨다. HID I2C 드라이버는, HID I2C 드라이버가 장치에 대한 선행하는 I2C 기입 트랜잭션 없이 I2C 장치 상의 어드레스에 대한 내재적인 데이터 판독을 수행하는 고속 판독 트랜잭션을 위해 구현될 수 있다. 또한, HID I2C 드라이버는 HID I2C 드라이버가 각각의 트랜잭션에 대한 선행 데이터 기입이 없는 각각의 데이터 판독을 위해 I2C 데이터 버스 상의 동일한 어드레스로부터 내재적으로 데이터를 판독하는 단일 트랜잭션 데이터 판독(single-transaction data reads)을 위해 구현된다.
다른 실시예에서, HID I2C 드라이버는, HID I2C 드라이버가 인터럽트에 의해 개시되는 경우에 장치 데이터를 판독하고 빠르게 인터럽트의 우선순위를 낮추기 위해(de-prioritize) 소프트웨어에 인터럽트 처리를 넘기는 수동 인터럽트 처리(passive interupt processing)를 구현한다. 이는 운영 체제로 하여금 그러한 특정한 장치에 의한 지연 없이 다른 장치로부터의 높은 우선순위의 요청을 계속 처리하게 한다. HID I2C 드라이버는 또한, HID I2C 드라이버가 인터럽트에 의해 개시되는 경우에 장치 데이터를 판독하면 데이터 판독이 장치 인터럽트를 내재적으로 확인응답하는 수동 인터럽트 확인응답(acknowledgement)을 구현한다. 또한, HID I2C 드라이버는 컴퓨팅 시스템이 저전력 상태로 들어가는 경우에 및/또는 장치 펌웨어가 장치 레벨에서의 활동성(activity)을 검출하지 못하는 경우에 저 전력 상태로의 장치의 아이들링(idling)을 시작할 수 있다. 추가로, HID I2C 드라이버는 인터럽트 및 핀 카운트 최적화(pin count optimization)를 위한 장치 웨이크 이벤트(device wake event)를 위해 공유 또는 단일 입력 연결을 사용하도록 구성된다. 또한, HID I2C 드라이버는 I2C 데이터 버스에서 검출된 오류 상태의 스마트 오류 처리 및 오류 수정을 실행한다.
HID I2C 데이터 버스를 위한 호스트 측 구현 기법의 실시예가 다음의 도면을 참조하여 설명된다. 도면에 도시된 동일한 특징 및 컴포넌트를 참조하기 위해 전체에서 동일한 번호가 사용될 수 있다.
도 1은 HID I2C 데이터 버스에 대한 호스트 측 구현 기법의 실시예가 구현될 수 있는 예시적인 시스템을 도시한다.
도 2는 HID I2C 데이터 버스에 대한 호스트 측 구현 기법의 실시예가 구현될 수 있는 예시적인 시스템을 추가로 도시한다.
도 3은 HID I2C 데이터 버스에 대한 호스트 측 구현 기법의 실시예가 구현될 수 있는 예시적인 시스템 온 칩(SoC)을 도시한다.
도 4는 하나 이상의 실시예에 따라 HID I2C 데이터 버스에 대한 호스트 측 구현 기법의 예시적인 방법(들)을 도시한다.
도 5는 HID I2C 데이터 버스에 대한 호스트 측 실시예를 구현할 수 있는 예시적인 장치의 다양한 컴포넌트를 도시한다.
HID I2C 데이터 버스를 위한 호스트 측 구현 기법의 실시예가 설명되며, 이는 표준화된 HID 오버 I2C 사양을 제공한다. HID I2C 드라이버는 HID 오버 I2C 사양을 구현하고 심플 주변장치 버스(SPB) 클래스 확장(class extension)을 컴퓨팅 시스템의 휴먼 인터페이스 장치(HID) 소프트웨어 스택에 연결한다. HID I2C 드라이버는 현재의 HID 스택 및 I2C 스택 사이를 인터페이스하는 클래스 드라이버(class driver)이다. 컴퓨팅 시스템의 호스트 측은 HID I2C 드라이버 및 컴퓨팅 장치의 운영 체제 플랫폼에서 구현되는 HID I2C 드라이버에 상관되는 HID 소프트웨어 스택을 포함한다. HID I2C 드라이버는 운영 체제 SPB 사양과 호환되는 I2C 트랜스포트 및 범용 입출력(GPIO:general purpose input/output) 트랜스포트를 노출한다(드라이버가 각각의 플랫폼 기반으로 개발될 필요가 있는 통상적인 플랫폼과 다름). SPB 표준 없이도 여전히 HID I2C 클래스 드라이버가 개발될 수 있으나, 이는 각각의 I2C 구현기법을 위해 최적화될 필요가 있다.
실시예에서, HID I2C 드라이버는 다양한 벤더로부터의 복수의 서로 다른 I2C 컨트롤러 드라이버에 적용가능하고, 이를 이용하여 구현될 수 있다. 또한, HID I2C 드라이버는 컴퓨팅 시스템과 인터페이스하는 장치에 대한 현재의 HID 애플리케이션과의 소프트웨어 호환성을 유지한다. HID I2C 드라이버는 또한 전력, 성능 및 컴퓨팅 시스템의 운영 체제에서의 효율성을 위한 HID I2C 드라이버의 핀 카운트 최적화(pin count optimizations)를 구현한다.
HID I2C 데이터 버스에 대한 호스트 측 구현 기법의 특징 및 개념이 임의 수의 서로 다른 장치, 시스템, 환경 및/또는 구성으로 구현될 수 있으나, HID I2C 데이터 버스에 대한 호스트 측 실시예는 다음의 예시적인 장치, 시스템 및 방법의 맥락으로 설명된다.
도 1은 HID I2C 데이터 버스에 대한 호스트 측 실시예가 구현될 수 있는 예시적인 시스템(100)을 도시한다. 시스템은 임의의 유형의 컴퓨팅 장치(예를 들면, 컴퓨터, 서버, 통신 장치, 휴대용 장치, 태블릿 컴퓨터, 모바일 전화, 내비게이션 장치, 미디어 플레이어, 게임 장치 등)로 구현될 수 있는 컴퓨팅 시스템(102)을 포함한다. 실시예에서, 컴퓨팅 시스템은 도 3에 도시된 예시적인 SoC 시스템을 참조하여 설명되고, X86-타입 PC 또는 임의의 다른 유형의 컴퓨팅 시스템 디자인으로 구현되는 시스템 온 칩(SoC)으로 구현될 수 있다. 컴퓨팅 시스템(102)을 포함하는 컴퓨팅 장치는 프로세서 및/또는 메모리 장치 시스템과 같은 다양한 컴포넌트로 구현될 수 있으며, 마찬가지로 도 5에 도시된 예시적인 장치를 참조하여 추가로 설명되는 다른 컴포넌트의 조합 및 임의의 개수의 이러한 컴포넌트로 구현될 수 있다. 또한, 컴퓨팅 시스템은 도 3에 도시된 예시적인 SoC 시스템을 참조하여 더 설명되는 추가적인 컴포넌트를 이용하여 구현될 수 있다.
또한, 컴퓨팅 시스템(102)은 I2C 데이터 버스(104) 및 주변 장치(확장가능한 애플리케이션(110)과 함께 HID I2C 인터페이스(108)를 구현하는 주변 장치(106)에 의해 대표됨)를 포함하는 컴퓨터 칩으로 도시된다. HID I2C 인터페이스는 인터페이스 센서, 내장된 장치, 내부 및/또는 외부 장치(예, HID) 및/또는 다른 집적된 컴포넌트가 컴퓨팅 시스템과 인터페이스할 수 있게 한다. 주변 장치(106)의 HID I2C 인터페이스(108) 및 확장가능 애플리케이션(110)은, 예를 들면 펌웨어에 컴퓨터 실행가능 명령어로서 구현될 수 있다. 대안으로 또는 추가로, HID I2C 인터페이스가 하드웨어에 구현될 수 있다. 주변 장치의 확장가능 애플리케이션(110)은 I2C 데이터 버스(104)를 통해 장치의 독점 기능 및/또는 특징을 위한 확장성 데이터가 컴퓨팅 시스템(102)과 인터페이스하게 하도록 구현될 수 있다.
HID I2C 인터페이스(108)는 주변 장치 동작능력 표준(peripheral device operability standards)을 설정한다. 제3의 독립적 하드웨어 벤더는 내부, 외부 또는 내장된 장치를 주변 장치(106)의 HID I2C 인터페이스(108)를 통해 인터페이스할 수 있게 하나, 주변 장치의 확장성 애플리케이션(110)을 통해 독점적 기능 및/또는 특징을 차별화하고 구현한다. 또한, 주변 장치(106)의 HID I2C 인터페이스는, 내부, 외부 및/또는 내장된 장치나 센서가 컴퓨팅 시스템(102)에 대한 HID 호환형 장치라는 것을 나타내도록 (예를 들면, 식별, 노출, 번역, 열거 등을 하도록) 구현될 수 있다. 또한, 주변 장치(106)는 장치 및/또는 센서의 구성(configuration)을 (예를 들면, 데이터 구조, 보고 서술자(report descriptor) 등으로부터) 결정하고, 장치 또는 센서를 구성하기 위해 컴퓨팅 장치(102)로부터 구성 데이터를 수신하고, 또는 컴퓨팅 시스템으로부터 장치 또는 센서로 구성 데이터를 전송할 수 있다.
주변 장치(106)의 예는 센서(예를 들면, 온도계, 가속도계, 자이로스코프, 나침반 또는 임의의 다른 유형의 센서)로서 구현될 수 있는 주변 장치(112)를 포함한다. 주변 장치(112)의 HID I2C 인터페이스(108)는 주변 장치가 I2C 데이터 버스(104)를 통해 컴퓨팅 시스템(102)과 인터페이스하게 한다. 다른 구현예에서, 주변 장치(112)의 HID I2C 인터페이스(108)는 주변 장치가 HID 데이터 포맷으로 I2C 데이터 버스(104)를 통해 컴퓨팅 시스템(102)과 인터페이스하도록 구현될 수 있고, 데이터가 I2C 데이터 버스를 통해 HID 데이터 구조로서 전송된다. 주변 장치(106)의 다른 예는 터치 패널(116)(예, 태블릿 컴퓨터 터치 스크린 디스플레이 장치)이 I2C 데이터 버스를 통해 컴퓨팅 시스템과 통신하게 하는 주변 장치(114)를 포함한다. 다른 예에서, 주변 장치(118)는 키보드 또는 마우스 입력 장치와 같은 컴퓨터 입력 장치(120)가 I2C 데이터 버스를 통해 컴퓨팅 시스템과 인터페이스하게 한다.
또한, 주변 장치(118)는 센서 또는 다른 통합형 장치(예, 내부, 외부 또는 내장된 장치)가 I2C 데이터 버스를 통해 컴퓨팅 시스템(102)과 인터페이스하게 할 수 있다. 예를 들어, 주변 장치(118)는 HID 데이터의 형태로 I2C 인터페이스를 통해 센서 또는 장치 출력을 이어주도록(bridge) 구현될 수 있다. 장치 제조자는 HID를 통해 자신의 기능을 노출하도록 장치(예, 터치 패널, 입력 장치, 내장된 장치, 센서 등)를 구현할 수 있다. 예를 들어, 터치 스크린 컨트롤러는 원(raw) 터치 센서 데이터를 판독하도록 구현될 수 있고, 이는 아날로그 센서일 수 있으며, 컴퓨팅 시스템의 CPU로 통신되는 디지털 신호를 생성할 수 있다. 이러한 유형의 컨트롤러는 HID 프로토콜을 통해 터치 데이터를 CPU에 노출하도록 업데이트될 수 있다.
이러한 예에서, 컴퓨팅 시스템(102)의 소프트웨어 스택은 센서 스택(122), 입력 스택(124) 및 HID 소프트웨어 스택(126)을 포함한다. 또한, 컴퓨팅 시스템은 HID I2C 드라이버(128)를 포함하고, HID I2C 드라이버(128)는 HID I2C 데이터 버스를 위한 호스트 측 구현 기법의 실시예를 구현하고, I2C 컨트롤러 드라이버(130) 및 GPIO 컨트롤러 드라이버(132)와 인터페이스한다. 구현예에서, 주변 장치(106)(가령, 주변 장치(112, 114 및 118))의 예는 각각 HID I2C 인터페이스(108)를 포함하고, I2C 컨트롤러와 상관되는 HID I2C 드라이버가 HID 데이터를 주변 장치 및 HID 소프트웨어 스택 간에 전송하도록 구현된다.
실시예에서, HID I2C 드라이버(128)는 HID 소프트웨어 스택(126)에서 장치 애플리케이션과의 소프트웨어 호환성(compatibility)을 유지한다. HID I2C 드라이버(128)는 HID 소프트웨어 스택(126)이 주변 장치(예, 주변 장치(106))와 인터페이스하게 하는데, 주변 장치 각각은 I2C 데이터 버스(104)를 통해 컴퓨팅 시스템에서 데이터를 전송하는 장치에 대한 HID I2C 인터페이스(108)를 포함한다. 또한, HID I2C 드라이버는 HID 소프트웨어 스택(126)이 장치의 I2C 컨트롤러 드라이버(130) 및 GPIO 컨트롤러 드라이버(132)와 인터페이스하게 한다. HID I2C 드라이버는 I2C 컨트롤러 드라이버(130)와 호환되도록 구현되는데, I2C 컨트롤러 드라이버(130)는 각각 서로 다른 벤더로부터의 컨트롤러 드라이버와 같은 상이한 I2C 컨트롤러 하드웨어를 지원하기 위한 서로 다른 구현 구성을 가질 수 있다. HID I2C 드라이버(128)는 복수의 서로 다른 독점적인, 제3 컨트롤러에 적합하고, 실시예에서, API 입력을 통해 적응되거나 프로그램 가능한 레지스트리를 포함할 수 있다.
실시예에서, HID I2C 드라이버(128)는 커널 모드를 운영 체제의 커널 모드에 이미 존재하는 커널 모드 전력 최적화를 위한 사용자 모드 트랜잭션으로 축소하도록 구현된다. 또한, HID I2C 드라이버는 고속 판독 트랜잭션을 위해 구현되며, HID I2C 드라이버는 I2C 장치에 대한 선행하는 I2C 기입 트랜잭션 없이 I2C 장치 상의 어드레스의 내재적 데이터 판독을 수행한다. 예를 들어, 통상적인 데이터 기입 및 이후의 데이터 버스에서의 데이터 판독 트랜잭션보다는 HID I2C 드라이버가 데이터 버스 성능을 최적화하기 위한 단일 입력 데이터 판독 트랜잭션을 시작할 수 있다. 데이터 판독은 고속 판독 트랜잭션("기입 없는 판독(writeless-read)" 트랜잭션이라고도 함)을 위한 데이터 버스에서의 레지스터 어드레스에 대한 데이터 기입으로부터 내재적(implicit)이다. 레지스터 어드레스가 내재적일 수 있고, 장치 펌웨어가 가장 일반적인 호스트 투 디바이스(host-to-device) 동작으로서 입력 레지스터에 디폴트로 된다. 장치 펌웨어는 내재적 레지스터 어드레스를 사용하는 임의의 트랜잭션 후에 자신의 실행 중인 "레지스터 어드레스 포인터"를 다시 입력 레지스터로 이동시키는 것을 지원할 수 있다.
또한, HID I2C 드라이버(128)는 단일 트랜잭션 데이터 판독을 위해 구현되고, HID I2C 드라이버는 각각의 트랜잭션에 대한 선행하는 데이터 기입 없이도 각각의 데이터 판독을 위해 I2C 데이터 버스 상의 동일한 어드레스로부터 암시적으로 데이터를 판독한다. SPB 다중 전달 시퀀스는 데이터 기입 및 데이터 판독을 단일 트랜잭션으로 조합한다.
실시예에서, HID I2C 드라이버(128)는 또한 HID I2C 드라이버가 인터럽트에 의해 시작되는 경우에 장치 데이터를 판독하고 인터럽트의 우선 순위를 빠르게 낮추기 위해 소프트웨어에 인터럽트 처리를 넘기는 수동 인터럽트 처리를 위해 구현된다. 구현예에서, HID I2C 드라이버는 상부 드라이버 스택(예, HID 소프트웨어 스택(126))에 입력 보고를 전달하는 메커니즘으로서 워크아이템(workitems)을 사용할 수 있다. 이는 인터럽트 서비스 루틴(ISR)으로부터의 작업을 중단하고 낮은 우선순위의 워크아이템 또는 서비스 제공자로 하여금 인터럽트 요청을 완료하게 한다. HID I2C 드라이버(128)는 또한 HID I2C 드라이버가 인터럽트에 의해 시작되는 경우에 장치 데이터를 판독하고 데이터 판독이 암시적으로 장치 인터럽트를 확인응답(acknowledge)하는 수동 인터럽트 확인응답(passive interrupt acknowledgement)을 위해 구성된다. HID I2C 드라이버는 수동 GPIO 인터럽트를 지원하고 심플 주변장치 버스(SPB) 입출력을 사용하여 인터럽트 처리를 확인응답할 수 있다.
실시예에서, HID I2C 드라이버(128)가 전력 최적화를 위해 구현되며, 컴퓨팅 시스템(102)이 저 전력 상태로 들어가는 경우 또는 장치 펌웨어가 장치 레벨에서의 활동성을 검출하지 못하는 경우에 저 전력 상태로의 장치 아이들링을 시작할 수 있다. 또한, HID I2C 드라이버는 핀 카운트 최적화를 위해 구현되고, 인터럽트 및 장치 웨이크 이벤트(device wake event)를 위해 공유 또는 단일 입력 연결을 사용할 수 있다. 예를 들어, HID I2C 드라이버는 공유 및 웨이크 인터럽트 메커니즘으로서 GPIO를 사용할 수 있다. HID I2C 드라이버는 웨이크가능 인터럽트 라인을 지원하고 아이들링 전환과 장치 웨이크 이벤트를 동기화하는 사전 처리 루틴(pre-process routine)을 사용할 수 있다.
실시예에서, HID I2C 드라이버는 또한 I2C 데이터 버스에서 검출되는 오류 상태의 오류 처리 및 오류 수정을 위해 구현된다. HID I2C 드라이버는 최종 사용자 이용가능성이 없는 I2C 데이터 버스에서 오류 상태를 식별하고 자동 수정을 시도한다. 예를 들어, 컴퓨팅 시스템의 호스트 측(예를 들면, HID I2C 드라이버에 의해 인터페이스됨)은 장치(예를 들면, 내장된 장치 또는 주변 장치(106)를 통해 컴퓨팅 시스템으로 인터페이스하는 센서)로부터 예상하지 않은 NAK(negtive acknowledgement)를 수신할 수 있다. HID I2C 드라이버(128)는 데이터를 다시 장치에 자동으로 송신하거나 트랜잭션을 폐기하고 계속하여 다음 트랜잭션을 진행하도록 구성된다. 대안적으로 또는 추가로, 장치가 계속 동작하나(be hung) 부분적으로만 응답할 수 있어, 디폴트 타이머가 경과한 후에, 호스트 측 소프트웨어는 장치로의 데이터 트랜잭션을 취소하고 계속해서 다음 트랜잭션으로 진행한다. 이는 사용자로 하여금 입력의 잠재적 손실(예, 손실된 키 스트로크 또는 마우스 입력 움직임)에도 장치의 사용을 계속하게 할 수 있다. 대안적으로 또는 추가로, 장치가 계속 동작하나 응답하지 않을 수 있고, 이러한 경우에, 오류 상태에 대해 사용자에게 알리지 않고 사용자가 인지할 수 있는 충격(impact) 없이 호스트 소프트웨어가 오류 상태를 식별하고 장치의 기능적 상태를 저장하기 위해 장치의 리셋을 시작한다.
도 2는 추가로, I2C 컨트롤러 드라이버(130) 및 GPIO 컨트롤러 드라이버(132)와 인터페이싱하고 통신하는 HID I2C 드라이버(128)를 포함하는 구현예(200) 에서 도 1에 도시된 예시적인 시스템의 컴포넌트 및 장치의 소프트웨어를 나타낸다. 단지 하나의 I2C 컨트롤러 드라이버 및 하나의 GPIO 컨트롤러 드라이버가 도시되어 있으나, HID I2C 드라이버는 복수의 I2C 컨트롤러 드라이버 및/또는 GPIO 컨트롤러 드라이버와 인터페이스하도록 구현될 수 있다.
HID I2C 드라이버(128)는 또한 HID 클래스(202)와 같은 컴퓨팅 시스템 애플리케이션 및 소프트웨어 스택과 인터페이스 및 통신을 하도록 구현된다. 예를 들어, HID I2C 드라이버(128)는 장치(206)가 장치의 터치 스크린 상에 터치 접촉 입력(208)을 검출하는 경우에 GPIO 컨트롤러 드라이버(132)로부터 및/또는 I2C 컨트롤러 드라이버(130)로부터 인터럽트(204)를 수신할 수 있다. HID I2C 드라이버(128)는 이후에 (예를 들면, 터치 접촉 입력을 처리하는 디지타이저 소프트웨어를 위해) 인터럽트를 시스템 애플리케이션 및 소프트웨어 스택으로 송신할 수 있다.
또한, HID I2C 드라이버(128)는 장치의 전력 상태를 모니터하는 ACPI(advanced configuration and power interface)(210)와 인터페이스하고 통신하도록 구현된다. 또한, ACPI는 GPIO 물리적 장치 객체(PDO)(212), I2C PDO(214) 및 HID PDO(216)와 인터페이스하여 이러한 장치를 먼저 열거하고(enumerate) 장치의 전력 상태를 모니터한다.
도 3은 본 명세서에 기술된 HID I2C 데이터 버스에 대한 호스트 측 구현 기법의 다양한 실시예를 구현할 수 있는 예시적인 시스템 온 칩(SoC)(300)을 나타낸다. SoC(300)는 소비자, 전자, 통신, 네비게이션, 미디어, 컴퓨팅 장치 및/또는 다른 유형의 전자 장치 중 임의의 것 또는 이들의 조합과 같은 고정형 또는 모바일 장치에 구현될 수 있다. SoC(300)는 전자 회로, 마이크로프로세서, 메모리 입출력(I/O) 로직 컨트롤, 통신 인터페이스 및 컴포넌트 및, 컴퓨팅 장치를 구현하기 위한 다른 하드웨어, 펌웨어 및/또는 소프트웨어와 통합될 수 있다.
이러한 예에서, SoC(300)는 마이크로프로세서(302)(예를 들면, 마이크로컨트롤러 또는 디지털 신호 프로세서 중 어느 하나) 및 입출력(I/O) 로직 컨트롤(304)(예를 들면, 전자 회로를 포함시키기 위한 것)과 통합될 수 있다. 또한, SoC는 메모리 컨트롤러(306)를 포함한다(임의의 유형의 비휘발성 메모리 및/또는 다른 적합한 전자 데이터 저장소와 같은 메모리를 포함시키기 위해). 또한, SoC는 메모리에 의해 보관되고 마이크로프로세서에 의해 실행되는 운영 체제(308)와 같은 다양한 펌웨어 및/또는 소프트웨어를 포함할 수 있다. 도 1 및 2를 참조하여 설명된 바와 같이, 운영 체제는 HID I2C 데이터 버스에 대한 호스트측 구현 기법의 실시예를 구현하는 도 HID I2C 드라이버(310)를 포함한다.
SoC(300)는, 예를 들면 컴퓨팅 장치에 설치되는 경우에, 장치, 센서, 내장된 장치 또는 다른 통합된 컴포넌트와 인터페이스하기 위한 장치 인터페이스(312)를 포함한다. 또한, SoC(300)는 컴포넌트 간의 데이터 통신을 위한 SoC의 다양한 컴포넌트를 연결하는 통합된 데이터 버스(314)를 포함한다. 이러한 예에서, SoC 내의 데이터 버스는 I2C 데이터 버스, SPB, 또는 SPI로서 구현될 수 있고, 또한 서로 다른 버스 구조 및/또는 버스 아키텍처 중 어느 하나 또는 이들의 조합으로서 구현될 수 있다.
또한, SoC(300)는 I2C 드라이버(316) 및/또는 도 1에 도시된 주변 장치(예, 주변 장치(106))의 다양한 예를 참조하여 설명한 것과 같은 하나 이상의 주변 장치(320)와 인터페이스하는 GPIO 드라이버(318)를 포함한다. I2C 드라이버(316) 및 GPIO 드라이버(318)와 연관된 드라이버 소프트웨어가 운영 체제(308) 내에 구현된다. 주변 장치(320)는 I2C 인터페이스(322) 및/또는 GPIO 인터페이스(324)를 구현한다. I2C 인터페이스 및 GPIO 인터페이스의 예가 대응하는 기능 및 특징과 함께, 도 1 및 2에 각각 도시된 컴포넌트를 참조하여 설명된다. 대안적으로 또는 추가로, 주변 장치의 컴포넌트는 하드웨어, 펌웨어, 고정된 로직 회로 또는 입출력 로직 컨트롤(304) 및/또는 이들의 임의의 조합(SoC 또는 주변 장치의 다른 프로세싱 및 컨트롤 회로와 함께 구현됨)으로 구현될 수 있다.
예시적인 방법(400)이 HID I2C 데이터 버스를 위한 호스트 측 구현 기법의 하나 이상의 실시예에 따라 도 4를 참조하여 설명된다. 일반적으로, 본 명세서에 설명된 서비스, 기능, 방법, 절차, 컴포넌트 및 모듈 중 임의의 것이 소프트웨어, 펌웨어, 하드웨어(예, 고정형 로직 회로), 수동 프로세싱 또는 이들의 조합을 사용하여 구현될 수 있다. 소프트웨어 구현은 컴퓨터 프로세서에 의해 실행되는 경우에 특정된 태스크를 수행하는 프로그램 코드를 나타낸다. 예시적인 방법은 컴퓨터 실행가능 명령어에 대한 일반적인 맥락에서 설명될 수 있으나, 이는 소프트웨어, 애플리케이션, 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조, 절차, 모듈, 함수 등을 포함할 수 있다. 프로그램 코드는 컴퓨터 프로세서에 대해 로컬 및/또는 원격 모두일 수 있는 하나 이상의 컴퓨터 판독가능 저장 매체 장치에 저장될 수 있다. 또한, 방법은 복수의 컴퓨터 장치에 의한 분산형 컴퓨팅 환경으로 구현될 수 있다. 또한, 본 명세서에 설명된 특징은 플랫폼 독립적이고, 다양한 프로세서를 가진 다양한 컴퓨팅 플랫폼에 구현될 수 있다.
도 4는 HID I2C 데이터 버스에 대한 호스트 측 구현 기법의 예시적인 방법(들)(400)을 도시하고, HID I2C 드라이버를 참조하여 설명된다. 방법적 블록이 기술된 순서는 제한적인 것이 아니며, 설명된 방법적 블록 중 임의의 수의 블록이 방법 또는 대안적 방법을 구현하기 위해 임의의 순서로 조합될 수 있다.
블록(402)에서, 장치 소프트웨어는 컴퓨팅 시스템의 휴먼 인터페이스 장치(HID) 소프트웨어 스택으로 구현된다. 예를 들어, 컴퓨팅 시스템(102)(도 1)의 호스트 측의 HID 소프트웨어 스택(126)은 HID I2C 드라이버(128)를 통해 컴퓨팅 시스템과 그리고 I2C 데이터 버스(104)를 통해 대응하는 주변 장치(106)와 인터페이스하는 내부, 외부 및/또는 내장된 장치 또는 센서 등을 위한 장치 소프트웨어를 구현한다.
블록(404)에서, HID 소프트웨어 스택은 장치에 대한 HID I2C 인터페이스를 각각 포함하는 주변 장치와 인터페이스한다. 예를 들어, 컴퓨팅 시스템(102)의 호스트 측의 HID I2C 드라이버(128)는 HID 소프트웨어 스택(126)을 주변 장치(예, 주변 장치(106))와 인터페이스하게 하며, 주변 장치 각각은 장치(예를 들면, 내장된 장치 또는 다른 통합된 컴포넌트)에 대한 HID I2C 인터페이스(108)를 포함한다. 장치는 내부, 외부 또는 I2C 데이터 버스(104)를 통해 컴퓨팅 시스템(102)의 데이터 통신을 위해 구현된 내장된 장치 및/또는 센서일 수 있다.
블록(406)에서, HID 소프트웨어 스택은 장치의 I2C 컨트롤러 드라이버 및 범용 입출력(GPIO) 컨트롤러 드라이버와 인터페이스한다. 예를 들어, 또한 컴퓨팅 시스템(102)의 호스트 측의 HID I2C 드라이버(128)는 HID 소프트웨어 스택(126)이 장치의 I2C 컨트롤러 드라이버(130) 및 GPIO 컨트롤러 드라이버(132)와 인터페이스하게 한다.
블록(408)에서, I2C 장치 상의 어드레스의 내재적 데이터 판독이 고속 판독 트랜잭션(fast-read transaction)을 위해 장치에 대한 선행하는 I2C 기입 트랜잭션 없이 수행된다. 예를 들어, 컴퓨팅 시스템(102)의 호스트 측의 HID I2C 드라이버(128)는 장치에 대한 선행하는 I2C 기입 트랜잭션 없이 I2C 장치 상의 어드레스의 내재적 데이터 판독으로서 고속 판독 트랜잭션을 수행한다. 블록(410)에서, 단일 트랜잭션 데이터 판독을 위해 선행하는 데이터 기입 없이 데이터가 내재적 데이터 판독을 위한 I2C 데이터 버스 상의 동일한 어드레스로부터 판독된다. 예를 들어, 컴퓨팅 시스템(102)의 HID I2C 드라이버(128)는 데이터가 선행하는 데이터 기입 없는 내재적 데이터 판독을 위해 I2C 데이터 버스(104) 상의 동일한 어드레스로부터 판독되는 단일 트랜잭션 데이터 판독을 시작한다.
블록(412)에서, 장치 데이터는 인터럽트에 의해 시작되는 경우에 판독되고 인터럽트 처리는 인터럽트의 우선 순위를 낮추기 위해 소프트웨어에 전가된다. 예를 들어, 컴퓨팅 시스템(102)의 호스트 측의 HID I2C 드라이버(128)는 인터럽트에 의해 개시되는 경우에 장치 데이터를 판독하고 인터럽트 처리는 그 인터럽트의 우선순위를 빠르게 낮추기 위해 소프트웨어에 전가된다. 블록(414)에서, 장치 인터럽트는 인터럽트에 의해 개시되는 경우에 장치 데이터의 판독에 기초하여 내재적으로 확인응답된다. 예를 들어, 컴퓨팅 시스템(102)의 호스트 측의 HID I2C 드라이버(128)는 인터럽트에 의해 개시되는 경우에 장치 데이터의 판독에 기초하여 장치 인터럽트를 내재적으로 확인응답한다.
블록(416)에서, 장치는 컴퓨팅 시스템이 저 전력 상태에 들어가는 경우 및 장치 펌웨어가 장치 레벨에서 활동성을 검출하지 못하는 경우에, 저 전력 상태로 아이들링된다. 예를 들어, 컴퓨팅 시스템(102)이 저 전력 상태로 들어가는 경우 또는 장치 펌웨어가 장치 레벨에서 활동성을 검출하지 못하는 경우에, 컴퓨팅 시스템(102)의 호스트 측의 HID I2C 드라이버(128)는 장치(예를 들면, 컴퓨팅 시스템(102)에 대해 인터페이스하는 내장된 장치 또는 센서)가 저 전력 상태로 아이들링되게 한다.
블록(418)에서, 입력 연결은 인터럽트 및 장치 웨이크 이벤트를 위해 공유된다. 예를 들어, 컴퓨팅 시스템(102)의 호스트 측의 HID 체커보드 I2C는 인터럽트 및 장치 웨이크 이벤트를 위해 GPIO 입력 연결을 공유한다. 블록(420)에서, I2C 데이터 버스 상에서 검출된 오류 상태가 수정된다. 예를 들어, 컴퓨팅 시스템(102)의 HID I2C 드라이버(128)는 I2C 데이터 버스(104)에서 검출되는 HID I2C 프로토콜 레벨에서 오류 상태를 수정한다. 전술한 바와 같이, 기술된 방법적 블록 중 임의의 블록이 방법 또는 대안적 방법을 구현하기 위한 임의의 순서로 조합될 수 있다. 따라서, 블록(420)에서 I2C 데이터 버스에 대한 오류 상태의 검출 및 수정은 전술된 다른 방법적 블록(412 내지 418) 중 임의의 블록의 전에, 중에 또는 후에 발생할 수 있다.
도 5는 전술한 도 1 내지 4를 참조하여 설명된 장치 중 임의의 것에 의해 구현될 수 있는 예시적인 장치(500)의 다양한 컴포넌트, 또는 장치에 의해 구현되는 서비스 및 소프트웨어를 도시한다. 실시예에서, 장치는 고정형 또는 모바일 장치 중 어느 하나 또는 이들의 조합으로서, 소비자, 컴퓨터, 서버, 휴대용, 사용자, 통신, 전화, 내비게이션, 텔레비전, 응용기기, 게임, 미디어 플레이백(media playback), 카메라 및/또는 전자 장치 중 임의의 형태로 구현될 수 있다. 장치는 장치를 동작시키는 사용자(즉, 사람) 및/또는 엔티티와 연관되어 장치가 사용자, 소프트웨어, 펌웨어, 하드웨어 및/또는 장치의 조합을 포함하는 로직 장치를 기술하도록 할 수 있다.
장치(500)는 장치 데이터(504)의 유선 및/또는 무선 통신을 가능하게 하는 통신 장치(502)를 포함한다. 장치 데이터 또는 다른 장치 콘텐트는 장치의 환경 설정(configuration settings), 장치에 저장된 미디어 콘텐트 및/또는 장치의 사용자와 연관된 정보를 포함할 수 있다. 장치에 저장된 미디어 콘텐트는 임의의 유형의 오디오, 비디오 및/또는 이미지 데이터를 포함할 수 있다. 장치는 임의의 유형의 데이터, 미디어 콘텐트 및/또는 입력이 이를 통해 수신될 수 있는 하나 이상의 데이터 입력(506)(예를 들면, 사용자 선택가능 입력 및, 임의의 콘텐트 및/또는 데이터 소스로부터 수신된 임의의 다른 유형의 오디오, 비디오 및/또는 이미지 데이터)을 포함한다.
또한, 장치(500)는 직렬, 병렬, 네트워크 또는 무선 인터페이스 중 하나 이상과 같은 통신 인터페이스(508)를 포함한다. 통신 인터페이스는 장치와 통신 네트워크(이에 의해 다른 전자, 컴퓨팅 및 통신 장치가 장치와 데이터를 통신함) 사이의 연결 및/또는 통신 링크를 제공한다.
장치(500)는 하나 이상의 프로세서(510)(예를 들면, 마이크로프로세서, 컨트롤러 등 중 어느 하나) 또는 프로세서와 메모리 시스템(예, SoC에 구현됨)을 포함하고, 이들은 장치의 동작을 컨트롤하도록 컴퓨터 실행가능 명령어를 처리한다. 대안적으로 또는 추가로, 장치가 단계(512)에서 일반적으로 식별되는 프로세싱 및 컨트롤 회로와 연결되어 구현되는 소프트웨어, 하드웨어, 펌웨어 또는 고정식 로직 회로 중 임의의 하나 또는 이들의 조합으로 구현될 수 있다. 도시되지 않았으나, 장치는 시스템 버스 또는 장치 내의 다양한 컴포넌트를 연결하는 데이터 전송 시스템을 포함할 수 있다. 시스템 버스는 상이한 버스 구조(예를 들면, 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, USB 및/또는 다양한 버스 아키텍처 중 임의의 것을 사용하는 프로세서 버스 또는 로컬 버스) 중 임의의 하나 또는 이들의 조합을 포함할 수 있다.
또한, 장치(500)는 랜덤 액세스 메모리(RAM), 비 휘발성 메모리(예, 리드 온리 메모리(ROM), 플래시 메모리 등) 및 디스크 저장 장치와 같은, 데이터 저장을 가능하게 하는 하나 이상의 메모리 장치(514)(예를 들면, 컴퓨터 판독가능 저장 매체)를 포함한다. 디스크 저장 장치는 임의의 유형의 자기 또는 광학 저장 장치(예, 하드 디스크 드라이브, 기록가능 및/또는 재 기입가능 디스크 등)로서 구현될 수 있다. 컴퓨터 판독가능 저장 매체는 컴퓨팅 장치에 의해 액세스되는 임의의 이용가능 매체(들)일 수 있다.
메모리 장치(514)는 장치 데이터(504), 다른 유형의 정보 및/또는 데이터, 및 장치 애플리케이션(514)을 저장하는 데이터 저장 메커니즘을 제공한다. 예를 들어, 운영 체제(518)는 프로세서에서 실행되고 메모리 장치를 포함하는 소프트웨어 애플리케이션으로서 관리될 수 있다. 이러한 예에서, HID I2C 드라이버(520)는 본 명세서에 설명된 HID I2C 데이터 버스를 위한 호스트 측 실시예를 구현하도록 운영 체제 내에서 구현된다. 장치 애플리케이션은 또한 장치 관리자(예를 들면, 임의의 형태의 컨트롤 애플리케이션), 소프트웨어 애플리케이션, 신호 처리 및 컨트롤 모듈, 특정한 장치에 고유한 코드, 특정한 장치를 위한 하드웨어 추상화 레이어 등을 포함한다. 이러한 예에서, 또한, 장치는 내장된 장치(524)와 인터페이스하는 하나 이상의 주변 장치(522)를 포함한다.
또한, 장치(500)는 오디오 시스템(526)을 위한 오디오 데이터를 생성하고 또는 디스플레이 시스템(528)을 위한 디스플레이 데이터를 생성하는 오디오 및/또는 비디오 프로세싱 시스템(526)을 포함한다. 오디오 시스템 및/또는 디스플레이 시스템은 오디오, 비디오, 디스플레이 및/또는 이미지 데이터를 처리, 디스플레이 및/또는 렌더링하는 임의의 장치를 포함할 수 있다. 구현예에서, 오디오 시스템 및/또는 디스플레이 시스템은 장치에 대한 외부 컴포넌트이거나 예시적인 장치의 컴포넌트로 통합된다.
HID I2C 데이터 버스를 위한 호스트 측 실시예가 특징 및/또는 방법에 특정된 언어로 기술되었으나, 첨부된 청구범위의 발명의 대상이 설명된 특정 특징이나 방법에 제한될 필요는 없다. 오히려, 특정한 특징 및 방법은 HID I2C 데이터 버스에 대한 호스트 측 구현 기법의 예시적인 실시예로서 개시된다.

Claims (10)

  1. 컴퓨팅 시스템으로서,
    장치 소프트웨어를 구현하도록 구성되는 휴먼 인터페이스 장치(HID) 소프트웨어 스택과,
    상기 HID 소프트웨어 스택이 하나 이상의 주변 장치와 인터페이스하게 하도록 구성되는 HID I2C 드라이버 - 상기 주변 장치 각각은 I2C 데이터 버스를 통해 상기 컴퓨팅 시스템에서 데이터를 통신하도록 구성되는 장치에 대한 HID I2C 인터페이스를 포함함 -
    를 포함하는 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 HID I2C 드라이버는 상기 장치의 하나 이상의 I2C 컨트롤러 드라이버와 호환가능하도록 구성되고,
    상기 하나 이상의 I2C 컨트롤러 드라이버는 각각 상이한 I2C 컨트롤러 하드웨어를 지원하도록 서로 다른 구현 구성을 가지는
    컴퓨팅 시스템.
  3. 제1항에 있어서,
    상기 HID I2C 드라이버는 커널 모드 전력 최적화를 위해 커널 모드를 사용자 모드 트랜잭션으로 축소시키도록 구성되는
    컴퓨팅 시스템.
  4. 제1항에 있어서,
    상기 HID I2C 드라이버는 상기 HID I2C 드라이버가 I2C 장치에 대한 선행하는 I2C 기입 트랜잭션(I2C write transaction) 없이 상기 I2C 장치 상의 어드레스의 내재적 데이터 판독을 수행하는 고속 판독 트랜잭션을 수행하도록 구성되는
    컴퓨팅 시스템.
  5. 제1항에 있어서,
    상기 HID I2C 드라이버는 상기 HID I2C 드라이버가 각각의 트랜잭션에 대한 선행하는 데이터 기입 없이 각각의 데이터 판독을 위해 상기 I2C 데이터 버스 상의 동일한 어드레스로부터 내재적으로 데이터를 판독하는 단일 트랜잭션 데이터 판독을 수행하도록 구성되는
    컴퓨팅 시스템.
  6. 제1항에 있어서,
    상기 HID I2C 드라이버는, 상기 HID I2C 드라이버가 인터럽트에 의해 개시되는 경우에, 장치 데이터를 판독하고 인터럽트의 우선순위를 빠르게 낮추기 위해 소프트웨어에 상기 인터럽트의 처리를 전가하는 수동 인터럽트 처리(passive interrupt processing)를 수행하도록 구성되는
    컴퓨팅 시스템.
  7. 제1항에 있어서,
    상기 HID I2C 드라이버는 상기 HID I2C 드라이버가 인터럽트에 의해 개시되는 경우에, 데이터를 판독하고 상기 데이터 판독은 상기 장치 인터럽트를 내재적으로 확인응답(acknowledges)하는 수동 인터럽트 확인응답을 수행하도록 구성되는
    컴퓨팅 시스템.
  8. 제1항에 있어서,
    상기 HID I2C 드라이버는 상기 컴퓨팅 시스템이 저 전력 상태로 들어가는 경우 및 장치 펌웨어가 상기 장치 레벨에서 활동성을 검출하지 못하는 경우 중 하나의 경우에 장치를 저 전력 상태로 아이들링하는(idle) 것을 시작하도록 구성되는
    컴퓨팅 시스템.
  9. 제1항에 있어서,
    상기 HID I2C 드라이버는 인터럽트 및 장치 웨이크 이벤트를 위해 공유 또는 단일 입력 연결을 사용하도록 구성되는
    컴퓨팅 시스템.
  10. 제1항에 있어서,
    상기 HID I2C 드라이버는 상기 I2C 데이터 버스에서 검출되는 오류 상태의 오류 처리 및 오류 수정을 하도록 구성되는
    컴퓨팅 시스템.
KR1020147018341A 2012-01-07 2013-01-07 Hid i2c 데이터 버스를 위한 호스트 측 구현 기법 KR102024959B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/345,690 2012-01-07
US13/345,690 US8725916B2 (en) 2012-01-07 2012-01-07 Host side implementation for HID I2C data bus
PCT/US2013/020501 WO2013103951A1 (en) 2012-01-07 2013-01-07 Host side implementation for hid i2c data bus

Publications (2)

Publication Number Publication Date
KR20140113662A true KR20140113662A (ko) 2014-09-24
KR102024959B1 KR102024959B1 (ko) 2019-09-24

Family

ID=48744753

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147018341A KR102024959B1 (ko) 2012-01-07 2013-01-07 Hid i2c 데이터 버스를 위한 호스트 측 구현 기법

Country Status (6)

Country Link
US (1) US8725916B2 (ko)
EP (1) EP2801034B1 (ko)
JP (1) JP6210516B2 (ko)
KR (1) KR102024959B1 (ko)
CN (1) CN104040519B (ko)
WO (1) WO2013103951A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8521942B2 (en) 2011-03-21 2013-08-27 Microsoft Corporation HID over simple peripheral buses
US9921981B2 (en) * 2013-08-24 2018-03-20 Qualcomm Incorporated Method to minimize the number of IRQ lines from peripherals to one wire
US9892087B2 (en) 2013-09-12 2018-02-13 The Boeing Company Mobile computing device and method of transmitting data therefrom
KR102169033B1 (ko) * 2013-12-31 2020-10-22 엘지디스플레이 주식회사 전력 최적화 시스템과 이의 구동 방법
US9417801B2 (en) * 2014-03-27 2016-08-16 Intel Corporation Virtual general-purpose I/O controller
US11016796B2 (en) * 2019-04-10 2021-05-25 Red Hat, Inc. Hypervisor protection of a controllable device
US10909048B1 (en) 2019-07-30 2021-02-02 Microsoft Technology Licensing, Llc Declarative transactional communications with a peripheral device via a low-power bus
CN110502928B (zh) * 2019-08-28 2022-03-29 上海金卓科技有限公司 双操作系统、工作状态控制方法、装置及存储介质
US20220075749A1 (en) * 2020-09-04 2022-03-10 Nemedio Inc. Systems and methods for dynamic configuration of external devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892933A (en) * 1997-03-31 1999-04-06 Compaq Computer Corp. Digital bus
US6311228B1 (en) * 1997-08-06 2001-10-30 Microsoft Corporation Method and architecture for simplified communications with HID devices
US20050114571A1 (en) * 2003-11-26 2005-05-26 Shaw Ronald D. System and method for communication of keyboard and touchpad inputs as HID packets embedded on a SMBus
KR20070020998A (ko) * 2005-08-17 2007-02-22 삼성전자주식회사 I2c통신을 통해 튜너를 공용화하는 영상수신장치 및튜너공용화방법

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021446A (en) * 1997-07-11 2000-02-01 Sun Microsystems, Inc. Network device driver performing initial packet processing within high priority hardware interrupt service routine and then finishing processing within low priority software interrupt service routine
US6263392B1 (en) 1999-01-04 2001-07-17 Mccauley Jack J. Method and apparatus for interfacing multiple peripheral devices to a host computer
US6363437B1 (en) * 1999-01-07 2002-03-26 Telefonaktiebolaget Lm Ericsson (Publ) Plug and play I2C slave
US10216259B2 (en) 2000-02-14 2019-02-26 Pierre Bonnat Method and system for processing signals that control a device using human breath
US6678830B1 (en) * 1999-07-02 2004-01-13 Hewlett-Packard Development Company, L.P. Method and apparatus for an ACPI compliant keyboard sleep key
US6899627B2 (en) 1999-10-06 2005-05-31 Igt USB device protocol for a gaming machine
US6813650B1 (en) * 1999-10-26 2004-11-02 International Business Machines Corporation Multimode non-standard universal serial bus computer input device
US6725320B1 (en) 2001-02-08 2004-04-20 International Business Machines Corporation I2C bus switching devices interspersed between I2C devices
US7209470B2 (en) 2001-03-16 2007-04-24 Intel Corporation Method and apparatus for encapsulating universal serial bus messaging over link layer communication protocol
JP5055492B2 (ja) * 2001-05-07 2012-10-24 サイエンスパーク株式会社 電子計算機のインターフェースドライバプログラム及びその記録媒体
CN100541471C (zh) * 2002-02-15 2009-09-16 科学园株式会社 使用基于网络的输入装置的输入特征的个人鉴别方法、以及网络系统
US6792506B2 (en) * 2002-03-29 2004-09-14 Emc Corporation Memory architecture for a high throughput storage processor
US7313678B2 (en) 2003-03-05 2007-12-25 Broadcom Corporation Installation procedure for wireless human interface device
US20040203363A1 (en) * 2002-04-19 2004-10-14 Carlton Stephen J. Portable communication apparatus and method for match-making with unique user ID
US7032039B2 (en) 2002-10-30 2006-04-18 Atmel Corporation Method for identification of SPI compatible serial memory devices
US7240223B2 (en) * 2003-05-07 2007-07-03 Apple Inc. Method and apparatus for dynamic power management in a processor system
US20050182978A1 (en) * 2004-02-17 2005-08-18 Anderson Jason M. Always ready computing device
US7660611B1 (en) 2004-03-25 2010-02-09 Cypress Semiconductor Corporation Wireless human interface device packet compression system and method for reducing power consumption
US8401588B2 (en) 2004-10-28 2013-03-19 Broadcom Corporation Dual mode human interface device
KR100668976B1 (ko) 2005-01-13 2007-01-16 삼성전자주식회사 버스확장장치
JP2007124517A (ja) * 2005-10-31 2007-05-17 Toshiba Corp 無線通信装置
WO2007104335A1 (en) * 2006-03-16 2007-09-20 Freescale Semiconductor, Inc. A wordline driver for a non-volatile memory device, a non-volatile memory device and method
US7800439B2 (en) * 2006-10-27 2010-09-21 Ut-Battelle, Llc High speed preamplifier circuit, detection electronics, and radiation detection systems therefrom
US20090054069A1 (en) 2007-08-24 2009-02-26 Zeetoo, Inc. Platform Independent Communication Protocol
US7664894B2 (en) 2007-09-14 2010-02-16 Broadcom Corporation Wireless human interface device (HID) coordination
US7873764B2 (en) 2008-08-15 2011-01-18 Video Products, Inc. Switch with enhanced human interface device support
US20100180067A1 (en) 2009-01-14 2010-07-15 International Business Machines Corporation System for emulating and expanding a spi configuration rom for io enclosure
US8180933B2 (en) 2009-01-21 2012-05-15 Microsoft Corporation Dynamic call handling from multiple attached devices wherein devices advertize its capabililes before facilitating call through appropriate device
US20100262929A1 (en) 2009-04-08 2010-10-14 Panasonic Automotive Systems Company Of America, Division Of Panasonic Corporation Of North America Method and system for dynamic configuration of remote control inputs
US8521942B2 (en) 2011-03-21 2013-08-27 Microsoft Corporation HID over simple peripheral buses

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892933A (en) * 1997-03-31 1999-04-06 Compaq Computer Corp. Digital bus
US6311228B1 (en) * 1997-08-06 2001-10-30 Microsoft Corporation Method and architecture for simplified communications with HID devices
US20050114571A1 (en) * 2003-11-26 2005-05-26 Shaw Ronald D. System and method for communication of keyboard and touchpad inputs as HID packets embedded on a SMBus
KR20070020998A (ko) * 2005-08-17 2007-02-22 삼성전자주식회사 I2c통신을 통해 튜너를 공용화하는 영상수신장치 및튜너공용화방법

Also Published As

Publication number Publication date
JP2015507806A (ja) 2015-03-12
EP2801034A1 (en) 2014-11-12
EP2801034A4 (en) 2015-06-10
CN104040519B (zh) 2017-06-20
JP6210516B2 (ja) 2017-10-11
KR102024959B1 (ko) 2019-09-24
US20130179609A1 (en) 2013-07-11
WO2013103951A1 (en) 2013-07-11
EP2801034B1 (en) 2020-09-23
US8725916B2 (en) 2014-05-13
CN104040519A (zh) 2014-09-10

Similar Documents

Publication Publication Date Title
KR102024959B1 (ko) Hid i2c 데이터 버스를 위한 호스트 측 구현 기법
US8521942B2 (en) HID over simple peripheral buses
TWI447650B (zh) 中斷分佈方案
TWI614608B (zh) 用於觸控感測器資訊的通訊之設備、系統及方法
US20060047877A1 (en) Message based interrupt table
JPH07311716A (ja) コンピュータシステム、コンピュータシステムに周辺装置をインタフェースさせるための並列ポート回路、およびその動作方法
CN104704478A (zh) 输入/输出错误遏制事件后的恢复
TWI742422B (zh) 聚集帶內中斷
WO2019105188A1 (zh) 触感信号的处理方法、系统、装置及电子设备
KR20180066073A (ko) 컴퓨팅 디바이스에서 운영 시스템 독립적 에러 제어를 제공하는 시스템 및 방법
WO2020206879A1 (zh) Pcie宽度自动适配方法、装置及电子设备和存储介质
US8769252B2 (en) Computer system and method for resetting the same
KR20180091364A (ko) 디버그 호스트로서 동작하는 cpu를 포함하는 시스템 온 칩 및 이의 동작 방법
CN110175139B (zh) 一种usb设备的通用调试方法及usb设备
US20160314086A1 (en) Secure digital host controller virtualization
US10642665B2 (en) Multimodal interface
US8875138B2 (en) Computer system and control method thereof
US20090265580A1 (en) Error detection method for a computer system, and electronic device
Bhesania et al. Host side implementation for HID I 2 C data bus
US20050228917A1 (en) Novel structure and method for interrupt detection and processing
CN117149679A (zh) Dma通信装置和dma通信电路
US20060129758A1 (en) Zero channel raid architecture
TW201820118A (zh) 輸出介面資訊之回報方法及其相關電腦系統

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant